creation d'un bouton lien

Eléphanteau du PHP | 10 Messages

05 nov. 2007, 14:41

Voila j'ai une fonction qui me sert a afficher un menu de lien sous une forme texte basique, je voudrai y insérer des boutons pour pouvoir les mapper

voici ma fonction :
<?
function construit_menu_arborescent_cat(&$sortie_cat, &$selectionne_cat, $parent_cat=0, $indent_cat=-1)
{
         global $wwwroot, $catid;
         $indent_cat +=1;
		 if(is_array($catid)) $catid=0;
         // Recherche de tous les noeuds ayant $parent comme noeud parent
         $qid = mysql_query("SELECT id, parent_id, nb, nom_".$_SESSION['langue']." FROM peel_categories WHERE parent_id = $parent_cat AND etat = '1' ORDER BY position");
         // Si la requete a abouti
         if($qid){
            // Pour toutes les entr&eacute;es
            while($cat = mysql_fetch_array($qid)){
                  // Boucle pour ajouter l'indentation (une image vide)
                  // Pour aller plus loin on peut g&eacute;rer des lignes de suite
                  for($i=0;$i<$indent_cat;$i++){
                      $sortie_cat .= "<img src='$wwwroot/images/mnu_empty.gif' border=0>";
                  }
                  // Recherche d'enfant pour d&eacute;terminer l'aspect de l'icone (feuille ou dossier)
                  $fils_cat = mysql_query("SELECT 'id', 'parent_id', nom_".$_SESSION['langue']." FROM peel_categories WHERE 'parent_id' = ".$cat['id']." AND etat = '1' ORDER BY position");
				  $div_cat = 'mysql_num_rows($fils_cat)';
				  $value = mysql_query("SELECT nom_".$_SESSION['langue']." FROM peel_categories WHERE 'parent_id' = ".$cat['id']."");
                  // Si il y a des enfants
                  if ($div_cat) {
                      // Ajout de l'icone du dossier
                      $sortie_cat .= "<img src='$wwwroot/images/menplus.gif' border=0>&nbsp;";
                      // Ajout du lien (identique &agrave; construit menu)
                      $sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
					  $action = "$wwwroot/achat/index.php?catid=" . $cat['id'] ."";
                      // Test si le noeud est le noeud actif (id), si oui, ajoute du gras (plus visuel)
                      if($cat['id']=='$catid') $sortie_cat .= "<b>";
					  
                      // Ajoute le nom de la cat&eacute;gorie et d&eacute;bute un calque DIV ayant pour ID l'Id de la cat&eacute;gorie
                      $sortie_cat .=  html_entity_decode($cat['nom_'.$_SESSION['langue'].'']);
					  
					  $nb = calcul_nbprod_parcat($cat['id']);
					  
					  if (!empty($nb)) {$sortie_cat .= " (".$nb.") "; }
					  
					 $sortie_cat .= "</a></b><br /><DIV id=".$cat['id'];
                      // Recherche si le noeud fait partie de l'arborescence du noeud actif
                      parent_noeud_cat($cat['id'],'$catid', $actif_cat=0);
                      // Si Oui,
                      if(($cat['id'] == $catid) || ($actif_cat == 1)){
                          // Rends le calque visible
                          $sortie_cat.= " style=\"display:yes\">\n";
                      }
                      else{
                          // Sinon, rends le calque invisible
                          $sortie_cat.= " style=\"display:none\">\n";
                      }
                  }
                  // Sinon, c'est un document 
                  else{
                      // Ajoute l'image du document
                      $sortie_cat .= "<img src='$wwwroot/images/menminus.gif' border=0>&nbsp;";
                      // Ajoute le lien (identique &agrave; construit_menu)
                      $sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
                      // Si c'est la feuille active, la met en gras
                      if($cat['id']==$catid) $sortie_cat .= "<b>";
                      // Ajoute le nom
                      $sortie_cat .= html_entity_decode($cat['nom_'.$_SESSION['langue'].'']);
						$value = $cat['nom_'.$_SESSION['langue'].''];
					  $nb = calcul_nbprod_parcat($cat['id']);
					  
					  if (!empty($nb)) {$sortie_cat .= " (".$nb.") "; }
					  
					   $sortie_cat .= "</a></b><br />";
                  }
                  // Si c'est un noeud (cat&eacute;gorie)
                  if($div_cat){
                     // Appel r&eacute;cursif pour ajout des enfants
                     construit_menu_arborescent_cat($sortie_cat, $selectionne_cat, $cat['id'], $indent_cat);
                      
			?>
				<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 ALIGN="CENTER">
				<TR><TD>
				<FORM ACTION="<? $action ?> ">
				<INPUT TYPE="SUBMIT" VALUE="<? $value ?>"></TD>
				</FORM></TR>
				</TABLE>
			<?
				echo $value;
			  	echo $action;
					  //Ferme le calque
                     $sortie_cat.="</div>";
                  }
            }
         }
}
comme vous pouvez le voir dans les dernières ligne j'ai inséré le bouton, mais lees variables "$action" et "$value" ne sont pas prises en compte et "$value" ne recoit pas la bonne valeur :

