Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3038 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  pb enregistrement dans 2 tables base mysql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb enregistrement dans 2 tables base mysql

n°1935031
t671
Posté le 24-10-2009 à 09:23:34  profilanswer
 

Bonjour,
 
Je saisi un formulaire (date, heure, titre, texte) et éventuellement, je veux y uploader un fichier. Le tout dans deux tables ("manifestations" pour le texte, et "upload" pour le fichier). Voici déjà mon script qui met la base à jour (en sachant que "monfichier" correspond au fichier uploadé (optionnel). Le reste, ce sont les champs texte) :
 

Code :
  1. // récupération des variables issues du formulaire
  2. $date = $_POST['date'];
  3. $heure = $_POST['heure'];
  4. $titre = $_POST['titre'];
  5. $message = $_POST['texte'];
  6. $monfichier = $_POST['monfichier'];
  7. $frdate = $date; // conservation date saisie  
  8. ...........
  9. //----------Convertion "date" au format texte-fr---------------
  10. list($year, $month, $day) = explode("-", $dateMySQL);
  11. $months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" );
  12. $datefr = " $day ".$months[$month-1]." $year ";
  13. // ----------------test upload fichier------------------
  14. if (isset($monfichier))
  15. {
  16. $dossier = './dossier_upload/';
  17. $fichier = basename($_FILES['monfichier']['name']);
  18. $taille_maxi = 2000000;
  19. $taille = filesize($_FILES['monfichier']['tmp_name']);
  20. $extensions = array('.gif', '.jpg', '.jpeg', '.doc', '.png', '.txt', '.TXT', '.PNG', '.GIF', '.JPG', '.JPEG', '.DOC');
  21. $extension = strrchr($_FILES['monfichier']['name'], '.');
  22. //--------------------upload fichier----------------------
  23. if(move_uploaded_file($_FILES['monfichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
  24. {
  25. // si la variable monfichier existe, j'enregistre tout dans les deux tables
  26. $sql = "INSERT INTO manifestations(heure, jour, date, frdate, datefr, titre, texte) VALUES('$heure', '$jour_sem', '$dateMySQL', '$frdate', '$datefr', '$titre', '$chaine')";
  27. mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
  28. $id=mysql_insert_id();
  29. $req_fich = "INSERT INTO upload(id_liaison, lien_fichier, fichier, extension) VALUES('$id', '$dossier$fichier', '$fichier', '$extension')";
  30. mysql_query($req_fich) or die('Erreur SQL !'.$req_fich.mysql_error());
  31. }
  32. }
  33. else
  34. {
  35. // si la variable monfichier n'existe pas, j'enregistre uniquement l'id=id_liaison dans la table upload
  36. $sql = "INSERT INTO manifestations(heure, jour, date, frdate, datefr, titre, texte) VALUES('$heure', '$jour_sem', '$dateMySQL', '$frdate', '$datefr', '$titre', '$chaine')";
  37. mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
  38. $id=mysql_insert_id();
  39. $req_fich = "INSERT INTO upload(id_liaison) VALUES('$id')";
  40. mysql_query($req_fich) or die('Erreur SQL !'.$req_fich.mysql_error());
  41. }


 
Ainsi, si je saisi un texte + titre sans fichier à uploader : l'enregistrement texte est ok, et l'id dans id_liaison ok également (le reste en NUL), ce qui est normal et correct.
Si je saisi un texte + titre avec fichier à uploader : l'enregistrement texte est ok, mais pour le fichier uploadé, c'est comme si il n'y en avait pas (l'id dans id_liaison ok, le reste en NUL). Normalement, toutes les variables devraient être enregistrées (id_liaison, lien_fichier, fichier, extension).
En fait, j'éxécute toujours le dernier "else" !!!!! Alors, est-ce que mon "if (isset($monfichier))" est bon ? Où est mon erreur ?  :cry:  
 
J'ai enlevé le "if (isset($monfichier))", et le dernier "else", et là, le fichier est bien uploadé. Ce qui prouve que la variable $monfichier existe bien !!!!
 
Pouvez-vous m'aider à débuguer car je ne sais plus quoi faire .....   :??:  
 
Merci

mood
Publicité
Posté le 24-10-2009 à 09:23:34  profilanswer
 

n°1935328
badaboumsp​lash
Posté le 26-10-2009 à 09:13:11  profilanswer
 

Bonjour,
 
Je pense que tu devrais revoir tes bases.
 
Affecter des variables POST à des variables temporaires ne sert à rien...
En plus, tu les affectes à ces variables sans tester leurs existences...

n°1935374
d@kn1ko
Posté le 26-10-2009 à 11:34:33  profilanswer
 

le $_POST["monfichier"] ca ne marche pas il me semble. c est direct $_FILES
 
=> $_POST["monfichier"] n'existe pas pour moi donc ton test isset est tj faux
 
 
pour tester si tu as sélectionné un fichier ou non :
 
if(empty($_FILES["monfichier"][name])){
}
 
ya surement plus simple
 
fait un print_r($monfichier) et print_r($_FILES["monfichier"]) pour comparer le résultat


Message édité par d@kn1ko le 26-10-2009 à 11:43:56
n°1935682
stealth35
Posté le 27-10-2009 à 14:02:01  profilanswer
 

pas tip top tout ca,
 
deja pour la date, pour se compliquer a faire une liste a "la main" du nom des mois,  strftime est la pour toi et date_parse si tu l'importe d'un format particulier (ca marche dans pas mal de cas),  pour ton fichier (les info, extention, MIME)  t'as fileinfo
 
apres pourquoidans ta base tu rajoute une ligne meme si tu n'as pas de fichier ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  pb enregistrement dans 2 tables base mysql

 

Sujets relatifs
[SQL] Design table "réseau social"Jointure entre 3 tables ! Help please
impossible de se connecter au serveur mysql à distance sous windows[php/mysql] lancer un programme php en cas d'updates de MySql [resolu]
[MySQL] encodage de caractère log windowsaffichage bases join table mysql
Prob PHP / MySQLupdate mysql par lignes d'un tableau
Conseil / aide pour connection mysql et ASP 
Plus de sujets relatifs à : pb enregistrement dans 2 tables base mysql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR