Probleme variable de session et requete sql

Probleme variable de session et requete sql - PHP - Programmation

Marsh Posté le 21-01-2006 à 16:33:48    

Bonjours les gents voila j'ai un probleme avec une apli php
 
voici le code de ma premiere page

Code :
  1. <?php
  2. session_start();
  3. $titre=$_POST['nom_divx_recherche'];
  4. //$nom=$_POST['nom_fichier'];
  5. //$duree=$_POST['duree'];
  6. //$nomsst=$_POST['nom_sst'];
  7. $code_erreur_recherche=0;
  8. $res=1;
  9. function connection_bd($serveur,$login,$passwd)
  10. {
  11.  $connect = mysql_connect("$serveur", "$login", "$passwd" ) or $code_erreur_recherche=5;
  12.  $res = mysql_select_db("gestion_divx",$connect) or $code_erreur_recherche=6;
  13.  return $connect;
  14. }
  15. function recherche_divx($titre,$connect)
  16. {
  17.  $query="SELECT * FROM `divx` WHERE `titre`=\"";
  18.  $resReq = mysql_query($query.$titre."\";" )
  19.   or $code_erreur_recherche=4;
  20.  return $resReq;
  21. }
  22.                 $connect=connection_bd("localhost", "divx", "divx" );
  23.  $resReq=recherche_divx($titre,$connect);
  24.  $_SESSION['res_recherche']=$resReq;
  25.  $_SESSION['retour_recherche']=$code_erreur_recherche;
  26.  header("Location: divx.php" );
  27. ?>


 
 
 
et la page divx.php
 

Code :
  1. <?php
  2. session_start();
  3. if(isset($_SESSION['retour_recherche']))
  4. {
  5.  $retour_recherche=$_SESSION['retour_recherche'];
  6.  $_SESSION['retour_recherche']="";
  7. }
  8. if(isset($_SESSION['res_recherche']))
  9. {
  10.  $res_recherche=$_SESSION['res_recherche'];
  11.  $_SESSION['res_recherche']="";
  12. }
  13. switch($retour_recherche)
  14. {
  15.  case "0":
  16.  {
  17.   $nb_res=mysql_num_rows($res_recherche);
  18.   if($nb_res!=0)
  19.   {
  20.    echo("<table border=2>" );
  21.    echo("<tr><td>Nom du divx</td><td>Nom du fichier</td><td>Duree</td><td>Nom sous titre</td></tr>" );
  22.    while($enreg = mysql_fetch_row($res_recherche))
  23.    {
  24.     echo("<tr>" );
  25.     for($i=1;$i<5;$i++)
  26.     {
  27.     echo("<td>".$enreg[$i]."</td>" );
  28.     }
  29.     echo("</tr>" );
  30.    }
  31.    echo("</table" );
  32.    echo("<br/><table><br/><br/>" );
  33.    echo("<form name=\"modif\" method=\"POST\" action=\"divx.php\">
  34.     <tr>
  35.      <td>Titre du divx:</td>
  36.      <td><input type=\"text\" name=\"nom_divx\"/></td>
  37.     </tr>
  38.     <tr>
  39.      <td>Nom du fichier:</td>
  40.      <td><input type=\"text\" name=\"nom_fichier\"/></td>
  41.     </tr>
  42.     <tr>
  43.      <td>Duree:</td>
  44.      <td><input type=\"text\" name=\"duree\"/></td>
  45.     </tr>
  46.     <tr>
  47.      <td>Nom sous titre:</td>
  48.      <td><input type=\"text\" name=\"nom_sst\"/></td>
  49.     </tr>
  50.     <tr>
  51.      <td colspan=2><input type=\"submit\" value=\"soumettre la modification\" name=\"modif\"></td>
  52.     </tr>
  53.     <input type=\"hidden\" name=\"ancien_titre\" value=\"".$_POST['nom_divx']."\">
  54.    </form>" );
  55.   }
  56.  }
  57. }
  58. ?>


 
 
et j'ai l'erreur suivante  
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/divx/page/divx.php on line 131
 
j'ai pas mis le code complet de la page divx et la fin du code n'est peut etre pas juste mais je butte sur cette erreur
 
quelqu'un peut il m'aider merci

Reply

Marsh Posté le 21-01-2006 à 16:33:48   

Reply

Marsh Posté le 21-01-2006 à 17:33:34    

bonjour,
 
il en faudrait un peu plus sur le code de ta page divx.php pour voir l'erreur de la ligne 131.
 
merci


---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 21-01-2006 à 17:49:26    

Message d'erreur que j'ai l'impression de voir passer 2 à 3 fois par jours tous les jours sur ce forum :
on exécute une requette et on en recoit le résultat dans une variable.
Mais ensuite, il faut toujours vérifier que la requette c'est bien passé et qu'on a reçu quelque chôse d'utilisable et non pas un simple "FALSE".
Si la requette merde, tu peux pas recevoir un résultat de requette.
 
Enfin bon, ca serait bien d'avoir au moins le bout de code où il y a eu l'erreur.

Reply

Marsh Posté le 21-01-2006 à 21:11:37    

mais la requete marche!!!!!!!!
j'ai verifier
Je pense que le probleme vien du faite que je passe le resultat par variable de session
 
et la ligne 131 correspond en faite a  $nb_res=mysql_num_rows($res_recherche);

Reply

Marsh Posté le 21-01-2006 à 23:09:15    

Tu ne peux pas passer une ressource de ce type par session car un enregistrement en tant que session utilise serialize, qui n'accepte pas les données de type ressource.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-01-2006 à 23:18:38    

donc en gros le seul moyen de recuperer mon resultat de ma requete c'est de tout remettre dans un tableau et de passez celui ci par la variable de session

Reply

Marsh Posté le 22-01-2006 à 11:54:41    

mais je vois pas comment faire

Reply

Marsh Posté le 22-01-2006 à 12:02:25    

J'ai quasiment rien lu de ton code, mais t'es obligé de faire ta requête sur la page qui se trouve *avant* celle qui s'en sert ?
 
Ton recherche_divx() ne peut pas être fait dans divx.php ?
 
Non parce que balancer le résultat d'un select (select * qui plus est, tu devrais éviter) par session, ça me paraît un brin bourrin... et probablement pas du tout indispensable.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-01-2006 à 12:38:24    

ben en faite je voulai dissocier les requetes et l'affichage car sinon sa va etre le merdier dans mon fichier divx.php
et le select * ne me renvoie que 4 champs

Reply

Marsh Posté le 22-01-2006 à 12:55:03    

Dis moi, tu ne conaitrais pas une fonction nomé include ou une nomé require?
Ca permet d'utiliser le code qu'est dans un autre fichier.
 
PS : C'est bien beau de vouloir dissocier données et affichage mais ca ne se fait pas en demandant à un navigateur de charger plusieurs pages web.

Reply

Sujets relatifs:

Leave a Replay

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