Code

Résolu/Fermé
Decodeur01 Messages postés 4 Date d'inscription jeudi 13 août 2015 Statut Membre Dernière intervention 16 août 2015 - Modifié par pijaku le 13/08/2015 à 12:00
Decodeur01 Messages postés 4 Date d'inscription jeudi 13 août 2015 Statut Membre Dernière intervention 16 août 2015 - 16 août 2015 à 05:40
Bonjour, je suis debutant en php et je solicite votre aide.
je craie une application qui envoie les donnees dans une bd, les recupere et les affiche.
apres la connexion a la bd, j ai ce formulaire dans une page html

<body>
   <form method="POST" action="ajoutEtudiant.php" enctype="multipart/form-data">
  <table>
   <tr>
    <td>Nom</td>
    <td><input type="text" name="nom"></td>  
   </tr>
   <tr>
    <td>Email</td>
    <td><input type="text" name="email"></td>  
   </tr>
   <tr>
    <td>Photo</td>
    <td><input type="file" name="photo"></td>  
   </tr>
   <tr>
    <td></td>
    <td><input type="submit" value="Enregistrer"></td>  
   </tr>
  </table>
   </form>
</body>


puis je récupère les informations et je les traite ainsi

 <?php
  require_once("connexion.php");
  if (isset($_POST['nom']) and isset($_POST['email']) and isset($_POST['photo'])) 
  {
   $nom=$_POST['nom'];
   $email=$_POST['email'];
   $nomPhoto=$_FILES['photo']['name'];
   $file_tmp_name=$_FILES['photo']['tmp_name'];
   move_uploaded_file($file_tmp_name,"./images/$nomPhoto");
   $req = $bdd->query("insert into ETUDIANT(NOM, EMAIL, PHOTO)     values('$nom','$email','$nomPhoto')");   
      header("location:afficherEtudiant.php");
  }
 ?> 


je veux enfin être redirigé vers la page qui m'affiche tous les etudiants dont voici le code

<body>
  <table border="1" width="80%">
    <tr>
     <th>CODE</th><th>NOM</th><th>PHOTO</th>
     <th>SUPPRESSION</th><th>EDITION</th>
    </tr>
     
   <?php // On affiche chaque entrée une à une
    while ($donnees = $req->fetch())
       { ?>  
      <tr>
       <td><?php echo($donnees['CODE'])?></td> 
       <td><?php echo($donnees['NOM'])?></td> 
       <td><img src="images/<?php echo($donnees['PHOTO'])?>"></td> 
       <td><a href="supprimerEtudiant.php?code=<?php echo($donnees['CODE'])?>">Supprimer</a></td> 
       <td><a href="editEtudiant.php?code=<?php echo($donnees['CODE'])?>">Editer</a></td>      
      </tr> 
   
   
   <?php   } ?>
  
  </table>


non seulement les données ne vont pas dans la bd mais il n'y a pas de redirection comme voulu. s'il vous plait je débute et j'ai passé beaucoup de temps à chercher, si quelqu'un peut m'aider.
MERCI.
A voir également:

5 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 août 2015 à 11:59
Salut,

Comme tu as pu le voir dans le traitement de ton formulaire, un input type="file" se récupère en PHP via la superglobale $_FILES et non via $_POST.

Donc ta première condition
if (isset($_POST['nom']) and isset($_POST['email']) and isset($_POST['photo']))
n'est jamais vrai puisque $_POST['photo'] n'est pas définie.

Bonne journée
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
14 août 2015 à 01:46
Bonjour,

Tu fais erreur.... il a, dans son formulaire, des champs INPUT (nom,email....) qui eux.. sont transmits en POST.
Seul le fichier ( dont le nom est :"photo" est passé par $_FILES )
0
Decodeur01 Messages postés 4 Date d'inscription jeudi 13 août 2015 Statut Membre Dernière intervention 16 août 2015
Modifié par jordane45 le 14/08/2015 à 01:48
Merci Pitet pour ta réaction, c'est la première fois que j'interviens dans un forum et je suis très touché. en fait, après la modification je reçois les mêmes messages d'erreur:

