par
Invité » 02 déc. 2005, 14:52
en fait oui je viens de tenter avec l'hidden et ça marche ...
mais j'avais simplifié le script que j'ai donné pour faire simple...
et en fait avec mon veritable script ca marche pas:
bon j'ai créé que 2 pages au final
la première qui donne le choix de la donnée à modifier via la liste deroulante :
<html>
<body>
<form method="POST" action= "up.php">
<select name='bonjour'>
<?
include("connection.php"); //connection à la base
$sql = "SELECT * FROM donnee order by id_donnee";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while($row = mysql_fetch_array($req))
{
// parcours des resultats et affichage des organisme
$bonjour = $row['id_donnee'];
echo "<option value=$bonjour >$bonjour</option>";
}
echo "</select>";
?>
<center>
<input type="submit" value="Envoyer2" name="envoyer2">
</center>
</form>
</body>
</html>
la deuxième up.php qui ait sencé m'enregistrer les modifications de la donnée
<?
include("connection.php"); //connection à la base
/* On commence par vérifier si le bouton "envoyer1" soumettant le formulaire a été
cliqué, */
if(isset($_POST['envoyer1']))
{
$titre_donnee = $_POST['titre_donnee'];
$titre_donnee=addslashes($titre_donnee) ;
if ($titre_donnee == '') // Si le champ "titre" est vide,
{
print "<li>Vous n'avez pas précisé le titre</li>\n";
?>
<form method="POST" >
<label>Titre de la donnée : <input type="text" name="titre_donnee" size="100" value="<?echo ($titre_donnee); ?>" maxlength="100"></label>
<input type="submit" value="Envoyer" name="envoyer">
</form>
<?
}
else
{
include("connection.php"); //connection à la base
$sql2 = "update donnee set titre_donnee='$titre_donnee' where id_donnee= '$salut' ";
$req2= mysql_query($sql2);
echo ($sql2);
mysql_close($db);
}
}
/* Si cette page s'ouvre pour la première fois sans que le bouton envoyer1 ait été cliqué */
else
{
$salut= $_POST['bonjour']; //correspond a la valeur prise dans la liste deroulante
$sql = "select titre_donnee from donnee where id_donnee= '$salut' ";
$req= mysql_query($sql);
echo ($sql);
$row=mysql_fetch_array($req);
$titre_donnee=$row["titre_donnee"];
?>
<form method="POST">
<label>Titre de la donnée : <input type="text" name="titre_donnee" size="100" value="<?echo ($titre_donnee); ?>" maxlength="100"></label>
<input type="submit" value="Envoyer1" name="envoyer1">
</form>
<?}?>
j'ai viré le "hidden" car je travaille maintenant uniquement sur 2 pages (la premiere avec a liste deroulante et la deuxieme qui fait le traitement de mise à jour)
donc les resultats donnent:
je choisi dans la 1re page dans la liste deroulante la valeur 217:
j'arrive sur la 2eme page:
ca m'affiche:
select titre_donnee from donnee where id_donnee= '217'
là il prend bien l'id_donnee de ma liste deroulante
je rentre dans ma zone de texte: "ppp"
je valide et ca me met
Notice: Undefined variable: salut in c:\documents and settings\stainf3\bureau\cams\site\supprime.php on line 24
update donnee set titre_donnee='ppp' where id_donnee= '' [\b]
'ppp' c'est la valeur que j'ai rentré dans la zone de texte
je n'arrive donc toujours pas a reprendre l'id_donnee de la liste deroulante pour faire la mise à jour (l'UPDATE)
j'ai tenté avec le hidden et là:
comme avant...
- 1er cas si je modifie directement la valeur de la zone de texte et que je valide il enregistre bien ma donnée
- 2eme cas si l'utilisateur ne tape rien dans la zone de texte, je fais afficher un avertissement comme quoi il doit obligatoirement saisir quelque chose et, là quand il a bien ecrit quelque chose dans la zone de texte puis qu'il valide, ca ne reconnait toujours pas la valeur qui était contenu dans la liste déroulante... et la mise à jour n'a donc pas lieu
jsuis a court d'idée...
en fait oui je viens de tenter avec l'hidden et ça marche ...
mais j'avais simplifié le script que j'ai donné pour faire simple...
et en fait avec mon veritable script ca marche pas:
bon j'ai créé que 2 pages au final
la première qui donne le choix de la donnée à modifier via la liste deroulante :
[php]
<html>
<body>
<form method="POST" action= "up.php">
<select name='bonjour'>
<?
include("connection.php"); //connection à la base
$sql = "SELECT * FROM donnee order by id_donnee";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while($row = mysql_fetch_array($req))
{
// parcours des resultats et affichage des organisme
$bonjour = $row['id_donnee'];
echo "<option value=$bonjour >$bonjour</option>";
}
echo "</select>";
?>
<center>
<input type="submit" value="Envoyer2" name="envoyer2">
</center>
</form>
</body>
</html>
[/php]
la deuxième up.php qui ait sencé m'enregistrer les modifications de la donnée
[php]
<?
include("connection.php"); //connection à la base
/* On commence par vérifier si le bouton "envoyer1" soumettant le formulaire a été
cliqué, */
if(isset($_POST['envoyer1']))
{
$titre_donnee = $_POST['titre_donnee'];
$titre_donnee=addslashes($titre_donnee) ;
if ($titre_donnee == '') // Si le champ "titre" est vide,
{
print "<li>Vous n'avez pas précisé le titre</li>\n";
?>
<form method="POST" >
<label>Titre de la donnée : <input type="text" name="titre_donnee" size="100" value="<?echo ($titre_donnee); ?>" maxlength="100"></label>
<input type="submit" value="Envoyer" name="envoyer">
</form>
<?
}
else
{
include("connection.php"); //connection à la base
$sql2 = "update donnee set titre_donnee='$titre_donnee' where id_donnee= '$salut' ";
$req2= mysql_query($sql2);
echo ($sql2);
mysql_close($db);
}
}
/* Si cette page s'ouvre pour la première fois sans que le bouton envoyer1 ait été cliqué */
else
{
$salut= $_POST['bonjour']; //correspond a la valeur prise dans la liste deroulante
$sql = "select titre_donnee from donnee where id_donnee= '$salut' ";
$req= mysql_query($sql);
echo ($sql);
$row=mysql_fetch_array($req);
$titre_donnee=$row["titre_donnee"];
?>
<form method="POST">
<label>Titre de la donnée : <input type="text" name="titre_donnee" size="100" value="<?echo ($titre_donnee); ?>" maxlength="100"></label>
<input type="submit" value="Envoyer1" name="envoyer1">
</form>
<?}?>
[/php]
j'ai viré le "hidden" car je travaille maintenant uniquement sur 2 pages (la premiere avec a liste deroulante et la deuxieme qui fait le traitement de mise à jour)
donc les resultats donnent:
je choisi dans la 1re page dans la liste deroulante la valeur 217:
j'arrive sur la 2eme page:
ca m'affiche:
select titre_donnee from donnee where id_donnee= '217'
là il prend bien l'id_donnee de ma liste deroulante
je rentre dans ma zone de texte: "ppp"
je valide et ca me met
[b]Notice: Undefined variable: salut in c:\documents and settings\stainf3\bureau\cams\site\supprime.php on line 24
update donnee set titre_donnee='ppp' where id_donnee= '' [\b]
'ppp' c'est la valeur que j'ai rentré dans la zone de texte
je n'arrive donc toujours pas a reprendre l'id_donnee de la liste deroulante pour faire la mise à jour (l'UPDATE)
j'ai tenté avec le hidden et là:
comme avant...
- 1er cas si je modifie directement la valeur de la zone de texte et que je valide il enregistre bien ma donnée
- 2eme cas si l'utilisateur ne tape rien dans la zone de texte, je fais afficher un avertissement comme quoi il doit obligatoirement saisir quelque chose et, là quand il a bien ecrit quelque chose dans la zone de texte puis qu'il valide, ca ne reconnait toujours pas la valeur qui était contenu dans la liste déroulante... et la mise à jour n'a donc pas lieu
jsuis a court d'idée... :cry: [/b]