[Réglé] Comment mettre des boutons RADIO dans une boucle ?

Forum de développements privés.

Modérateur: Equipe

Règles du forum
A lire impérativement sur notre page : Règlement

[Réglé] [Réglé] Comment mettre des boutons RADIO dans une boucle ?

Messagepar Reddog » 04 Oct 2004 à 00:07

J'ai un problème, c'est d'ailleurs pour ça que je poste ce message ^^

Je vais essayer d'être le plus clair possible. J'ai un fichier PHP dans lequel je récupère à un moment des valeurs dans FORUMS_TABLE. Donc pas de soucis pour récupérer les valeurs et faire la boucle dans le TPL qui va avec. Sauf que pour ces valeurs, il faudrait que j'inclus un bouton RADIO dans la boucle pour donner ceci:

1er champ récupéré______O oui______O non
2e champ récupéré_______O oui______O non
3e champ récupéré_______O oui _____O non
4e champ récupéré_______O oui______O non


Ce que je n'arrive pas à faire, déjà, c'est d'avoir donc une boucle pour les valeurs des boutons RADIO. Je vois pas comment procéder pour mettre une ligne comme celle-ci

Code: Tout sélectionner
<td class="row2"><input type="radio" name="name_value" value="1" {YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="name_value" value="0" {NO} /> {L_NO}</td>


De façon à avoir 4 boutons radios, voir plus, indépendants les uns des autres.

Je galère pas mal, surtout que c'est la dernière étape du mod, tout le reste j'ai réussi à le faire fonctionner (du coup, je comprends mieux le SQL maintenant). Après il me restera à faire une UPDATE pour les valeurs recueillies dans cette boucle.

J'ai cherché un MOD utilisant un système similaire pour m'en inspirer et comprendre le fonctionnement, mais je n'ai rien trouvé.

Voilà, et merci.

++
Modifié en dernier par Reddog le 19 Oct 2004 à 18:58, modifié 1 fois.
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar Genova » 04 Oct 2004 à 00:13

Je n'ai pas tout compris là, tu veux affiche 4 sytème oui/non en bouton radio par forum, chaque ligne correpondant à un dex 4 champs du forum?
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?

Messagepar Reddog » 04 Oct 2004 à 00:18

j'ai mis 4 pour l'exemple, il peut en avoir plus, car il s'agit d'une boucle. Ce que j'essaye d'obtenir, c'est qu'il y ait autant de boutons radio que de valeurs affichées. Tu comprends mieux ?
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar korko » 04 Oct 2004 à 06:51

passe par un switch. Chaque boutons radios ayant des noms différents sont indépendants les uns des autres je crois. Donc si 2 boutons on name="X" et les autres c "Y" ils seront indépendants donc sa marche bien.

Donc un while dans le php et un switch dans le tpl :)
korko
Apprenti-floodeur
Apprenti-floodeur
 
Messages: 1334
Enregistré le: 09 Aoû 2003 à 14:48
Localisation: Entre 2 variables

Messagepar Genova » 04 Oct 2004 à 07:18

Dans ce cas admettons tu affihces une ligne par forum:
Code: Tout sélectionner
$sql = 'SELECR * FROM ' . FORUMS_TABLE;
if ( ! $db->sql_query($sql) )
{
   message_die(GENERAL_ERROR, 'Impossible de récupérer les forums, '', __LINE__, __FILE__, $sql);
}

while ( $forum = $db->sql_fetchrow($result) )
{
   $template->assign_block_vars('forum', array(
      'ID' => $forum['forum_id']
   ));
}

et dans ton .tpl:
Code: Tout sélectionner
<!-- BEGIN forum -->
<td class="row2"><input type="radio" name="name_value_{forum.ID}" value="1" {YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="name_value_{forum.ID}" value="0" {NO} /> {L_NO}</td>
<!-- END forum -->


Ca va tafficher un nombre d eligne égal à tn nom de forum, avec pour chaque couple de oui/non un nom de radion égal à "name_value_IDDUFORUM", par exemple name_value_3
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?

Messagepar Reddog » 04 Oct 2004 à 09:04

J'av testé ta manière Dark Genova (donc je suis sur la bonne voie), mais je me retrouvais bien avec le bon nombre de boutons radio, mais avec la posibilité de n'en cocher qu'un seul. Mais peut être que j'ai mal fait, je recommencerais auj.

Car si par exemple, il y a 4 affichages, les 4 boutons radios doivent pouvoir être modifiés, pas qu'un seul.

Pour la variable de name, c'est OK, j'avais fait comme ça. Mais pour la variable qui suit value="1" est qui est {YES} ou {NO}, elles ne doivent pas être aussi dynamiques ?

En tout cas merc i de vous intéresser au pb, je vais essayer plus posément auj ^^
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar Genova » 04 Oct 2004 à 22:03

La seule chose de dynamique dans ton histoire c'est le nom de tes boutons radion, chaque couple de bouton oui/non doit avoir le même name.
Pour qu'ils aient le même name le mieux est de leur donner un nom dynamique, contenant l'ID du forum :)
Par exemple:
name="forum_1" pour la premièere ligne
name="forum_2" pour la seconde ligne, etc...

En te débrouillant pour que le numéro passé soit l'ID du forum. L'utilité finale est de pouvoir en finalité, lorsque le type soumettra ton formulaire, pouvoir savoir pour chaque forum si un oui ou un nom a été coché :)
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?