( ! ) Notice: Undefined variable: nom in C:\wamp\www\GestionEtudiants\ajoutEtudiant.php on line 23

pareil pour l'émail. je ne sais comment définir ces variables.
voici les codes respectifs modifiés de ajoutEtudiant.html et ajoutEtudiant.php .
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style. css" />
<title>SCOLARITE</title>
</head>
<body>
   <form method="POST" action="ajoutEtudiant.php" enctype="multipart/form-data">
  <table>
   <tr>
    <td>Nom</td>
    <td><input type="text" name="nom"></td>  
   </tr>
   <tr>
    <td>Email</td>
    <td><input type="text" name="email"></td>  
   </tr>
   <tr>
    <td>Photo</td>
    <td><input type="file" name="photo"></td>  
   </tr>
   <tr>
    <td></td>
    <td><input type="submit" value="Enregistrer"></td>  
   </tr>
  </table>
   </form>
</body>
</html>


ajoutEtudiant.php
 <?php
  require_once("connexion.php");
  if (isset($_POST['nom']) and isset($_POST['email']) and isset($_FILLE['photo'])) 
  {
   $nom=$_POST['nom'];
   $email=$_POST['email'];
   $nomPhoto=$_FILES['photo']['name'];
   $file_tmp_name=$_FILES['photo']['tmp_name'];
   move_uploaded_file($file_tmp_name,"./images/$nomPhoto");
   $req = $bdd->query("insert into ETUDIANT(NOM, EMAIL, PHOTO) values('$nom','$email','$nomPhoto')");   
      header("location:afficherEtudiant.php");
  }
   
  ?>

 <! DOCTYPE html>
 <html>
 <body>
   <table border="1" width='30%'>
    <tr>
     <td>Nom</td>
     <td><?php echo($nom)?></td>  
    </tr>
    <tr>
     <td>Email</td>
     <td><?php echo($email)?></td>  
    </tr>
    <tr>
     <td>Photo</td>
     <td><img src="./images/<?php echo'($nomPhoto)'?>" /></td>  
    </tr>

   </table>
   <a href="afficherEtudiant.php">Afficher les etudiantss</a>
 </body>
 </html>
  

merci encore pour la promptitude de vos réactions.

EDIT : Ajout des balises de code
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
14 août 2015 à 01:59
Bonjour,

Essayes ça :
 <?php
 /* Page : ajoutEtudiant.php  */
require_once("connexion.php");
  
// Récupération "propre" des variables :
 $nom=!empty($_POST['nom'])?$_POST['nom']:NULL;
 $email=!empty($_POST['email'])?$_POST['email']:NULL;
 $nomPhoto=!empty($_FILES['photo']['name'])?$_FILES['photo']['name']:NULL;

//Traitement du submit
 if($nom && $email && $nomPhoto) {
   $file_tmp_name=$_FILES['photo']['tmp_name'];
   if(!move_uploaded_file($file_tmp_name,"./images/$nomPhoto")){
      echo "<br>Erreur lors du téléchargement de l'image"  ;
      $req = $bdd->query("insert into ETUDIANT(NOM, EMAIL, PHOTO) values('$nom','$email','$nomPhoto')");   
    }      
 } else {
 // Un ou plusieurs champs sont manquants....
 //le temps des tests si ça ne fonctionne toujours pas:
 echo "<pre>POST : <br> ";
   print_r($_POST);
 echo "<br> FILES :<br>";
   print_r($_FILES);
 echo "</pre>";
 }
?>

