Problème d'envoi de fichiers par formulaire
                    
        
     
             
                    tteze
    
        
    
                    Messages postés
            
                
     
             
            3
        
            
                                    Statut
            Membre
                    
                -
                                     
Utilisateur anonyme -
        Utilisateur anonyme -
        Bonjour j'ai un problème avec mon formulaire lorsque j'envoi des vidéos il me dit que toutes les autres variables ne sont pas défini alors que sans cela fonctionne. J'avais déjà regardé d'autres topics qui parlaient de ce sujet et qu'il fallait modifier le php.ini ce que j'ai fait mais ce cela n'a pas répondu au problème :/ De plus mon ajout de photos multiple de marche pas correctement non plus >< serait-il possible d'avoir un petit coup de pouce :)
Voici le formulaire:
Voici mon code qui traite le formulaire :
puis les requetes sql que j'utilisent :
                
            
                
    
    
    
        Voici le formulaire:
<?php
$nom='Ajout';
require('head.php');
require('header.php');
require('requetes.php');
echo'
<section id="ajout">
<form method="POST" action="upload.php" enctype="multipart/form-data">	
	<li>Nom: <input type="text" name="nom" required/>*</li>
	<li>Prénom: <input type="text" name="prenom" required/>*</li>
	<li>Sexe: <input type="radio" name="sexe" value="homme" checked/>Homme <input type="radio" name="sexe" value="femme"/>Femme</li>
	<li>Date de naissance: <input type="date" name="naissance" required/>*</li>
	<li>Adresse: <input type="text" name="adresse" required/>*</li>
	<li>Photo de profil: <input type="hidden" name="MAX_FILE_SIZE" value="10000000"/>
    <input type="file" name="profil" required/>*</li>
	<li>Video (Interview ou Biographie): <input type="hidden" name="MAX_FILE_SIZE" value="300000000"/>
    <input type="file" name="video"/></li>
	<li>Photos : <input type="hidden" name="MAX_FILE_SIZE" value="10000000"/>
    <input type="file" name="photos[]" multiple="true"/></li>
	<li>Story: <br><textarea name="story" id="story" rows="20" cols="100" required></textarea>*</li>
	<li>Votre e-mail : <input type="email" name="email"/></li>
	<li><br>Les champs succèdés de * doivent-être obligatoirement remplis.</li>
	<li><input type="submit" name="envoyer" value="Soumettre le portrait"></li>
	
	
