Formulaire: données

Formulaire: données - PHP - Programmation

Marsh Posté le 09-04-2007 à 15:03:10    

Bonjour,
 
J'ai un formulaire pour mettre en ligne des petites annonces mais lorsque je valide, les données n'y sont pas. La table est toujours vide. Je ne vois pas pourquoi.
 
Formulaire:
 

Code :
  1. <div class="framebloc">
  2.  <table width="90%" align="center">
  3.   <tr>
  4.    <td colspan="2" align="center"><h3>Ajouter votre annonce</h3></td>
  5.   </tr>
  6.     <form method="POST" action="valider.php" enctype="multipart/form-data">
  7.      <input name="nbrann" type="hidden">
  8.      <input name="date" type="hidden" value="<? echo"$today2";?>">
  9.      <tr>
  10.       <td width="125"><p class="para"><strong>Prénom et nom</strong></td>
  11.       <td><input type="text" name="nom" size="60" value=""></p></td>
  12.      </tr>
  13.      <tr>
  14.       <td><p class="para"><strong>Courriel</strong></td>
  15.       <td><input type="text" name="email" size="60"></p></td>
  16.      </tr>
  17.      <tr>
  18.       <td><p class="para"><strong>Téléphone</strong></td>
  19.       <td><input type="text" name="tel" size="20" value=""></p></td>
  20.      </tr>
  21.      <tr>
  22.       <td><p class="para"><strong>Contenu de<br />votre annonce</strong></P></td>
  23.       <td><p><textarea rows="7" name="annonce" cols="60"></textarea></p></td>
  24.      </tr>
  25.      <tr>
  26.       <td><P class="para"><strong>Photo &agrave; inclure</strong></td>
  27.        <td><input name="MAX_FILE_SIZE" type="hidden" value="2600000">
  28.       <input type="file" name="photo"></p></td>
  29.      </tr>
  30.      <tr>
  31.       <td><p class="para"><strong>Mot de passe</strong></td>
  32.        <td><input name="mdp" type="password"  size="9" value=""> (de 8 à 10 caractères)</p></td>
  33.      </tr>
  34.     <tr height="40">
  35.      <td colspan="2" align="center">
  36.       <input type="submit" value="Envoyer"> &nbsp &nbsp <input type="reset" value="Annuler">
  37.      </td>
  38.     </tr>
  39.    </form>
  40.  </table>
  41.  </div> <!-- Fin Frame -->


 
Validation:
 

Code :
  1. <html>
  2. <head>
  3. <title>Résultat des annonces</title>
  4. <link rel="stylesheet" href="cssfile/css_annonce.css">
  5. <body>
  6. <h2>Affichage des annonces</h2>
  7. <?php
  8. include ("fonction/connection_data.php" );
  9. include ("fonction/mysql_func.php" );
  10. $pseudo=trim($pseudo);
  11. $login=trim($login);
  12. $pwd=trim($mdp);
  13. $table="annonce";
  14. connect();
  15. $repertoire="image_annonce/";
  16. $destination=$repertoire.$photo_name;
  17. if (is_uploaded_file($photo))
  18. {
  19. move_uploaded_file($photo,$destination);
  20. echo"<b>Ainsi que votre photo: $photo_name .</b>";
  21. }
  22. else
  23. {echo" <b>Vous n'avez pas envoyer de PHOTO<br> ou bien un problème est survenu lors
  24. du transfert de celle-ci, dans ce cas, veuillez recommencer!</b><br><br>";
  25. }
  26. $annonce=addslashes($annonce);
  27. echo $nom;
  28. echo $email;
  29. $sql="insert into $table (nbrann,date,nom,email,telephone,annonce,photo,mdp) values ('$nbrann','$date','$nom','$email',
  30. '$tel','$annonce','$photo_name','$mdp')";
  31. mysql_query($sql);
  32. mysql_close();
  33. ?>
  34. </body>
  35. </html>

Reply

Marsh Posté le 09-04-2007 à 15:03:10   

Reply

Marsh Posté le 09-04-2007 à 15:08:49    

A toi de débugger tout seul un peu

 

Déja n'hésite pas a afficher toutes les variables du script avec des echo puis un exit; juste après pour vérifier leur contenu

 