<! DOCTYPE html>
<html>
 <body>
   <table border="1" width='30%'>
    <tr>
     <td>Nom</td>
     <td><?php echo $nom;?></td>  
    </tr>
    <tr>
     <td>Email</td>
     <td><?php echo $email ;?></td>  
    </tr>
    <tr>
     <td>Photo</td>
     <td><img src="./images/<?php echo $nomPhoto;?>" /></td>  
    </tr>
   </table>
   <a href="afficherEtudiant.php">Afficher les etudiantss</a>
 </body>
</html>
0
Decodeur01 Messages postés 4 Date d'inscription jeudi 13 août 2015 Statut Membre Dernière intervention 16 août 2015
Modifié par jordane45 le 14/08/2015 à 16:06
MERCI !!!
il n y a plus d'affichage d'erreurs mais la photo ne s'affiche pas ds ajout.php et les données inserées à partir de ajoutEtudiant.html ne partent pas ds la bd donc impossible de les récupérer pour les afficher dans afficherEtudiant.php dont voici le code:

<! DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <link rel="stylesheet" href="style. css" />
  <title>SCOLARITE</title>
 </head>
    <body>
  <table border="1" width="80%">
    <tr>
     <th>CODE</th><th>NOM</th><th>PHOTO</th>
     <th>SUPPRESSION</th><th>EDITION</th>
    </tr>
     
   <?php // On affiche chaque entrée une à une
    while ($donnees = $req->fetch())
       { ?>  
      <tr>
       <td><?php echo($donnees['CODE'])?></td> 
       <td><?php echo($donnees['NOM'])?></td> 
       <td><img src="images/<?php echo($donnees['PHOTO'])?>"></td> 
       <td><a href="supprimerEtudiant.php?code=<?php echo($donnees['CODE'])?>">Supprimer</a></td> 
       <td><a href="editEtudiant.php?code=<?php echo($donnees['CODE'])?>">Editer</a></td>      
      </tr> 
      
   <?php   } ?>
  
  </table>
   
    </body>
</html>


je cherche une solution depuis des heures et je continu à chercher mais si vous pouvez m'aider... ça m'aiderait beaucoup à avancer.
merci.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
14 août 2015 à 16:14
1 - **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

2 - Je ne vois pas, dans ta page, l'include du fichier de connexion à la BDD

3 - Je ne vois pas, dans ton code.. la requête $req

4 - Quand tu dis :
les données inserées à partir de ajoutEtudiant.html ne partent pas ds la bd

il y a une erreur dans le code que je t'ai donné
il faut modifier cette partie du code :
   $file_tmp_name=$_FILES['photo']['tmp_name'];
   if(!move_uploaded_file($file_tmp_name,"./images/$nomPhoto")){
      echo "<br>Erreur lors du téléchargement de l'image"  ;
      $req = $bdd->query("insert into ETUDIANT(NOM, EMAIL, PHOTO) values('$nom','$email','$nomPhoto')");   
    } 

par :
    $file_tmp_name=$_FILES['photo']['tmp_name'];
    if(!move_uploaded_file($file_tmp_name,"./images/$nomPhoto")){
      echo "<br>Erreur lors du téléchargement de l'image"  ;
    }else{
        $sql ="insert into ETUDIANT(NOM, EMAIL, PHOTO) values(:nom,:email,:nomPhoto)";
        $params = array(":nom"=>$nom,":email"=>$email,":nomPhoto"=>$nomPhoto
       try{
          $prepare = $bdd->prepare($sql);   
          $prepare->execute($params);
       }catch(Exception $e){
        //en cas d'erreur...
         echo "<br>Erreur !". $e->getmessage();
       }
    }

nb: Comme tu peux le voir, je suis passé par des requêtes préparées...
c'est plus sûr ... cela permet, entre autres choses.. d'éviter les failles de sécurité liées aux injections sql...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Decodeur01 Messages postés 4 Date d'inscription jeudi 13 août 2015 Statut Membre Dernière intervention 16 août 2015
16 août 2015 à 05:40
ça marche comme je veux , merci encore pour votre assistance.
trop cool ce forum...
0