tteze
Messages postés2Date d'inscriptionjeudi 16 janvier 2014StatutMembreDernière intervention10 mars 2015
-
10 mars 2015 à 15:28
Utilisateur anonyme -
10 mars 2015 à 16:05
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 :)
<?phprequire('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 :
functionid_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;}functionid_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;}functionid_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;}functionajout_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));}functionajout_video($id_portrait,$adresse){global$mysqli;$query='INSERT INTO videos (id,id_portrait,adresse) VALUES("NULL","'.$id_portrait.'","'.$adresse.'")';if(mysqli_query($mysqli,$query));}functionajout_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($photosas$adresse){if(!empty($adresse)){$query='INSERT INTO videos (id,id_portrait,adresse,type) VALUES("NULL","'.$id_portrait.'","'.$adresse.'","normal")';$resultat=mysqli_query($mysqli,$query);}}}}
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).
remarques complémentaires : tes "addslashes" sont une grosse erreur, il faut utiliser mysqli_real_escape_string pour échapper correctement les caractères spéciaux dans les requêtes.
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 ?
10 mars 2015 à 16:05
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 ?