</form> 
</section>
';
require('footer.php');
require('fin.php');
?>
Voici mon code qui traite le formulaire :
<?php
require('requetes.php');
$nom=addslashes($_POST['nom']);
$prenom=addslashes($_POST['prenom']);
$sexe=addslashes($_POST['sexe']);
$naissance=addslashes($_POST['naissance']);
$adresse=addslashes($_POST['adresse']);
$story=addslashes($_POST['story']);
if(isset($_POST['email']) && !empty($_POST['email'])){
	$email=addslashes($_POST['email']);
}else{
	$email=NULL;
}
/*********************************upload photo de profil****************************************/
$dossier_photo = 'upload/photos/';
$taille_maxi = 1000000;
$taille = filesize($_FILES['profil']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['profil']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $id_profil=id_photo_free();
	 $profil = ''.$id_profil.$extension;
     if(move_uploaded_file($_FILES['profil']['tmp_name'], $dossier_photo . $profil)){
			//réussite de l'upload
		 
     }else{
          $profil=NULL;
     }
}else{
     $profil=NULL;
}
/*********************************upload photos****************************************/
if(isset($_FILES['photos'])){
	$id_photo=id_photo_free()+1;
	for ($i = 0; $i < count($_FILES['photos']['name']); $i++){
		$taille_maxi = 1000000;
		$taille = filesize($_FILES['photos']['tmp_name'][$i]);
		$extensions = array('.png', '.gif', '.jpg', '.jpeg');
		$extension = strrchr($_FILES['photos']['name'][$i], '.'); 
		//Début des vérifications de sécurité...
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
		}
		if($taille>$taille_maxi)
		{
			$erreur = 'Le fichier est trop gros...';
		}
		if(!isset($erreur) || empty($erreur)) //S'il n'y a pas d'erreur, on upload
		{
			//On formate le nom du fichier ici...
			$photos[$i] = ''.$id_photo.$extension;
			if(move_uploaded_file($_FILES['photos']['tmp_name'][$i], $dossier_photo . $photos[$i])){
					//réussite de l'upload
				
			}else{
				$photo[$i]=NULL;
				$id_photo--;
			}
		}else{
			$photo[$i]=NULL;
			$id_photo--;
		}
		$id_photo++;
	}
}else{
	$photos=NULL;
}
/*********************************upload video****************************************/
if(isset($_FILES['video'])){
$dossier_video = 'upload/videos/';
$taille_maxi = 500000000;
$taille = filesize($_FILES['video']['tmp_name']);
$extensions = array('.mp4', '.avi');
$extension = strrchr($_FILES['video']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)){
		$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi){
	 $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)){
	$id_video=id_video_free();
     //On formate le nom du fichier ici...
     $video = ''.$id_video.$extension;
     if(move_uploaded_file($_FILES['video']['tmp_name'], $dossier_video . $video)){
		  //réussite de l'upload
     }
     else{
          $video=NULL;
     }
}else{
     $video=NULL;
}
}else{
	$video=NULL;
}
/**************************ajout à la base de donnée**************************************/
$id_portrait=id_portrait_free();
ajout_portrait($nom,$prenom,$sexe,$naissance,$adresse,$story,$email);
ajout_photo($id_portrait,$dossier_photo.$profil,$photos);
if(!empty($video)){
	ajout_video($id_portrait,$dossier_video.$video);
}
include('fin.php');
?>
puis les requetes sql que j'utilisent :
function id_portrait_free(){
	global $mysqli;
	$resultat = mysqli_query($mysqli, 'SELECT MAX(id) FROM portrait') ;
	$donnees = mysqli_fetch_assoc($resultat);
	$id=$donnees['MAX(id)']+1;
	mysqli_free_result($resultat);
	return $id;
}
function id_photo_free(){
	global $mysqli;
	$resultat = mysqli_query($mysqli, 'SELECT MAX(id) FROM photos') ;
	$donnees = mysqli_fetch_assoc($resultat);
	$id=$donnees['MAX(id)']+1;
	mysqli_free_result($resultat);
	return $id;
}
function id_video_free(){
	global $mysqli;
	$resultat = mysqli_query($mysqli, 'SELECT MAX(id) FROM video');
	$donnees = mysqli_fetch_assoc($resultat);
	$id=$donnees['MAX(id)']+1;
	mysqli_free_result($resultat);
	return $id;
}
function ajout_portrait($nom,$prenom,$sexe,$naissance,$adresse,$story,$email){
	global $mysqli;
	$id_quartier=1;
	$position_x=1;
	$position_y=1;
	$query='INSERT INTO portrait (id,nom,prenom,sexe,date_de_naissance,adresse,id_quartier,story,position_x,position_y,mail_envoyeur,valide)
			VALUES("NULL","'.$nom.'","'.$prenom.'","'.$sexe.'","'.$naissance.'","'.$adresse.'","'.$id_quartier.'","'.$story.'","'.$position_x.'","'.$position_y.'","'.$email.'","0")';
	if(mysqli_query($mysqli,$query)) ;
}
function ajout_video($id_portrait,$adresse){
	global $mysqli;
	$query='INSERT INTO videos (id,id_portrait,adresse) VALUES("NULL","'.$id_portrait.'","'.$adresse.'")';
	if(mysqli_query($mysqli,$query));
}
function ajout_photo($id_portrait,$profil,$photos){
	global $mysqli;
	$query='INSERT INTO photos (id,id_portrait,adresse,type) VALUES("NULL","'.$id_portrait.'","'.$profil.'","profil")';
	$resultat=mysqli_query($mysqli,$query) ;
	if(!empty($photos)){
		foreach($photos as $adresse){
			if(!empty($adresse)){
				$query='INSERT INTO videos (id,id_portrait,adresse,type) VALUES("NULL","'.$id_portrait.'","'.$adresse.'","normal")';
				$resultat=mysqli_query($mysqli,$query);
			}
		}
	}
}            
            
        A voir également:         
- Problème d'envoi de fichiers par formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
1 réponse
                        
                    Bonjour
Tu crées plusieurs champs photos[] dans ton formulaire.
Tu récupères donc en PHP photos[0], PHP photos[1], PHP photos[2], etc.
L'élément tmp_name de photos[1] s'appelle photos[1]['name'] mais toi dans ton script, tu l'appelles photos['name'][1], idem pour les autres éléments de chaque photo. idem pour les vidéos.
Tu n'as simplement pas mis les indices dans le bon ordre. Tu t'en serais rendu compte tout seul avec un simple print_r($_FILES).
    
                Tu crées plusieurs champs photos[] dans ton formulaire.
Tu récupères donc en PHP photos[0], PHP photos[1], PHP photos[2], etc.
L'élément tmp_name de photos[1] s'appelle photos[1]['name'] mais toi dans ton script, tu l'appelles photos['name'][1], idem pour les autres éléments de chaque photo. idem pour les vidéos.
Tu n'as simplement pas mis les indices dans le bon ordre. Tu t'en serais rendu compte tout seul avec un simple print_r($_FILES).
 
    
    
    
    
Et ce grand 'echo' dans ton formulaire ne rime à rien, il faut fermer la balise php, écrire simplement le html et rouvrir plus loin la balise php quand tu en as besoin à nouveau.
Et tes SELECT MAX(id) sont une autre horreur, avec risque de création de doublon : pourquoi n'utilises-tu pas les champs auto-incrémentés ?