$action -> http://www.basebio.jcrinformatique.fr/a ... p?catid=62 (ca c'est bon mais le lien ne fonctionne pas pour le bouton)

et

$value -> Resource id #22 (je ne vois pas a quoi ca correspond, il doit manquer une commande pour recupérer le nom de la catégorie correspondante)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 15:11

Il te manque tout simplement des "echo" pour afficher les variables.

Pour le "Resource id #22" c'est aussi normal puisque tu oublies une étape... la lecture du résultat de la requête mysql_query() avec mysql_fetch_assoc() ou autre

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 10 Messages

05 nov. 2007, 15:28

en fait je ne veux pas afficher mes variables, j'en ai besoin pour faire fonctionner mon bouton, c'est lui qui affiche le nom de la categorie et qui renvoi sur la page de cette derniere

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 15:32

Certes...
<INPUT TYPE="SUBMIT" VALUE="<? $value ?>">
manque tout de même un echo.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

05 nov. 2007, 18:43

ok je commence a voir mais j'ai quand un sacré zone d'ombre : le fameux echo sur quoi dois-je le faire ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 18:49

:lol:
la variable 8-|
echo $variable;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 10 Messages

05 nov. 2007, 18:51

dsl j'avais oublier de me reconnecter ...

voila j'ai changer quelques petites choses au niveaux du bouton

Code : Tout sélectionner

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 ALIGN="CENTER"> <TR><TD> <FORM ACTION="<? echo $action; ?> "> <INPUT TYPE="SUBMIT" VALUE="<? echo $value; ?>"></TD> </FORM></TR> </TABLE>
je ne pense qu'il me faille faire un echo pour l'action mais c'est le seul moment ou j'obtien quelquechose ... par contre j'ai tester "mysql_query" et mysql_fetch_assoc" pas tres concluant

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 18:55

Non mais le echo sert à construire le code source de la page qui sera interprétée par ton navigateur.
Si tu ne fais pas de "echo" tu n'auras rien dans le code source donc pas d'action à exécuter.

Pour le code montre nous ce que tu as essayé.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 10 Messages

05 nov. 2007, 19:08

en fait j'ai tester le echo dans le bouton comme ci-dessus

