8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis bloquée, je souhaiterai avoir de l'aide pour uploader des fichiers, pdf, word, png, jpeg,jpg ...

Niveau phpMyAdmin :
J'ai 3 variables où j'ai déclaré que ce sont des LONGBLOB.

Niveau HTML, ce n'est qu'un extrait, j'ai 60 variables :


<form method="post" action="./enregistrement.php" enctype="multipart/form-data">
format pdf <span class="marge0_8">
<input type="file" name="pdf" multiple/>

Image <span class="marge8_5">
<input type="file" name="image" multiple/></span>
</form>			
		


Niveau PHP, mon code fonctionne sauf pour insérer les fichiers, j'avoue ne pas avoir un bon niveau en PHP, voici un extrait :


require_once 'cnxBDD.php';
$type=isset($_POST['type']) ? $_POST['type']:'';
$sql="INSERT INTO table1  (type,...) VALUES(:type,...)";

$a_datas = array(':type'=>$type,...);

try {
	$req=$bdd->prepare($sql);
	$req->execute($a_datas);


	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
} catch(Exception $e) {
	//en cas d'erreur dans la requete ::
	echo "<pre><br>Erreur dans la requete <br>" . $e -> getMessage() . "<br>";
	echo "datas:<br>";
	print_r($a_datas);
	echo "</pre>";
}


Ça fait plusieurs jours que j'y suis, je ne sais pas quoi mettre et où dans le code, je ne sais pas si je dois créer une nouvelle page php pour l'insertion des fichiers, mais je souhaiterai garder qu'une table au niveau de PhpMyAdmin.

Je vous remercie d'avance pour l'aide,

Tiph
salut,

as tu essayé l'exemple de la doc pour insérer un contenue binaire ?
=> http://php.net/manual/fr/pdo.lobs.php

sais tu récupérer un fichier à partir d'un formulaire (pour le cas où voici la doc officielle : http://php.net/manual/fr/features.file-upload.post-method.php )

