j´ai un petit truc a faire en php, et je bloque a un endroit: en effet, l´utilisateur doit mettre des valeurs dans des zones de texte <input type="text">.
le problème, c´est que je n´ai jamais vraiment compris comment récupérer les valeurs ![]()
apparament, créer un formulaire avec la methode post semble etre la meilleure solution, mais je n´y arrive pas... comment utiliser correctement la methode post
et ![]()
Tu créés un formulaire à l´aide de la balise form :
<form action="la_page_qui_va_récupérer_les_valeurs.php" method="post">
<input type="text" name="nom_de_variable_qui_va_etre_récupérée">
<input type="submit">
</form>
Et ensuite, quand tu vas appuyer sur "Submit", la variable contenu dans le champ texte de ton formulaire sera récupérée sous la forme $_POST[´nom_de_variable_qui_va_etre_récupérée´], n´oublie pas de faire des tests dessus pour vérifier qu´elle ne contient pas n´importe quoi ![]()
ca marche! merci beaucoup ![]()
p´tit problème
j´ai là un formulaire POST en php, avec des champs a remplir, des valeurs par défaut dedans, et le tout est censé générer une requète mysql de type update
seulement, je suis obligé de cliquer une fois sur valider pour que les valeurs entrent dans la requète, et une autre fois pour l´envoyer... si je programme mon bouzin pour qu´il envoie directement la requète au premier clic, il envoie un squelette de requète vide, mdr
quelqu´un aurait pas une idée de javascript pour obliger l´utilisateur a cliquer deux fois ![]()
Donne ton code stp
d´accord, mais autant que je vous prévienne, le bout de code en question est assez... compliqué
if($action=="modifier"){
$requete=´describe ´.$table.´;´;
$resultat=mysql_query($requete, $lien);
$compteur=0;
//echo ´<form action=\"´.$table.´\".php method=\"POST\">´;
while($line=mysql_fetch_row($resultat)){ //récup des noms de champs ds tab
//echo $line[0].´:<input type=\"text\" name=\"´.$line[0].´\"><br>´;
$tab[$compteur]=$line[0];
$compteur=$compteur+1;
}
$stocpt=$compteur; //stockons la valeur du nombre de champs de la table
$compteur=0;
//echo ´<form action="CONTENU.php?table=´.$table.´" method=post>´;
//echo ´<form
action="CONTENU.php?table=´.$table.´&action=´.$act
ion.´&id=´.$id.´&nomId=´.$nomId.´" method=post>´;
//echo ´<form method=post>´;
//echo ´<form method="post"
action="confirmation.php?table=´.$table.´&rqt=´.$r
qt.´">´;
while($compteur<$stocpt){
$requete=´select ´.$tab[$compteur].´ from ´.$table.´ where ´.$nomId.´ = ´.$id.´;´;
$resultat=mysql_query($requete,$lien);
$ligne=mysql_fetch_row($resultat);
//echo $ligne[0];
$defaut=$ligne[0];
echo $tab[$compteur].´:<input type="text" name="´.$tab[$compteur].´" value=´.$defaut.´><br>´;
$compteur=$compteur+1;
}
//bien! nous avons le nom des champs, les trous pour modifier du texte, et les valeurs par défaut!
$rqt=´update ´.$table.´ set ´;
$compteur=0;
while($compteur<$stocpt){
$valeur=$_POST[$tab[$compteur]];
//echo $valeur.´<br>´;
$rqt=$rqt.´ ´.$tab[$compteur].´=´.´\´´.$valeur.´\´´;
if($compteur<($stocpt-1))$rqt=$rqt.´,´;
$compteur=$compteur+1;
}
$rqt=$rqt.´ where ´.$nomId.´=´.$id.´;´;
echo $rqt;
echo ´<input type="submit" value="valider">´;
echo ´</form>´;
}
hard, hein? on est censé arriver sur une page nommée "intervention.php" pour updater un champ de valeurs d´une table; il y a donc une variable action.
il arrive aussi par la barre d´adresse le nom de la table qui porte les champs a updater, etc...
disons qu´en bref, ce bout de code là est censé générer une requète sql de type update a partir de ce qui est marqué dans les zones de texte! mais hélas, ca ne marche pas très bien; on dirait que la requète est générée avant de récupérer la valeur par défaut des champs de texte, et donc ca m´obligerait a cliquer deux fois pour récupérer les valeurs et générer la requète ![]()
d´ailleurs, lol: des lignes ont été coupées ![]()
1- il manque du code
2- Après $rqt=´update ´.$table.´ set ´; et $rqt=$rqt.´ where ´.$nomId.´=´.$id.´;´; (modifiable en $rqt=´update ´.$table.´ set ´; $rqt.=´ where ´.$nomId.´=´.$id.´;´; ), aucun mysql_query(); > requete non executée.
Si tu pouvais parser ton code ici, ce serait bien ![]()
http://rafb.net/paste/
tiens, j´ai réussi a résoudre le problème! un petit coup d´Isset et hop!
if($action=="modifier"){
$requete=´describe ´.$table.´;´;
$resultat=mysql_query($requete, $lien);
$compteur=0;
//echo ´<form action=\"´.$table.´\".php method=\"POST\">´;
while($line=mysql_fetch_row($resultat)){ //récup des noms de champs ds tab
//echo $line[0].´:<input type=\"text\" name=\"´.$line[0].´\"><br>´;
$tab[$compteur]=$line[0];
$compteur=$compteur+1;
}
$stocpt=$compteur; //stockons la valeur du nombre de champs de la table
$compteur=0;
//echo ´<form action="CONTENU.php?table=´.$table.´" method=post>´;
//echo ´<form
action="CONTENU.php?table=´.$table.´&action=´.$act
ion.´&id=´.$id.´&nomId=´.$nomId.´" method=post>´;
echo ´<form method=post>´;
//echo ´<form method="post"
action="confirmation.php?table=´.$table.´&rqt=´.$r
qt.´">´;
while($compteur<$stocpt){
$requete=´select ´.$tab[$compteur].´ from ´.$table.´ where ´.$nomId.´ = ´.$id.´;´;
$resultat=mysql_query($requete,$lien);
$ligne=mysql_fetch_row($resultat);
//echo $ligne[0];
$defaut=$ligne[0];
echo $tab[$compteur].´:<input type="text" name="´.$tab[$compteur].´" value=´.$defaut.´><br>´;
$valeur[$compteur]=$defaut;
$compteur=$compteur+1;
}
//bien! nous avons le nom des champs, les trous pour modifier du texte, et les valeurs par défaut!
/*
$rqt=´update ´.$table.´ set ´;
$compteur=0;
while($compteur<$stocpt){
//echo $valeur.´<br>´;
$rqt=$rqt.´
´.$tab[$compteur].´=´.´\´´.$valeur[$compteur].´\´´
;
if($compteur<($stocpt-1))$rqt=$rqt.´,´;
$compteur=$compteur+1;
}
$rqt=$rqt.´ where ´.$nomId.´=´.$id.´;´;
echo $rqt;
//echo ´<form method=post>´;
$rqt=´update ´.$table.´ set ´;
$compteur=0;
while($compteur<$stocpt){
if(isset($_POST[$tab[$compteur]])){
$valeur[$compteur]=$_POST[$tab[$compteur]];
}
//echo $valeur.´<br>´;
$rqt=$rqt.´
´.$tab[$compteur].´=´.´\´´.$valeur[$compteur].´\´´
;
if($compteur<($stocpt-1))$rqt=$rqt.´,´;
$compteur=$compteur+1;
}
$rqt=$rqt.´ where ´.$nomId.´=´.$id.´;´;
echo $rqt;
echo ´<input type="submit" value="entrer">´;
echo ´</form>´;
/*
echo ´<form method="post"
action="confirmation.php?table=´.$table.´&rqt=´.$r
qt.´">´;
echo ´<input type="submit" value="valider">´;
echo ´</form>´;
/*
echo ´<form
action="CONTENU.php?table=´.$table.´&action=´.$act
ion.´&id=´.$id.´&nomId=´.$nomId.´" method=post>´;
echo ´<input type="submit" value="validerPDV">´;
echo $requete;
$resultat=mysql_query($requete,$lien);
echo ´<form method="post"
action="CONTENU.php?table=´.$table.´&repsql=´.$rep
sql.´">´;
$compteur=0;
echo ´<table border bordercolor="cyan">´;
echo ´<tr>´;
while($compteur<$stocpt){
echo ´<td>´.$tab[$compteur].´</td>´;
$compteur=$compteur+1;
}
echo ´</tr><tr>´;
$compteur=0;
while($compteur<$stocpt){
echo ´<td>´.$valeur[$compteur].´</td>´;
$compteur=$compteur+1;
}
echo ´ce sont ces valeurs-la que vous voulez?´;
$resultat=mysql_query($rqt,$lien);
echo ´<input type="submit" value="oui">´;
echo ´</form>´;
pour le parsage du code, tu veux ce bout-là ou toutes les pages?
Si ça fonctionne, aucune raison de redonner le code.
Le parsage nous aurait permis de mieux lire ton code ![]()
mais quand tu parles de parsage, tu veux dire enlever tous les commentaires inutiles, les print de debugs et tout ce qui ne sert pas vraiment
je débute et ne connais donc pas bien le vocabulaire de programmation ![]()
quand il parle de "parsage", je pense qu´il voulait dire qu´il eu mieu valu que tu poste ton message sur un wall (i.e. que tu le paste/copie là) et que si le wall est bon, il va parser le code pour faire par exemple une coloration syntaxique. D´autre part il va conserver l´indentation.
Le seul truc dommage c´est qu´il n´y a plus de bon wall je trouve. rafb est pas mal du tout, mais le walljv ou un truc comme ça, ainsi que le nouveau wall de CodeS-SourceS.com sont très mauvais (mais ce dernier est très récent, donc il peut s´améliorer). Il y en avait un très bon sur un site qui s´appelait outils du net ou quelque chose comme ça, mais il a disparu.
Bref tout ça pour dire que tu utilise le lien de deepblue :
http://rafb.net/paste/ pour mettre ton code, ça sera mieux.
au secour, j´ai un problème avec une requète SQL!
je tape:
select m.numMan,m.nomMan,count(*) from CONTENU c,MANIFESTATION m where c.numMan=m.numMan group by(m.numMan,m.nomMan) order by m.nomMan;
et ils me mettent:
ERROR 1241 (21000): Operand should contain 1 column(s)
quelqu´un aurait une idée de l´origine du problème ![]()
Essaie :
select m.numMan,m.nomMan,count(*) from CONTENU c,MANIFESTATION m where c.numMan=m.numMan group by m.numMan,m.nomMan order by m.nomMan;
Si ça marche c´est car group by ne prends pas plusieurs colonnes dans ses parenthèses. D´ailleurs ce type d´écriture me rappelle rien, j´utilise toujours celui que j´ai indiqué (il existe peut être sur un sgbdr qui accepte des écritures spéciales de SQL).