Ensuite mets mysql_query($sql) or die('Erreur MySQL :'.mysql_error());

 

Faut apprendre a débugger tout seul [:fading]

 

Par contre ton script d'upload est a revoir, de ce que j'en ai vu on peut faire passer un fichier PHP tranquille :/

 

Autre chose : tu la sors d'ou ta variable $photo ? parce que si j'ai bien compris, tu la récupères de l'input du même nom de type file

 

Or dans ce cas ca résout une question que je me suis posée : Pourquoi n'utilise t-il pas le tableau $_FILES['photo'] ?

 

Parce que ca m'étonnerait bien que $photo aie une valeur, c'est $_FILES['photo'] qu'il faut utiliser et c'est ce tableau qui contient :

 

$_FILES['photo']['name'] : Nom
$_FILES['photo']['tmp_name'] : Chemin temporaire du fichier

 

Et j'en passe. Y'a beaucoup a revoir dans ton script


Message édité par WiiDS le 09-04-2007 à 15:13:07
Reply

Marsh Posté le 09-04-2007 à 15:42:22    

Merci!

Reply

Marsh Posté le 09-04-2007 à 17:16:35    

et ton code html avec des tableaux spa beau :o


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 09-04-2007 à 17:42:09    

mais c'est efficace et ça prend moins de temps.

Reply

Marsh Posté le 09-04-2007 à 17:43:42    

:s


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 09-04-2007 à 20:44:23    

J'ai essayé ce code et le résultat me donne ceci:
 
Nom : attak.jpg
Dest.: image_annonce/attak.jpg
Chemin :
Type :
Size : 0
Le fichier est introuvable
 
 
$ph_name=$_FILES[photo][name];
$ph_chemin=$_FILES[photo][tmp_name];
$ph_type=$_FILES[photo][type];
$ph_size=$_FILES[photo][size];
$repertoire="image_annonce/";
$destination=$repertoire.$ph_name;
 
echo "Nom : ".$ph_name."<br>";
echo "Dest.: ".$destination."<br>";
echo "Chemin : ".$ph_chemin."<br>";
echo "Type : ".$ph_type."<br>";
echo "Size : ".$ph_size."<br>";

Reply

Marsh Posté le 09-04-2007 à 20:50:56    

J'ai essayé cette cette ligne: <pre><?  print_r($_FILES); ?></pre>
et j'obtiens ce résultat:
 
Array
(
    [photo] => Array
        (
            [name] => attak.jpg
            [type] =>  
            [tmp_name] =>  
            [error] => 2
            [size] => 0
        )
 
)

Reply

Marsh Posté le 09-04-2007 à 21:04:42    

[error] => 2
<=>
UPLOAD_ERR_FORM_SIZE
<=>
Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.
 
Cette page pourrais t'être grandement utile !
http://fr.php.net/manual/fr/features.file-upload.php

Reply

Marsh Posté le 10-04-2007 à 01:22:29    

D'ailleurs a l'avenir dans tes formulaires d'upload il faudra vérifier si la valeur error est supérieur a 0. Si c'est le cas, pas la peine de continuer, pour une raison X ou Y l'envoi a échoué.

 

Ca donnerait ca:

 

if($_FILES['photo']['error'] > 0) $erreur='Il y\'a eu une erreur pendant le transfert';

 

puis après toutes les vérifications possibles et inimaginables dans le cas d'upload de fichier :

 

if(isset($erreur)) echo $erreur;

 

S'il n'y a eu aucun problème de vérification (parce que error > 0 c'est pas la seule) alors on continue le script :

 

else {
// SUITE DE TON SCRIPT
}

 

Mon avis c'est surtout qu'il te faut un tuto complet pour ce genre d'opérations que voici :

 

http://www.siteduzero.com/tuto-3-1 [...] laire.html


Message édité par WiiDS le 10-04-2007 à 01:30:09
Reply

Marsh Posté le 10-04-2007 à 01:22:29   

Reply

Marsh Posté le 10-04-2007 à 03:12:16    

Merci beaucoup!
 
En revenant, je me suis dit que j'allais effectivement traité les erreurs; ce que je n'avais pas vu dans les trouvailles que j'avais faite.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed