problème avec le signe supérieur

problème avec le signe supérieur - PHP - Programmation

Marsh Posté le 10-04-2006 à 22:49:12    

Je souhaiterais que dans le cas où on clique sur un lien du menu dont l'id est supérieur à 20 il affiche son contenu.
mais ça ne marche pas
 

Code :
  1. switch ($choix)
  2.   {
  3.      
  4.        
  5.       case "id_page==num_page":
  6.           $sql="SELECT * FROM t_pages   JOIN t_menu WHERE id_page=num_page AND id_page=$choix";
  7.           $result=mysql_query($sql);
  8.           $val=mysql_fetch_array ($result);
  9.              echo "<span class=\"titre\">".$val["titre"]."</span>";
  10.              echo "<hr/>";
  11.             echo $val["contenu"];
  12.           break;
  13. [b][/b]
  14. case ">=20":
  15.          $sql="SELECT * FROM t_activites JOIN t_menu WHERE num_menu=id_menu AND id_menu=$choix";
  16.          $result=mysql_query($sql);
  17.           while ($val=mysql_fetch_array ($result))
  18.             {
  19.           echo "<span class=\"titre\">".$val["designation"]."</span>\n";
  20.           echo "<hr/>";
  21.           echo $val["contenu_act"];
  22.             }
  23.         break;
  24. }

 

Si je mets le chifre exact du choix à passer dans l'url il marche mais je ne vais pas faire un case pour chaque lien!
Quelqu'un a une solution?

Reply

Marsh Posté le 10-04-2006 à 22:49:12   

Reply

Marsh Posté le 10-04-2006 à 23:03:16    

Tu vas devoir utiliser un if pour les conditions de ce genre.

Reply

Marsh Posté le 10-04-2006 à 23:06:20    

pourquoi?
je dois faire que des if et elseif?

Reply

Marsh Posté le 10-04-2006 à 23:09:04    

parce que j'ai essayé mais si je mets une autre condition en plus par exemple > 30 et bien il bien au départ et dès que je clique sur un des liens il n'affiche plus que ceux >20 <30
...

Reply

Marsh Posté le 10-04-2006 à 23:34:42    

Citation :

if (!isset($choix))
      {
   $sql="SELECT * FROM t_pages WHERE titre='accueil'";
   $result=mysql_query($sql);
      }
       
   elseif (($choix)>20 && ($choix)<=30)    
   {
      $sql="SELECT designation, id_menu,num_page FROM t_menu JOIN t_activites WHERE id_menu=num_menu";
    $result=mysql_query($sql);
   
    }
  elseif (($choix)>=31)    
    {
     
    $sql="SELECT designation, id_menu,num_page FROM t_menu JOIN t_agenda WHERE id_menu=num_menu";
    $result=mysql_query($sql);
   
    }  
   else
      {
   $sql="SELECT designation, num_page,id_menu FROM t_menu WHERE num_page=$choix";    
  $result=mysql_query($sql);
     }
   
 
  while($val=mysql_fetch_array($result))    {
       echo "<a href=\"accueil.php?choix=".$val["id_menu"]."\">".$val["designation"]."</a><br/>\n";
    }  
   
  mysql_close();


 
donc voici que je teste avec les if et bien tout va bien pour >20 mais >=31 ne fonctionne pas il m'indique un erreur à la ligne en rouge si dessus.
merci pour votre aide!!
 
bon j'ai

Reply

Marsh Posté le 10-04-2006 à 23:45:36    

not valid mysql ressource ?

Reply

Marsh Posté le 10-04-2006 à 23:50:23    

yes!!
pourquoi ça fait ça?

Reply

Marsh Posté le 10-04-2006 à 23:59:47    

requete sql foireuse.
ton "SELECT ..." qui comporte une erreur.

Reply

Marsh Posté le 11-04-2006 à 00:01:23    

