t671 | 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 :
- // récupération des variables issues du formulaire
- $date = $_POST['date'];
- $heure = $_POST['heure'];
- $titre = $_POST['titre'];
- $message = $_POST['texte'];
- $monfichier = $_POST['monfichier'];
- $frdate = $date; // conservation date saisie
- ...........
- //----------Convertion "date" au format texte-fr---------------
- list($year, $month, $day) = explode("-", $dateMySQL);
- $months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" );
- $datefr = " $day ".$months[$month-1]." $year ";
- // ----------------test upload fichier------------------
- if (isset($monfichier))
- {
- $dossier = './dossier_upload/';
- $fichier = basename($_FILES['monfichier']['name']);
- $taille_maxi = 2000000;
- $taille = filesize($_FILES['monfichier']['tmp_name']);
- $extensions = array('.gif', '.jpg', '.jpeg', '.doc', '.png', '.txt', '.TXT', '.PNG', '.GIF', '.JPG', '.JPEG', '.DOC');
- $extension = strrchr($_FILES['monfichier']['name'], '.');
- //--------------------upload fichier----------------------
- if(move_uploaded_file($_FILES['monfichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
- {
- // si la variable monfichier existe, j'enregistre tout dans les deux tables
- $sql = "INSERT INTO manifestations(heure, jour, date, frdate, datefr, titre, texte) VALUES('$heure', '$jour_sem', '$dateMySQL', '$frdate', '$datefr', '$titre', '$chaine')";
- mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
- $id=mysql_insert_id();
- $req_fich = "INSERT INTO upload(id_liaison, lien_fichier, fichier, extension) VALUES('$id', '$dossier$fichier', '$fichier', '$extension')";
- mysql_query($req_fich) or die('Erreur SQL !'.$req_fich.mysql_error());
- }
- }
- else
- {
- // si la variable monfichier n'existe pas, j'enregistre uniquement l'id=id_liaison dans la table upload
- $sql = "INSERT INTO manifestations(heure, jour, date, frdate, datefr, titre, texte) VALUES('$heure', '$jour_sem', '$dateMySQL', '$frdate', '$datefr', '$titre', '$chaine')";
- mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
- $id=mysql_insert_id();
- $req_fich = "INSERT INTO upload(id_liaison) VALUES('$id')";
- mysql_query($req_fich) or die('Erreur SQL !'.$req_fich.mysql_error());
- }
|
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 ? 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
|