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 -
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
puis je récupère les informations et je les traite ainsi
je veux enfin être redirigé vers la page qui m'affiche tous les etudiants dont voici le code
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.
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:
- Code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
5 réponses
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
Bonne journée
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
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 .
ajoutEtudiant.php
merci encore pour la promptitude de vos réactions.
EDIT : Ajout des balises de code
( ! ) 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
Bonjour,
Essayes ça :
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>
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:
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.
.
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.
.
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 :
il y a une erreur dans le code que je t'ai donné
il faut modifier cette partie du code :
par :
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 )