Bonjour,
Je suis entrain de réaliser un site qui comportera une série de photo que l'on pourra selectionner par "Auteur", "Theme" , "Region", "Mots cles" etc.
J'ai donc crée une base Mysql. Pas de pb de ce côté. La table Auteur par exemple est constitué dans champ d'index, du champ Nom et du champ prénom.
Maintenant j'essaie de faire un petit utilitaire pour saisir les données dans la database.
Typiquement, l'utilisateur choisi (par exemple) un nom d'auteur dans une liste déroulante et après un click sur le bouton de validation je vais rechercher l'index correpondant au nom.
Voici le le code simplifié
**************************************************
en tête du fichier - inclusion des parametres de connection
et connexion à la base données
**************************************************
<html>
<head>
<?PHP
include "ref.inc.php" ;
include "connect.inc.php" ;
connexion();
/**************************************************
Ci dessous, je teste l'existence des variables
Si exite, j'en recupere la valeur
Sinon, j'initialise à chaine nulle ou à zero
**************************************************/
if (isset($_POST["SEL_AUTEUR"])) $SEL_AUTEUR = $_POST["SEL_AUTEUR"]; else $SEL_AUTEUR = "";
if (isset($_POST["IDX_AUTEUR"])) $IDX_AUTEUR = $_POST["IDX_AUTEUR"]; else $IDX_AUTEUR = 0;
/**************************************************
La, c'est pour le débogage, pour afficher les données transmises
**************************************************/
while (list($cle,$val) = each($_POST))
{ echo "Cle : " . $cle . " Valeur : " . $val . "<BR>";
}
?>
</head>
<BODY>
/**************************************************
J'ouvre un formulaire qui s'appelle lui même
**************************************************/
<form name="form_selection" ACTION = "formulaire.php" METHOD = "POST">
<table width="100%" border="3">
<tr> <td>Auteurs</td></tr>
<tr> <td>
/**************************************************
Je cree dynamiquement une liste d'option en faisant appel à la table
Le groupe If($full-nom == $SEL_AUTEUR .......
permet de "se souvenir" de l'option qui a été selectionnée
avant le rappel du formulaire, pour en faire l'option par défaut
et pour rechercher l'index correspondant.
**************************************************/
<?PHP
$sql = "SELECT nom,prenom, idx_auteur FROM `auteur` order by nom";
$id_res = mysql_query($sql,$id_con);
echo "<select name='SEL_AUTEUR' size = 5 >";
while ($res = mysql_fetch_array($id_res, MYSQL_NUM))
{
$full_nom = $res[1]. " " . $res[0];
if ($full_nom==$SEL_AUTEUR)
{
echo "<option selected>".$full_nom."</option>";
$IDX_AUTEUR = $res[2];
}
else
echo "<option>".$full_nom."</option>";
}
echo "</select>";
/**************************************************
Toujours pour le debogage, j'affiche l'index à côté du nom choisi
**************************************************/
echo "idx_auteur = " . $IDX_AUTEUR;
echo "</TD> </TR>";
echo "<TR> <TD>";
/**************************************************
Et enfin je renseigne un champ texte (pour le moment) mais
qui sera HIDDEN par la suite de façon à transmettre la valeur de l'index avec le prochain POST
**************************************************/
echo "<input type = 'TEXT' NAME = 'IDX_AUTEUR' VALUE = '$IDX_AUTEUR ' >";
echo "<BR>" , "<Input type ='submit' Value='Refresh'>";
?>
</td> </tr> </table> </form>
</body>
</html>
-----------------------------------------------------------------------
Le probleme, c'est que le POST ne me renvoie pas cet index correctement,
Au premier clic j'obtiens
Cle : SEL_AUTEUR Valeur : Jacques
Cle : IDX_AUTEUR Valeur : 0
La valeur de l'index n'est trasmise qu'au second clic.
Quelqu'un voit-il pourquoi ce bug ?