Jekkil |
Le 27/03/2006 à 01:04 |
|

|
Bonjour, J'ai un problème avec un bout de programme.
Ce que j'ai : - une liste de thèmes rangés dans une base de données - une page "précédente" sur laquelle j'ai un checkbox par thème
Ce que je veux faire : - si le thème a été coché, aller chercher dans la base données les éléments correspondants et les afficher sur la page "suivante"
Ce que j'ai essayé de faire : - j'ai fait une boucle while sur les thèmes. En faisant un isset($_POST['theme']) j'espérais pouvoir récupéré mes éléments.
Le PROBLEME : - comment faire varier la valeur de theme dans l'isset ??? J'ai essayé en utilisant une variable à l'intérieur des crochets du POST, ça n'a pas marché. J'ai aussi essayé ça : qui n'a pas marché :
$post = "_POST['".$theme."']"; if (isset(${$post})) ...
J'ai aussi essayé avec la variante : $post = "\$_POST['".$theme."']";
Je suis à court d'idées. Merci d'avance à ceux qui jetteront un oeil à mon problème. |
Malalam |
Le 27/03/2006 à 10:34 |
|

|
Hello,
tu devrais montrer ton bout de formulaire, aussi. Là je ne comprends pas bien comment tu as construits tes checkboxes. |
Jekkil |
Le 27/03/2006 à 11:13 |
|

|
Bonjour Malalam, Voici comment je présente mes checkbox :
<?
$retour = mysql_query("SELECT theme FROM theme ORDER by theme");
$don = mysql_fetch_array($retour);
// j'affiche les thèmes en plusieurs colonnes, ce qui explique les boucles for (j'ai au préalable compter le nombre de thèmes à l'aide d'une requête)
for ($part=1;$part<=4;$part++) {
for ($i=0;$i<$limit;$i++) {
?><label><input type="checkbox" name="<?echo $don['theme'];?>"/> <?echo $don['theme'];?></label>
<?
}
}
|
Malalam |
Le 27/03/2006 à 12:05 |
|

|
Pourquoi tu utilises des checkboxes ? je suppose qu'un seul thème doit être sélectionné, non ? Auquel cas il vaut mieux passer par des boutons radio. Bref...
<label><input type="checkbox" name="theme" value="<?php echo $don['theme'];?>"/> <?php echo $don['theme'];?></label>
Et tu récupères le thème coché dans $_POST['theme'] justement. (le dernier coché, ici)
Si tu veux donner la possibilkité d'en récupérer plusieurs :
<label><input type="checkbox" name="theme[]" value="<?php echo $don['theme'];?>"/> <?php echo $don['theme'];?></label>
et tu récupères dans un tableau $_POST['theme'] = array (...) tes thèmes cochés. |
Jekkil |
Le 27/03/2006 à 12:42 |
|

|
 On peut faire ça ? Ca simplifie vachement ! Merci beaucoup Malalam ! J'essaie ça dans l'après-midi... là, je dois filer en cours. J'avais pensé aux radios et si je les avais utilisés, je n'aurais pas eu ce problème. Mais je veux pouvoir choisir plusieurs thèmes en même temps, c'est pour ça que je dois rester sur checkbox. Je reviendrai poster un message pour dire si ça a bien marché.  |
Webdeb73 |
Le 27/03/2006 à 23:26 |
|

|
-- Webmaster de http://www.webmaster-debutant.net |
Jekkil |
Le 28/03/2006 à 17:56 |
|

|
Tout d'abord, merci Malalam : j'ai pu faire exactement ce que je voulais avec les checkbox.
Webdeb73 : Ok, je vais jeter un oeil. Il n'y a aucune raison pour que je suive pas ton conseil.
Merci à vous deux ! |
Webdeb73 |
Le 29/03/2006 à 09:43 |
|

|
Nouvelle précision concernant la différence mysql_fetch_array et mysql_fetch_assoc :
- mysql_fetch_array fait une copie du tableau retourné (cad 2 tableaux identiques) mais le premier est indexé avec des clé chiffrées commençant par 0 et le second est indexé par des index alphanumériques (ex: $don['theme']; ).
Donc il vaut mieux utiliser mysql_fetch_assoc dans ton cas afin d'éviter de la copie inutile de tableaux ( => optimisation ) ou bien utiliser mysql_fetch_array() avec MYSQL_ASSOC en second paramètre.
++ -- Webmaster de http://www.webmaster-debutant.net |
Anthony |
Le 29/03/2006 à 10:13 |
|
 Admin |
Salut,
ou encore mysql_fetch_row() qui reste encore plus rapide :-) -- 
|
Webdeb73 |
Le 29/03/2006 à 10:34 |
|

|
Webmaster a écrit :Salut,
ou encore mysql_fetch_row() qui reste encore plus rapide :-) mysql_fetch_row() n'est plus vraiment utilisé. -- Webmaster de http://www.webmaster-debutant.net |