[PhP] MaJ à l'aide d'une liste déroulante

Résolu/Fermé
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 - 22 mai 2008 à 15:34
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 - 23 mai 2008 à 08:50
Bonjour,
j'ai un petit soucis avec un formulaire de mise à jour de données (PhP et MySQL).
Ce que je souhaite faire: en séléctionnant différents choix dans une liste déroulante, je voudrais que d'autres valeurs correspondants a celle de la liste déroulante s'affichent.

Le problème semble venir de ma requete SQL, mais je ne sais pas du tout comment corriger sa :(

// Requête SQL
$query="SELECT date_actu FROM ACTUALITE WHERE nom_actu='".$_POST['liste']."';";

Le message d'erreur qui s'affiche est: Notice: Undefined index: liste
("liste" correspond au nom de ma liste déroulante)

Désolé pour les explications sommaires, je ne voulais pas poser tout le code ^^
Merci!

9 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 16:04
t'est sure qu'elle s'appelle bien "liste" ta liste ?

tu passe bien les variables du formulaire par la methode POST ?

parceque d'apres le message $_POST['liste'] n'existe pas
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 16:16
<td>
<select name="liste">
<option value=''> - Faîtes votre choix - </option>
<?PHP
// Connexion a la BDD
$link=mysql_connect("localhost","root","")or die("Connexion impossible".mysql_error());

//Selection de la BDD
mysql_select_db("MyBDD")or die("Selection de la base impossible");

// Requête SQL
$query="SELECT nom_actu
FROM ACTUALITE;";

$result=mysql_query($query)or die("Erreur lors de la requête :".mysql_error());

while ($donnees = mysql_fetch_assoc($result))
{
echo '<option value='. $donnees["nom_actu"] ;

if ( isset ($_POST['Agree']))
{
if ($_POST['liste'] == $donnees["nom_actu"])
{
echo ' selected="selected"' ;
}
}

echo '>'. $donnees["nom_actu"].'</option>' ;
}

// Deconnexion de la BDD
mysql_free_result($result);
mysql_close($link);
?>
</select>
</td>

Désolé pour la longueur, donc sa c'est le code de ma liste déroulante. Elle s'affiche nickel j'ai pas de probleme la dessus :)
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 16:22
Ouaip donc elle s'appel bien "liste"

Maintenant ton formulaire envoi bien les données en POST ?

<form name="xx" action="yy" method="POST">

0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 16:26
<div id="profil">
<form name="new_sujet" method="POST">
....

Je n'ai pas d'action, c'est grave docteur? :s
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 16:30
Heu oui, comment il sais sur quelle page aller quand tu valide ?
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 16:34
Il dois rester sur la même page, j'ai fais comme sa pour mon formulaire d'inscription sa me va bien :)

Je link le code de mon premier textbox que je souhaite mettre a jour en fonction de la liste déroulante 'désolé pour l'encombrement):

<tr>
<td class="largeur_tab">Date (JJ-MM-AAAA):</td><td width=""><input type="text" name="date" size="15px"
<?PHP

// Connexion a la BDD
$link=mysql_connect("localhost","root","")or die("Connexion impossible".mysql_error());

//Selection de la BDD
mysql_select_db("MyBDD")or die("Selection de la base impossible");

// Requête SQL
$query="SELECT date_actu FROM ACTUALITE WHERE nom_actu='".$_POST['liste']."';";

$result=mysql_query($query)or die("Erreur lors de la requête :".mysql_error());

// Deconnexion de la BDD
mysql_free_result($result);
mysql_close($link);

if (isset($_POST["Agree"]) and !empty($_POST['date']))
echo " value=".$_POST['date'];
?>
></td>
<td>
<?PHP
if (isset($_POST["Agree"]) and empty($_POST['date']))
echo "<font color='red'>Vous n'avez pas saisi la date de l'évènement</font><br/>";
?>
</td>
</tr>
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 16:44
La premiere fois que tu arrive sur ta page, tu n'a rien selectionné dans la liste donc sa me parrai normal qu'il ne trouve rien dans $_POST['liste']

il faudrai pas proteger ton bloc de code pour ta boite de texte avec un if (isset($_POST['liste']) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 16:54
Avec la protection je n'ai plus le message d'erreur quand j'arrive sur la page, merci beaucoup ^^
Mais cependant l'affichage ne se fait pas, j'ai vérifié tous mes noms de champ et sa m'a l'air bon.. Avec cette méthode l'actualisation des données se fais directement ou avec validation du formulaire? Même avec validation sa n'affiche rien..

Merci beaucoup de t'interesser à ce probleme en tout cas :)
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 17:01
l'actualisation des données ce fais a chaque entrée sur la page, donc directement et apres validation.

C'est pour ça que la premiere fois que t'arrive sur la page $_POST['liste'] est vide, mais la ou c'est pas normal c'est qu'il soit vide apres validation du formulaire

essai de mettre quand même une action a la balise form car c'est pas valide de ne pas en mètre même si sa marche.
Tu met juste action="#".

Si ça ne marche toujours pas, faudrai regarder concretement ce qu'il y a dans ton $_POST

alors au tout debut de ta page fais simplement un

print_r($_POST);

Il va t'afficher tout le contenu de ce tableau de variable donc choisi quelque chose dans la liste, valide et regarde ce qu'il t'ecrit ;)
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 17:11
J'ai rajouté l'action et le test me dit:

Array ( [liste] => Test [date] => [lien] => [remarque] => [Agree] => Ok )

Je ne sais pas trop a quoi sa correspond je suis niveau débutant :s
Je vais regarder sa tranquille ce soir et je donnerais des nouvelles demain matin je pense :s
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
22 mai 2008 à 17:18
Il y a bien quelque chose dans "liste" a ce moment la

[liste] => Test

ça signifie que dans $_POST['liste'] il y a "Test"

Donc la requete doit bien s'executer

T'est sur que c'est ça qui pose probleme ?
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
22 mai 2008 à 17:31
Je l'ignore :s Il me semble que sa viens du second bout de code (concernant la date) ou il manque quelques chose :s
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
23 mai 2008 à 08:50
Dsl pour le double post, on ne peut edit que jusque que 60min après ^^

Problème résolu grace à Mimiste :) Merci beaucoup!
N'ayant fait que de l'insertion de données auparavant, je n'avais pas fait le traitement de la donnée...


// Requête SQL
$query="SELECT date_actu FROM ACTUALITE WHERE nom_actu='".$_POST['liste']."';";

$result=mysql_query($query)or die("Erreur lors de la requête :".mysql_error());
echo " value=".mysql_result($result, 0);
0