ta requête a foiré.
je ne suis pas sûr que ce soit ça, mais la syntaxe de ta requête n'est pas tout à fait correcte:
- tu oublie un ``;`` à la fin du SELECT
de plus:
- tu n'utilise pas mysql_real_escape($choix) pour protéger ta base de donnée
 
vérifie aussi que la base de donnée est bien connectée.
 
Pour avoir un descriptif de l'erreur, utilise la fonction mysql_error():
<? echo mysql_error(); ?>

Reply

Marsh Posté le 11-04-2006 à 00:07:45    

Je ne vois pas où j'ai oublié un ';'
je ne connais pas mysql_real_escape ($choix) ça fonctionne comment et ça sert à quoi?

Reply

Marsh Posté le 11-04-2006 à 00:07:45   

Reply

Marsh Posté le 11-04-2006 à 00:15:21    

Autant pour moi, $choix est un entier, donc:
$sql="SELECT designation, num_page,id_menu FROM t_menu WHERE num_page=".(int)$choix."[#FF0000];[#FF0000]";  
 
mysql_real_escape c'est pour une chaîne de caractères.
 
pour éviter qu'un internaute ne hacke ton site avec $choix=
0; drop t_menu;

Reply

Marsh Posté le 11-04-2006 à 15:57:48    

je ne comprends pas pourquoi je dois écrire mon SELECT comme ce que tu me dis ?  
mais bref ça ne résout pas le problème.

Citation :

  $sql="SELECT id_menu,designation,num_page FROM t_menu JOIN t_pages WHERE num_page=id_page AND num_page=$choix";    
  $result=mysql_query($sql);
   
  while($val=mysql_fetch_array($result))
    {
      echo "<a href=\"accueil.php?choix=".$val["id_menu"]."\">".$val["designation"]."</a><br/>\n";
    }
     
    if (($choix)>20 && ($choix)<=30)
      {
      $sql="SELECT * from t_menu JOIN t_activites WHERE num_menu=id_menu AND num_page=6";
      $result=mysql_query($sql);
        while($val=mysql_fetch_array($result))
    {
      echo "<a href=\"accueil.php?choix=".$val["id_menu"]."\">".$val["designation"]."</a><br/>\n";
    }
      }
    if (($choix)>=31 && ($choix)<=45)  
      {
      $sql="SELECT * from t_menu JOIN t_agenda WHERE num_menu=id_menu AND num_page=3";
      $result=mysql_query($sql);
        while($val=mysql_fetch_array($result)) // c'est la ligne 30    {
      echo "<a href=\"accueil.php?choix=".$val["id_menu"]."\">".$val["designation"]."</a><br/>\n";
    }
      }
     
    mysql_close();


 
donc j'ai réessayer en refaisant ma table et en réécrivant tout mais j'arrive au même problème  
pb "mysql_fetch_array(): supplied argument is not a valid MySQL result resource in mon fichier on line 30"  
bref comment faire??????
Je ne comprends pas!
 
 
 

Reply

Marsh Posté le 11-04-2006 à 16:20:50    

Parce que tu ne sais pas ecrire une jointure et donc tu as une erreur retournée par msql_query, et $result n'est pas un "resultat mysql valide"(mot pour mot hein ;) )

Reply

Marsh Posté le 11-04-2006 à 16:24:43    

alors pourquoi ça marche dans le premier cas et pas dans le deuxième?
la requête est la même c'est seulement la table qui change.
Comment tu l'écrirais?

Reply

Marsh Posté le 11-04-2006 à 16:44:49    

mysql.org : toute la syntaxe SQL, de nombreux exemples et contributions des utilisateurs


Message édité par nargy le 11-04-2006 à 16:45:21
Reply

Marsh Posté le 11-04-2006 à 20:26:06    

j'ai déjà vu mais rien qui répond à la question pourquoi dans le premier cas ça marche et pas le second?
dommage... j'aurais bien voulu savoir

Reply

Marsh Posté le 11-04-2006 à 22:24:15    

mets un mysql_error juste après chaque requête

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed