Code

Résolu
Decodeur01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Decodeur01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   527
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
ça marche comme je veux , merci encore pour votre assistance.
trop cool ce forum...
0