Je débute en php (3 mois et des poussières et beaucoup de lectures) et je m'amuse en apprenant, et vice-versa. Logique et ludique, ; si j'avais su…!
Voici mon problème : j'ai fait un formulaire en une page (php et html) et pour chacun des champs j'ai créé un message d'erreur tout en conservant l'information dans les champs pour que l'utilisateur n'aie pas à remplir à nouveau le formulaire suite à un message…
Bon ! Tous les messages d'erreurs fonctionnent pour les 2 types de champs qui y sont assujettis.
La conservation de l'information fonctionne très bien avec le type text et les informations sont conservées avec ce code :
Titre : <input type="text" name="titre" value="<?php echo $_POST["titre"]; ?>"/><br/>
<font color="red"><?php echo "$erreur1"; ?></font>
Par contre, je n'arrive pas à conserver 1) les cases cochées des checkbox 2) ni l'image sélectionnée si un message avertit qu'un champ text n'est pas complet, par exemple. Les checkbox se désélectionnement et tout comme le fichier image. Pour les checkbox, j'ai bien essayé 5 ou 6 codes que j'ai trouvés au fil de lectures ou de recherches sur le web (
<?php if($_POST['essai'] == true ) { echo 'checked="checked"';}?>
foreach ($_REQUEST['genres'] as $id_genres) { echo 'checked="checked"';}
foreach($_POST['genres'] as $name => $value ) { echo 'checked="checked"';}
<?php if (get_option('genres')) echo "checked='checked'"; ?>
…et autres variantes…que j'ai imbriqués dans…
echo "$genr <input type='checkbox' name='genres' value='$id_genres' id='id_genres'/> ||";
) pour conserver les checkbox cochées ; rien à faire (des fois, en sélectionnant un seul checkbox, tous s'autosélectionnaient…)
Je dois préciser que mes checkbox sont générées et affichées dynamiquement à partir d'une table ; voici le code utilisé pour la partie checkbox
CHECKBOX ==========>
<?php
// trouve et affiche les genres disponibles
$sql = f_requete("
SELECT * FROM genres
ORDER BY genres
");
echo "<hr width='400px' align='left'>";
echo "Genre(s) :<br/>";
echo '<table border="0" width="460px" ><tr><td>';
while ($ram = mysql_fetch_object($sql))
{
$genr = $ram->genres;
$id_genres = $ram->id_genres;
echo "$genr <input type='checkbox' name='genres' value='$id_genres' id='id_genres'/> ||";
}
echo'</td></tr></table>';
echo "<font color='red'>--------------> METTRE EN 2 COLONNES.<br/><br></font>";
echo "<font color='red'> $erreur6</font>";
echo "<hr width='400px' align='left'>";
?>
FORMULAIRE AU COMPLET ======================>
<html>
<head>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<input type="hidden" name="ajouter" value="oui"/>
Titre : <input type="text" name="titre" value="<?php echo $_POST["titre"]; ?>"/><br/>
<font color="red"><?php echo "$erreur1"; ?></font>
Image : <input type='hidden' name='max_file_size' value='2000000'/><br/>
<input type='file' size='40' name='image'/>
Description : <textarea name="description"><?php echo $_POST["description"]; ?></textarea><br/>
<font color="red"><?php echo "$erreur2"; ?></font>
<!-- inclusion du calendrier javascript dans le champ date -->
Date : <input onclick="ds_sh(this);" name="date" readonly="readonly" style="cursor: text" value="<?php echo $_POST["date"]; ?>"/><br />
<font color="red"><?php echo "$erreur3"; ?></font>
Heure : <input type="text" name="heure" value="<?php echo $_POST["heure"]; ?>"/><br/>
<font color="red"><?php echo "$erreur4"; ?></font>
Prix : <input type="text" name="prix" value="<?php echo $_POST["prix"]; ?>"/><br/>
<font color="red"><?php echo "$erreur5"; ?></font>
<?php
// trouve et affiche les genres disponibles
$sql = f_requete("
SELECT * FROM genres
ORDER BY genres
");
echo "<hr width='400px' align='left'>";
echo "Genre(s) :<br/>";
echo '<table border="0" width="460px" ><tr><td>';
while ($ram = mysql_fetch_object($sql))
{
$genr = $ram->genres;
$id_genres = $ram->id_genres;
echo "$genr <input type='checkbox' name='genres' value='$id_genres' id='id_genres'/> ||";
}
echo'</td></tr></table>';
echo "<font color='red'>--------------> METTRE EN 2 COLONNES.<br/><br></font>";
echo "<font color='red'> $erreur6</font>";
echo "<hr width='400px' align='left'>";
?>
Ajouté par : <?php echo $inscritpar; ?><br/>
<input type="submit" name="Action" value="Ajouter"/>
</form>
</body>
</html>
FIN =====================>Merci de m'aider à trouver (ou m'orienter vers) une solution, à ce problème qui me fait tourner en rond depuis beaucoup trop d'heures, pour conserver 1) les checkbox cochées et 2) l'image/fichier sélectionnée
PS il n'y a pas de message d'erreur pour l'image ; elle est facultative.
PSS j'espère que ma question/problème respecte les règles de l'art ; c'est la première fois que j'interviens dans ce type de forum.
en haut à droite de la réponse qui te semble la plus pertinente.