puis là j'en suis à :
<?
function construit_menu_arborescent_cat(&$sortie_cat, &$selectionne_cat, $parent_cat=0, $indent_cat=-1)
{
         global $wwwroot, $catid;
         $indent_cat +=1;
		 if(is_array($catid)) $catid=0;
         // Recherche de tous les noeuds ayant $parent comme noeud parent
         $qid = mysql_query("SELECT id, parent_id, nb, nom_".$_SESSION['langue']." FROM peel_categories WHERE parent_id = $parent_cat AND etat = '1' ORDER BY position");
         // Si la requete a abouti
         if($qid){
            // Pour toutes les entr&eacute;es
            while($cat = mysql_fetch_array($qid)){
                  // Boucle pour ajouter l'indentation (une image vide)
                  // Pour aller plus loin on peut g&eacute;rer des lignes de suite
                  for($i=0;$i<$indent_cat;$i++){
                      $sortie_cat .= "<img src='$wwwroot/images/mnu_empty.gif' border=0>";
                  }
                  // Recherche d'enfant pour d&eacute;terminer l'aspect de l'icone (feuille ou dossier)
                  $fils_cat = mysql_query("SELECT 'id', 'parent_id', nom_".$_SESSION['langue']." FROM peel_categories WHERE 'parent_id' = ".$cat['id']." AND etat = '1' ORDER BY position");
				  $div_cat = 'mysql_num_rows($fils_cat)';
				  $value = mysql_query("SELECT nom_".$_SESSION['langue']." FROM peel_categories WHERE 'parent_id' = ".$cat['id']."");
                  // Si il y a des enfants
                  if ($div_cat) {
                      // Ajout de l'icone du dossier
                      $sortie_cat .= "<img src='$wwwroot/images/menplus.gif' border=0>&nbsp;";
                      // Ajout du lien (identique &agrave; construit menu)
                      $sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
					  $action = "$wwwroot/achat/index.php?catid=" . $cat['id'] ."";
                      // Test si le noeud est le noeud actif (id), si oui, ajoute du gras (plus visuel)
                      if($cat['id']=='$catid') $sortie_cat .= "<b>";
					  
                      // Ajoute le nom de la cat&eacute;gorie et d&eacute;bute un calque DIV ayant pour ID l'Id de la cat&eacute;gorie
                      $sortie_cat .=  html_entity_decode($cat['nom_'.$_SESSION['langue'].'']);
					  
					  $nb = calcul_nbprod_parcat($cat['id']);
					  
					  if (!empty($nb)) {$sortie_cat .= " (".$nb.") "; }
					  
					 $sortie_cat .= "</a></b><br /><DIV id=".$cat['id'];
                      // Recherche si le noeud fait partie de l'arborescence du noeud actif
                      parent_noeud_cat($cat['id'],'$catid', $actif_cat=0);
                      // Si Oui,
                      if(($cat['id'] == $catid) || ($actif_cat == 1)){
                          // Rends le calque visible
                          $sortie_cat.= " style=\"display:yes\">\n";
                      }
                      else{
                          // Sinon, rends le calque invisible
                          $sortie_cat.= " style=\"display:none\">\n";
                      }
                  }
                  // Sinon, c'est un document 
                  else{
                      // Ajoute l'image du document
                      $sortie_cat .= "<img src='$wwwroot/images/menminus.gif' border=0>&nbsp;";
                      // Ajoute le lien (identique &agrave; construit_menu)
                      $sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
                      // Si c'est la feuille active, la met en gras
                      if($cat['id']==$catid) $sortie_cat .= "<b>";
                      // Ajoute le nom
                      $sortie_cat .= html_entity_decode($cat['nom_'.$_SESSION['langue'].'']);
						$value = mysql_query($cat['nom_'.$_SESSION['langue'].'']);
					  $nb = calcul_nbprod_parcat($cat['id']);
					  
					  if (!empty($nb)) {$sortie_cat .= " (".$nb.") "; }
					  
					   $sortie_cat .= "</a></b><br />";
                  }
                  // Si c'est un noeud (cat&eacute;gorie)
                  if($div_cat){
                     // Appel r&eacute;cursif pour ajout des enfants
                     construit_menu_arborescent_cat($sortie_cat, $selectionne_cat, $cat['id'], $indent_cat);
                      
			?>
				<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 ALIGN="CENTER">
				<TR><TD>
				<FORM ACTION="<? $action ?> ">
				<INPUT TYPE="SUBMIT" VALUE="<? echo $value; ?>"></TD>
				</FORM></TR>
				</TABLE>
			<?

			  	echo $action;
					  //Ferme le calque
                     $sortie_cat.="</div>";
                  }
            }
         }
}	
	