Messagepar Dr DLP » 04 Oct 2004 à 22:09

Si tu ne peux en cocher qu'un cela signifie qu'ils ont le même non.
Pour YES et NO, je pense que ça sert à savoir quel bouton est coché non?
Dans ce cas ils doivent être dynamiques aussi.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar Reddog » 04 Oct 2004 à 22:56

J'imagine bien, mais j'ai beau essayer j'y arrive pas :?

J'essaye encore ce soir et demain, si je bloque, je mettrais le fichier PHP que j'ai fait pour que vous voyez en clair le pb.
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar Reddog » 18 Oct 2004 à 10:43

Bon, je reviens à la rescousse :D

Tout fonctionne, mais j'ai vraiment du mal avec la boucle. Je n'arrive pas à mettre à jour la bdd pour les valeurs de cette boucle.

Ne faites pas trop attention, le code n'est pas nettoyé. Le soucis, c'est que j'arrive bien à récupérer le nom des forums et les IDs je pense, ainsi (enfin) que d'avoir des boutons radio indépendants pour chaque forum affiché. Mais, hélas, je dois me gourer dans la partie update pour les variables à replacer dans la BDD. J'ignore comment m'y prendre (enfin un peu bien sûr, mais j'ai l'impression de tourner en rond sans voir l'erreur).

Pour info, j'essaye de remettre le MOD Last_X_Posts_Index compatible avec la 2.0.10

Je sais que pour certains, cette histoire de boucle est hyper simple, mais pour moi non. Comme je l'ai déjà dit, tout fonctionne (j'ai tout mis à jour, faut juste que je nettoie tout ça et que je mette des clefs de langues) sauf cette fichue boucle arf...

Je sais que je fais mal quelque part, mais où ???

Code: Tout sélectionner
$auth_lastxposts_yes = ( $new['auth_lastxposts'] ) ? ' checked="checked"' : '';
$auth_lastxposts_no = ( !$new['auth_lastxposts'] ) ? ' checked="checked"' : '';

$sql = "SELECT forum_id, forum_name, auth_lastxposts
	FROM " . FORUMS_TABLE;
if(!$result = $db->sql_query($sql))
{
	message_die(CRITICAL_ERROR, "Could not query config information in forum table", "", __LINE__, __FILE__, $sql);
}
else
{
	while ( $modx_forums = $db->sql_fetchrow($result) )
	{
		$template->assign_block_vars('modx_forums', array(
			'FORUM_NAME' => $modx_forums['forum_name'],
			'AUTH_LASTXPOSTS' => $modx_forums['auth_lastxposts'],
			'ID' => $modx_forums['forum_id'],
			'S_AUTH_LASTXPOSTS_YES' => $auth_lastxposts_yes,
			'S_AUTH_LASTXPOSTS_NO' => $auth_lastxposts_no
		));
		
		if( isset($HTTP_POST_VARS['submit']) )
		{
			$authmodx = $modx_forums['auth_lastxposts'];
			$idforum = $modx_forums['forum_id'];
			$sql= "UPDATE ". FORUMS_TABLE . " SET auth_lastxposts = '$authmodx' WHERE forum_id = '$idforum' ";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, "Failed to update auth forums configuration for lastXposts", "", __LINE__, __FILE__, $sql);
			}
		}
	}
}


Je vous passe aussi la partie TPL pour la boucle :

Code: Tout sélectionner
	<!-- BEGIN modx_forums -->
	<tr>
		<td class="row1">{modx_forums.FORUM_NAME}</td>
		<td class="row2">
			<table border="0" cellpadding="0" cellspacing="0">
				<tr>
					<td><input{S_AUTH_LASTXPOSTS_YES} name="auth_lastxposts_{modx_forums.ID}" type="radio" value="1" /></td>
					<td>Afficher les messages</td>
					<td>&nbsp;</td>
					<td><input{S_AUTH_LASTXPOSTS_NO} name="auth_lastxposts_{modx_forums.ID}" type="radio" value="0" /></td>
					<td>Ne pas afficher les messages</td>
				</tr>
			</table>
		</td>
	</tr>
	<!-- END modx_forums -->


Avez-vous une idée ?

Merci ;)

++
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar Genova » 18 Oct 2004 à 10:46

Juste un truc, c'est quoi ça?
Code: Tout sélectionner
         $authmodx = $modx_forums['auth_lastxposts'];
         $idforum = $modx_forums['forum_id'];

Et a quel endroi récupère tu tes variables $HTTP_POST_VARS ?
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?

Messagepar Reddog » 18 Oct 2004 à 11:06

Bah voui :oops:

J'ai un peut testé tout et n'importe quoi...En fait ces deux lignes c'est pour essayer de récupérer les valeurs de la boucle, mais comme je l'ai dit j'ai du mal à ce niveau là :(