60 "variables" : c'est 60 champs input ?
Attention aux tailles max admissible pour un fichier (upload_max_filesize, 2Mo par défaut) et pour le formulaire complet (post_max_size, 8Mo par défaut) ainsi que le nombre max de fichiers par requête (max_file_uploads, 20 par défaut en réalité 4 fichiers avec la taille max admissible,, sinon 20 fichiers d'environ 409ko).

@+
Bonjour,

Merci pour l'aide, j'ai fini par séparé les champs, et l'enregistrement des fichiers mais je n'arrive toujours pas à insérer dans la base de données, ni dans les dossiers, serait-il possible de m'aider ?
En sachant que ID_a est une clé étrangère


require_once 'cnxBDD.php';
 
$image = basename($_FILES['image']['name']);
$editer = basename($_FILES['editer_fichier']['name']);
$pdf = basename($_FILES['pdf']['name']);
 
 
$dossier1 = '/image/';
$dossier2 = '/editer/';
$dossier3 = '/pdf/';
 
$extensions1 = array('.png', '.gif', '.jpg', '.jpeg');
$extension1 = strrchr($_FILES['image']['name'], '.');
$extensions2 = array('.png', '.gif', '.jpg', '.jpeg', '.pdf', '.docx');
$extension2 = strrchr($_FILES['editer_fichier']['name'], '.');
$extensions3 = array('.png', '.gif', '.jpg', '.jpeg', '.pdf', '.docx');
$extension3 = strrchr($_FILES['pdf']['name'], '.');
 
if (!in_array($extension1, $extensions1))
 
{
	$erreur1 = 'Vous devez uploader un fichier de type png, gif, jpg ou jpeg...';
}
if (!in_array($extension2, $extensions2))
 
{
	$erreur2 = 'Vous devez uploader un fichier de type png, gif, jpg, docx, pdf, ou jpeg...';
}
if (!in_array($extension3, $extensions3))
 
{
	$erreur3 = 'Vous devez uploader un fichier de type png, gif, jpg, docx, pdf ou jpeg...';
}
 
 
if (!isset($erreur1))
{
 
	$fichier1 = strtr($fichier1, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
	$fichier1 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier1);
	if (move_uploaded_file($_FILES['image']['tmp_name'], $dossier1 . $fichier1))
 
	{
		if (!isset($erreur2))
		{
 
			$fichier2 = strtr($fichier2, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
			$fichier2 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier2);
			if (move_uploaded_file($_FILES['editer_fichier']['tmp_name'], $dossier2 . $fichier2))
 
			{
				if (!isset($erreur3))
				{
 
					$fichier3 = strtr($fichier3, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
					$fichier3 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier3);
					if (move_uploaded_file($_FILES['pdf']['tmp_name'], $dossier3 . $fichier3))
 
					{
							$sql = 'INSERT INTO `fichiers` (`ID_a`,`image`,`editer_fichier`,`pdf`) VALUES (:ID_a,:image,:editer_fichier,:pdf)';
						//insère le nom du fichier dans ta table
						try {
							$req = $bdd -> prepare($sql);
							$req -> execute(array(':ID_a' => $ID_a, ':image' => $fichier1, ':editer_fichier' => $fichier2, ':pdf' => $fichier3));
							$req -> closeCursor();
						} catch(Exception $e) {
							echo '<pre><br>Erreur dans la requete <br/>' . $e -> getMessage() . '<br/>';
						}
					}
			} else {
 
				echo 'Echec de l\'upload !';
			}
		} else {
			echo $erreur1;
			echo $erreur2;
			echo $erreur3;
 
		}
	}
}


Merci d'avance,

@+
salut,

Tu n'as pas besoin de déplacer les fichier puisses que tu les met en base.
enfin c'est ce que je comprends quand tu utilises longblob.

si ce n'est que le nom des fichiers qui t’intéresse utilise un champs de type texte c'est plus simple.

Commence par faire seulement l'upload des fichiers ensuite tu pourras voir pour l'insertion en base.

as tu réussis à déplacer les fichiers ?

@+
Bonjour,

J'ai réussi à enregistrer dans la base et sur le serveur maintenant mon problème est que j'ai plusieurs fichiers mais le code n'enregistre qu'un seul nom du fichier dans phpmyadmin.
Voici mon code en sachant que :

editer_fichier, pdf et image sont des VARCHAR
et sur html j'ai

<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
Editer
<input type="file" name="editer_fichier" multiple/><br />
     								
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
 format pdf 
	
<input type="file" name="pdf" multiple/>

<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
Image 
<input type="file" name="image" multiple/>



<?php
 
require_once 'cnxBDD.php';
 
$dossier_editer = 'editer/';
$editer_fichier = basename($_FILES['editer_fichier']['name']);
$taille_editer_fichier= 10000000;
$taille_editer = filesize($_FILES['editer_fichier']['tmp_name']);
$extensions_editer = array('.docx', '.pdf');
$extension_editer = strrchr($_FILES['editer_fichier']['name'], '.');
 
 
 
$dossier_pdf = 'pdf/';
$pdf = basename($_FILES['pdf']['name']);
$taille_pdf_fichier= 10000000;
$taille_pdf = filesize($_FILES['pdf']['tmp_name']);
$extensions_pdf = array('.docx', '.pdf');
$extension_pdf= strrchr($_FILES['pdf']['name'], '.');
 
$dossier_img = 'image/';
$image= basename($_FILES['image']['name']);
$taille_image_fichier= 10000000;
$taille_img = filesize($_FILES['image']['tmp_name']);
$extensions_img= array('.png', '.gif', '.jpg', '.jpeg','.JPG','.PNG');
$extension_img= strrchr($_FILES['image']['name'], '.');
 
 
if(!in_array($extension_editer, $extensions_editer))
{
     $erreur = 'Vous devez changer le type de fichier, je ne prends que les fichiers docx, et pdf pour EDITER     ';
}
if($taille_editer>$taille_editer_fichier)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur))
{
    $editer_fichier = strtr($editer_fichier,
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $editer_fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $editer_fichier);
     if(move_uploaded_file($_FILES['editer_fichier']['tmp_name'], $dossier_editer. $editer_fichier))
     {
          echo 'Upload effectué avec succès le fichier EDITER !';
     }
     else
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
 
 
 
if(!in_array($extension_pdf, $extensions_pdf))
{
     $erreur = 'Vous devez uploader un fichier de type pdf ou docx...        ';
}
if($taille_pdf>$taille_pdf_fichier)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur))
{
      
     $pdf= strtr($pdf,
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $pdf= preg_replace('/([^.a-z0-9]+)/i', '-', $pdf);
     if(move_uploaded_file($_FILES['pdf']['tmp_name'], $dossier_pdf . $pdf))
     {
          echo 'Upload effectué avec succès le fichier transcription PDF !';
     }
     else
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
 
 
 
if(!in_array($extension_img, $extensions_img))
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg IMAGE         ';
}
if($taille_img>$taille_image_fichier)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur))
{
    $image= strtr($image,
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $image= preg_replace('/([^.a-z0-9]+)/i', '-', $image);
     if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier_img. $image))
     {
          echo 'Upload effectué avec succès IMAGE !        ';
     }
     else
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
 
 
if (isset($_POST['submit'])) {
 
            $sql = 'INSERT INTO `fichiers` (`image`,`editer_fichier`,`pdf`) VALUES (:image,:editer_fichier,:pdf)';
                         
                        try {
                            $req = $bdd -> prepare($sql);
                            $req -> execute(array(':image' => $image, ':editer_fichier' => $editer_fichier, ':pdf' => $pdf));
                         
                            $req -> closeCursor();
                        } catch(Exception $e) {
                            echo '<pre><br>Erreur dans la requete <br/>' . $e -> getMessage() . '<br/>';
                        }
                     
                }else {
 
                    echo 'Echec de l\'upload !';
             
                echo $erreur1;
                echo $erreur2;
                echo $erreur3;
                }
?>
    



D'avance merci