lier checkbox avec input

popi
Invité n'ayant pas de compte PHPfrance

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

Mammouth du PHP | 1353 Messages

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()

popi
Invité n'ayant pas de compte PHPfrance

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

Invité
Invité n'ayant pas de compte PHPfrance

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 ;-)

popi
Invité n'ayant pas de compte PHPfrance

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 ?

popi
Invité n'ayant pas de compte PHPfrance

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

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

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
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com

popi
Invité n'ayant pas de compte PHPfrance

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 çà ?

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

popi
Invité n'ayant pas de compte PHPfrance

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 ?

Mammouth du PHP | 19672 Messages

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é.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

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 ?

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 451 Messages

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...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

popi
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 12:46

Yessss :D Super

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

Merci à vous