Requête sur deux tables et formulaire avec liste de choix
Posté : 06 avr. 2017, 15:00
Bonjour à tous!
J'essaie d'améliorer une requête de modification d’informations. Elle est reliée à un formulaire de saisie qui comporte une liste de choix issue d'une table.
Ce projet tourne uniquement sur wamp server car il me sers à apprendre le SQL et le PHP pour un projet ultérieur.
Le code ci-dessous sers à corriger / modifier un enregistrement. Il marche à peu près et bien que j'ai corrigé quelques problèmes il y en a d'autres dont je ne connais pas le nom du coup pour trouver la solution c'est pas évident.
Voila le code du fichier de modification :
Aussi, quand il n'y a pas besoin de faire cette correction, pour l'information sexe et que la liste déroulante issue de la table sexe n'est pas touchée ça change quand même après validation du formulaire. Par ce que l'information de la liste déroulante est prise en priorité.
Et puis dernier truc assez ennuyeux...
Toutes les informations qui devraient être affichées par le formulaire après le sexe ne s'affichent pas et biensûre quand je valide le formulaire ça enlève tout.
Quand j'enlève la mini requête pour afficher la liste déroulante ça fonctionne. Les informations sont affichées...
Je ne comprend pas ce que je fais mal est-ce que vous pourriez m'orienter?
Merci à vous.
J'essaie d'améliorer une requête de modification d’informations. Elle est reliée à un formulaire de saisie qui comporte une liste de choix issue d'une table.
Ce projet tourne uniquement sur wamp server car il me sers à apprendre le SQL et le PHP pour un projet ultérieur.
Le code ci-dessous sers à corriger / modifier un enregistrement. Il marche à peu près et bien que j'ai corrigé quelques problèmes il y en a d'autres dont je ne connais pas le nom du coup pour trouver la solution c'est pas évident.
Voila le code du fichier de modification :
<?php
// Connexion à la base de données
include ('cnxBdd.php');
// On récupère les donnée de l'article séléctioné
$reponse = $bdd->prepare('
SELECT
personnalite.nom,
personnalite.prenom,
personnalite.prenom2,
personnalite.surnom,
personnalite.Vprenom1,
personnalite.Vprenom2,
personnalite.Vnom,
DATE_FORMAT(personnalite.naissance, "%d/%m/%Y") AS naissance,
DATE_FORMAT(personnalite.mort, "%d/%m/%Y") AS mort,
personnalite.sexe_id AS psexe_id,
sexe.snom AS snom,
sexe.sexe_id AS ssexe_id,
personnalite.photo,
personnalite.PersonnaliteLien,
personnalite.PersonnaliteAvatar,
personnalite.id
FROM personnalite
LEFT JOIN sexe ON personnalite.sexe_id = sexe.sexe_id
WHERE id = ?
');
$reponse->execute(array($_GET['number']));
while ($donnees = $reponse->fetch())
{
?>
<!--Formulaire avec les champs préremplis-->
<p>
<form action="modifier_post.php" method="post" id="modif_personnalite">
<label for="id">id </label><input type="text" name="id" value="<?php echo $donnees['id'];?>" tabindex="20"/><br/>
<label for="nom">Nom </label><input type="text" name="nom" value="<?php echo $donnees['nom'];?>" tabindex="20"/><br/>
<label for="prenom">Prénom </label><input type="text" name="prenom" value="<?php echo $donnees['prenom'];?>" tabindex="20"/><br/>
<label for="prenom2">Prénom 2 </label><input type="text" name="prenom2" value="<?php echo $donnees['prenom2'];?>" tabindex="20"/><br/>
<label for="surnom">Surnom </label><input type="text" name="surnom" value="<?php echo $donnees['surnom'];?>" tabindex="20"/><br/>
<label for="Vprenom1">Vraie prénom 1 </label><input type="text" name="Vprenom1" value="<?php echo $donnees['Vprenom1'];?>" tabindex="20"/><br/>
<label for="Vprenom2">Vraie prénom 2 </label><input type="text" name="Vprenom2" value="<?php echo $donnees['Vprenom2'];?>" tabindex="20"/><br/>
<label for="Vnom">Vraie nom </label><input type="text" name="Vnom" value="<?php echo $donnees['Vnom'];?>" tabindex="20"/><br/>
<label for="naissance">Date de naissance </label><input type="text" name="naissance" value="<?php echo $donnees['naissance'];?>"tabindex="20"/><br/>
<label for="mort">Date de décès </label><input type="text" name="mort" value="<?php echo $donnees['mort'];?>"tabindex="20"/><br/>
<label for="psexe_id">Sexe H/F </label><input type="text" name="psexe_id" value="<?php echo $donnees['psexe_id'];?>"tabindex="20"/>
<select name="sexe_id" id="sexe_id">
<?php
include ('cnxBdd.php');
$sexe = $bdd -> query(' SELECT
sexe.sexMin,
sexe.sexe_id,
sexe.snom
FROM sexe
ORDER BY snom ASC');
while ($donnees = $sexe->fetch()) {
echo '<option value="',$donnees['sexe_id'],'"';
if (!empty($_POST['sexe']) && $_POST['sexe'] == $donnees['sexe_id']) {
echo ' selected="selected"';
}
echo '>', $donnees['snom'],'</option>';
}
$sexe->closeCursor();
?>
</select> <br />
<label for="photo">Photo </label><input type="text" name="photo" value="<?php echo $donnees['photo'];?>" tabindex="400"/><br/>
<label for="PersonnaliteLien">Lien sujet personnalité </label><input type="text" name="PersonnaliteLien" value="<?php echo $donnees['PersonnaliteLien'];?>" tabindex="400"/><br/>
<label for="PersonnaliteAvatar">Avatar personnalité </label><input type="text" name="PersonnaliteAvatar" value="<?php echo $donnees['PersonnaliteAvatar'];?>" tabindex="400"/><br/>
<br />
<input type="submit" value="Envoyer" />
<?php
}
// Fin de la boucle pour l'affichage des donnée dans la base de donnée
$reponse->closeCursor();
?>
</form>
</p>
J'ai un problème avec la correction du sexe de la personnalité. Tout d'abord je ne trouve pas comment faire afficher le nom (snom) à la place de l'id de la table (sexe_id). J'ai tenté avec un AS pour que le Snom soit affiché à la place de l'id mais c'est pas ça.Aussi, quand il n'y a pas besoin de faire cette correction, pour l'information sexe et que la liste déroulante issue de la table sexe n'est pas touchée ça change quand même après validation du formulaire. Par ce que l'information de la liste déroulante est prise en priorité.
Et puis dernier truc assez ennuyeux...
Toutes les informations qui devraient être affichées par le formulaire après le sexe ne s'affichent pas et biensûre quand je valide le formulaire ça enlève tout.
Quand j'enlève la mini requête pour afficher la liste déroulante ça fonctionne. Les informations sont affichées...
Je ne comprend pas ce que je fais mal est-ce que vous pourriez m'orienter?
Merci à vous.