Eléphanteau du PHP | 10 Messages

06 nov. 2007, 14:57

En ce qui concerne ma variable $value elle prend sa valeur à deux moments pour me donner le résultat suivant : "Resource id #.."
<?
$value = mysql_query("SELECT nom_".$_SESSION['langue']." FROM peel_categories WHERE 'parent_id' = ".$cat['id']."");

$value = mysql_query($cat['nom_'.$_SESSION['langue'].'']);
?>
pour la variable $action elle a bien la bonne valeur (la page que doit afficher le navigateur lorsqu'on clique sur le bouton) mais le lien ne s'effectue pas

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 nov. 2007, 17:45

Je constate que tu n'as pas suivis les conseils
Il te manque tout simplement des "echo" pour afficher les variables.

Pour le "Resource id #22" c'est aussi normal puisque tu oublies une étape... la lecture du résultat de la requête mysql_query() avec mysql_fetch_assoc() ou autre
Non mais le echo sert à construire le code source de la page qui sera interprétée par ton navigateur.
Si tu ne fais pas de "echo" tu n'auras rien dans le code source donc pas d'action à exécuter.
Pour la redirection c'est le code source qui compte.
Pour la récupération de la valeur de la requête tu dois passer par une fonction de lecture proposée.
$value = mysql_query($cat['nom_'.$_SESSION['langue'].'']);
ne veut rien dire

Je n'ai rien d'autre à ajouter pour l'instant :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 10 Messages

10 nov. 2007, 15:44

en ce qui concerne la recupération du nom de la categorie et de son affichage, c'est ok, et en fait c'etait plus simple que sur ce qu'on etait parti
<?
$value =  html_entity_decode($cat['nom_'.$_SESSION['langue'].'']);
?>
par contre j'ai tester plusieurs solution pour la redirection mais il m'est impossible de faire rediriger l'action sur la page désirée
et j'ai du mal à saisir ce que voulez me faire faire en disant :
Non mais le echo sert à construire le code source de la page qui sera interprétée par ton navigateur.
Si tu ne fais pas de "echo" tu n'auras rien dans le code source donc pas d'action à exécuter.

Eléphant du PHP | 61 Messages

10 nov. 2007, 21:45

Hmm juste comme ça... A quoi servent les guillemets ' et ' avant et après mysql_num_rows() ?
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

11 nov. 2007, 15:00

par contre j'ai tester plusieurs solution pour la redirection mais il m'est impossible de faire rediriger l'action sur la page désirée
et j'ai du mal à saisir ce que voulez me faire faire en disant :
Non mais le echo sert à construire le code source de la page qui sera interprétée par ton navigateur.
Si tu ne fais pas de "echo" tu n'auras rien dans le code source donc pas d'action à exécuter.
Il ta faut faire :
<FORM ACTION="<?php echo $action; ?> ">

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 10 Messages

12 nov. 2007, 21:25

pour le echo dans le "FORM" j'avais bien compris, mais ca ne fonctionne toujours pas, j'ai ecrit comme ce que tu as mis juste au dessus mais en fait je n'ai qu'un morceau de la variable

normalement je devrai obtenir : "http://basebio.jcrinformatique.fr/achat ... ?catid='un nombre'"

mais au lieu de ca j'ai quand je clik sur le boputon j'arrive à la page : "http://basebio.jcrinformatique.fr/achat/index.php

il me manque donc : "?cat='un nombre'"

je recupere la valeur de ma variable $action comme ceci :
$action = "$wwwroot/achat/index.php?catid=" . $cat['id'] . "";
peut-etre que toi tu verra se qui ne va pas