Là ct ma dernière tentative en date, et c'est vrai que j'aurais pu enlever ces deux lignes (le code n'est pas nettoyé).

Pour résumé, avec quelles variables je peux récupérer les valeurs données aux boutons radios de chaque forum (dans la boucle) ?

Désolé si ma question est idiote, mais c'est vrai que là je suis un peu débile devant ce problème :P
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Messagepar Dr DLP » 18 Oct 2004 à 12:15

Code: Tout sélectionner
$sql = "SELECT forum_id, forum_name, auth_lastxposts 
   FROM " . FORUMS_TABLE; 
if(!$result = $db->sql_query($sql)) 
{ 
   message_die(CRITICAL_ERROR, "Could not query config information in forum table", "", __LINE__, __FILE__, $sql); 
} 
else 
{ 
   while ( $modx_forums = $db->sql_fetchrow($result) ) 
   { 
      $template->assign_block_vars('modx_forums', array( 
         'FORUM_NAME' => $modx_forums['forum_name'], 
         'AUTH_LASTXPOSTS' => $modx_forums['auth_lastxposts'], 
         'ID' => $modx_forums['forum_id'], 
         'S_AUTH_LASTXPOSTS_YES' => $auth_lastxposts_yes, 
         'S_AUTH_LASTXPOSTS_NO' => $auth_lastxposts_no 
      )); 
       
      if( isset($HTTP_POST_VARS['submit']) ) 
      { 
         $authmodx = $modx_forums['auth_lastxposts']; 
         $idforum = $modx_forums['forum_id']; 
         $sql= "UPDATE ". FORUMS_TABLE . " SET auth_lastxposts = '$authmodx' WHERE forum_id = '$idforum' "; 
         if ( !($result = $db->sql_query($sql)) ) 
         { 
            message_die(GENERAL_ERROR, "Failed to update auth forums configuration for lastXposts", "", __LINE__, __FILE__, $sql); 
         } 
      } 
   } 
}

La condition de validation n'a rien à faire dans une boucle:
Code: Tout sélectionner
$sql = "SELECT forum_id, forum_name, auth_lastxposts 
   FROM " . FORUMS_TABLE; 
if(!$result = $db->sql_query($sql)) 
{ 
   message_die(CRITICAL_ERROR, "Could not query config information in forum table", "", __LINE__, __FILE__, $sql); 
} 
else 
{ 
   while ( $modx_forums = $db->sql_fetchrow($result) ) 
   { 
      $template->assign_block_vars('modx_forums', array( 
         'FORUM_NAME' => $modx_forums['forum_name'], 
         'AUTH_LASTXPOSTS' => $modx_forums['auth_lastxposts'], 
         'ID' => $modx_forums['forum_id'], 
         'S_AUTH_LASTXPOSTS_YES' => $auth_lastxposts_yes, 
         'S_AUTH_LASTXPOSTS_NO' => $auth_lastxposts_no 
      )); 
   } 
}

// La soumission
if( isset($HTTP_POST_VARS['submit']) ) 
{
$sql = "SELECT forum_id, forum_name, auth_lastxposts 
   FROM " . FORUMS_TABLE; 
if(!$result = $db->sql_query($sql)) 
{ 
   message_die(CRITICAL_ERROR, "Could not query config information in forum table", "", __LINE__, __FILE__, $sql); 
} 
else 
{ 
   while ( $modx_forums = $db->sql_fetchrow($result) ) 
   { 
        $fid = $modx_forums['forum_id']; 
        $authmodx = $modx_forums['auth_lastxposts']; 
        // Récupération de la valeur
        $value = intval($HTTP_POST_VARS['auth_lastxposts_$fid']); 

         $sql= "UPDATE ". FORUMS_TABLE . " SET auth_lastxposts = '$authmodx' WHERE forum_id = '$fid' "; 
         if ( !($result = $db->sql_query($sql)) ) 
         { 
            message_die(GENERAL_ERROR, "Failed to update auth forums configuration for lastXposts", "", __LINE__, __FILE__, $sql); 
         } 
   } 
}
}

Par contre je ne vois pas ce que tu cherches à faire : dans ton code tu mets à jour un champ de la base de données avec une valeur récupérée dans la base de données, ça ne sert à rien non?
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar Genova » 18 Oct 2004 à 12:25

Pour opti;iser les reauetes il est pluot recommander d'utiliserun IN() ou une succession de WHERE ...OR
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?

Messagepar Reddog » 18 Oct 2004 à 12:58

Non en fait, je récupère au début la valeur déjà enregistrée précédemment ou par défaut lors de l'installation du MOD (cad valeur 0) et je l'affiche. Ensuite, si submit, j'update.

J'ai placé la condition de validation ici car en fait, il y en a plusieurs différentes dans la page php.

Et comme je vous l'ai dit, le code n'est pas encore optimisé et nettoyé, j'en suis encore aux tests.

je vais voir avec le code proposé, je pense avoir compris comment récupérer la valeur maintenant, merci ça m'aide énormément :wink:
Reddog
Maître des floodeurs
Maître des floodeurs
 
Messages: 2099
Enregistré le: 22 Fév 2004 à 10:58

Suivante

Retourner vers Développements privés

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

cron