lier checkbox avec input

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : lier checkbox avec input

par popi » 12 mai 2006, 12:46

Yessss :D Super

Désolé ne n'avoir pas été assez clair

Merci à vous

par jpaul » 12 mai 2006, 12:28

Cyrano t'a donné les éléments :
ok, c'est le cas dans mon code
<input type="checkbox" id="".$data["tag"]."" name="paje[]" value="".$data["tag"]."">
<input type="text" name="mots_clefs[]" size="70" value="".$data["keywords"]
mais c'est à la récupération que çà marche pas ?
quand tu mets name="paje[]"
name="mots_clefs[]"

En fait tu crées des index dynamiquement.
Tu risques d'avoir un problème avec le fait que tuutilise des type TEXT et des type CHECKBOX.
Par exemple si tu oublies de cliquer une checkbox alors que tu as rentré un text, tes index vont être en désordre.

A ta place, je forcerais l'index avec un variable incrémentée par exemple :
$varinc++;
<input type="checkbox" id="".$data["tag"]."" name="paje[$varinc]" value="".$data["tag"]."">
<input type="text" name="mots_clefs[$varinc]" size="70" value="".$data["keywords"]
Tu auras ainsi une correspondance exacte entre les pages et les mots cle.
En suite ne reste plus qu'a parcourir les index :

$pajeu=$_POST["paje"];
$motclef=$_POST["mots_clefs"];
foreach($pajeu as $key => $piges){
       echo "Page: $piges motclef $motclef[$key]<br>\n";
}
ou pour uniformiser :
foreach($pajeu as $key => $piges){
       echo "Page: $pajeu[$key] motclef $motclef[$key]<br>\n";
}
Je ne sais pas s'il y a moyen de n'avoir que les index pour faire la boucle...

par Cyrano » 12 mai 2006, 12:09

Relis ce que j'ai écrit plus haut sur la récupération : l'index du tableau super-global $_POST correspond à cet attribut name.

par Invité » 12 mai 2006, 11:59

ok, c'est le cas dans mon code
<input type=\"checkbox\" id=\"".$data["tag"]."\" name=\"paje[]\" value=\"".$data["tag"]."\">
<input type=\"text\" name=\"mots_clefs[]\" size=\"70\" value=\"".$data["keywords"]
mais c'est à la récupération que çà marche pas ?

par Cyrano » 12 mai 2006, 09:20

Chacune de tes cases à cocher devrait avoir un attribut name avec une valeur distincte : partant de là, tu peux très facilement savoir lesquelles ont été cochées et lesquelles ne l'ont pas été.

par popi » 12 mai 2006, 09:07

je comprends, je récupère tout mais ce que je ne sais pas faire c'est de savoir quelle checkbox correspond à quel input ? il doit y avoir une astuce peut-être à la récupération de la requête ?

par Cyrano » 12 mai 2006, 09:04

une case à cocher n'envoie de valeur que si elle a été cochée: tu peux donc savoir en faisant des choses du genre:
$macase1 = (isset($_POST['macase1'])) ? 1 : 0;
Par exemple.

par popi » 12 mai 2006, 08:47

Merci Moosh,
mais çà ne répond pas à ma question : :cry:

Comment récupérer la valeur de chaque checkbox ? c'est pas du php çà ?

par Moosh » 12 mai 2006, 07:44

j'ai répondu en annexe mais déplacé dans le bon forum

http://www.phpfrance.com/forums/viewtopic.php?t=18310

par popi » 11 mai 2006, 16:23

l'exemple en image
Image

je cherche donc à obtenir seulement les mots-clés qui correspondent à la case cochée

Encore merci

par popi » 11 mai 2006, 15:06

ceci
$motclef=$_POST["mots_clefs"];
print_r($motclef);
donne bien le bon contenu
Array ( [0] => machi gogo [1] => machi gogo [2] => machi gogo [3] => ert [4] => ert )

mais comment lier celui qui est avec la checkbox cochée ?

par Invité » 11 mai 2006, 14:41

avec tout le code ce sera + clair
$pajeu=$_POST["paje"];

$motclef=$_POST["mots_clefs"];
$result=implode(",", $motclef);
foreach($pajeu as $piges){

	 echo "Page: ".$piges." motclef ".$result.";<br>\n";
}
	


$sql = "select * from ".$this->config["table_prefix"]."motsclefs where keywords <>''";
$resultat = $this->Query($sql); 

echo "<center><table cellspacing=\"11\"><form name=\"harmony_motclef\" action=\"".$this->Href()."\" method=\"post\">";
while($data = mysql_fetch_assoc($resultat))
{ 		  													

$formulaire.="<tr><td>".$this->Format($data["tag"])."</td><td>.....<input type=\"checkbox\" id=\"".$data["tag"]."\" name=\"paje[]\" value=\"".$data["tag"]."\">&nbsp;<input type=\"text\" name=\"mots_clefs[]\" size=\"70\" value=\"".$data["keywords"]."\" onclick=\"document.getElementById('".$data["tag"]."').checked=true;\"></td></tr>";
}                                                          
echo $formulaire."<td></td><td><input type=\"submit\" name=\"\" value=\"Mise à jour\"></td></form></table></center>";  
Criez pas hein je suis sur le forum Débuter ;-)

par popi » 11 mai 2006, 14:34

Je connais implode d'ailleurs çà donne çà
Page: BalloT motclef machi gogo,machi gogo,machi gogo,ert,ert;
Page: SuiTe motclef machi gogo,machi gogo,machi gogo,ert,ert;
je crois que je suis pas clair dans ma question, je voudrais synchroniser le mot-clé avec la page, chaque checkbox cochée doit relever un nom de page et les mots-clés associés

Merci

par guilt92 » 11 mai 2006, 14:14

Tu ne peux pas passer un tableau, il faut que tu transformes ton tableau en chaine de caractère avant de le passer puis que tu le reformes dans la nouvelle page.
Pour cela il existe des fonctions comme implode() et explode()

lier checkbox avec input

par popi » 11 mai 2006, 14:02

Bonjour à tous,

je récupère d'une table un nom de page et des mot-clés, j'alimente mon formulaire
$formulaire.="<tr><td>".$this->Format($data["tag"])."</td><td>.....<input type=\"checkbox\" id=\"".$data["tag"]."\" name=\"paje[]\" value=\"".$data["tag"]."\">&nbsp;<input type=\"text\" name=\"mots_clefs[]\" size=\"70\" value=\"".$data["keywords"]."\" onclick=\"document.getElementById('".$data["tag"]."').checked=true;\"></td></tr>";
}        


je récupère les variables
$pajeu=$_POST["paje"];
$motclef=$_POST["mots_clefs"];    


je fais une boucle
foreach($pajeu as $piges){

	 echo "Page: $piges motclef $motclef<br>\n";
}
et çà donne çà
Page: BouTic motclef Array
Page: BalloT motclef Array
ok pour $pajeu mais je ne sais pas comment faire pour récupérer en même temps l'Array des mot-clés ?

Merci de votre aide