Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3037 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  probleme de syntaxe?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de syntaxe?

n°1866604
chanteur06
Posté le 27-03-2009 à 11:59:31  profilanswer
 

Bonjour,
Voilà,je me demande pourquoi j'ai une erreur de variable indéfinie sur ce script en local avec WAMP et EASYPHP alors qu'il fonctionne tres bien en ligne (je l'ai repris pour modif en local).
 
wamp me donne une variable indéfinie
Notice: Undefined variable: spec_selectionne in C:\Program Files\wamp\www\dept\pagination3.php on line 242
 
voilà la fameuse: $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='$spec_selectionne' order by ville asc";
 
alors que deux lignes plus haut j'ai
    $spec_selectionne =$_POST['specialiste'];
 
 
en plus,j'ai une notice  use of an undefined constant "" assumed ""   qui correspondrait à ça
  <?php echo ($det_spec[$d]." ".à." " ); ?>...
 
En utilisant easyphp, j'ai encore plus d'erreur:
 
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\dept\pagination3.php on line 174
et
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\dept\pagination3.php on line 245
 
en plus de la meme variable indefinie signalée sur wamp....
Mais je comprends pas.
Je joins la partie du script
 

Code :
  1. if(isset($idr) && $idr != -1)
  2.     {
  3.         /* Création de la requête pour avoir les specialistes de ce departement */
  4.         $sql2 = "SELECT `id_specialiste`, `specialiste`,`ville`,`detail`".
  5.         " FROM `specialiste`".
  6.         " WHERE `id_departement` = ". $idr ."".
  7.         " ORDER BY `ville`;";
  8.         if($connexion != false)
  9.         {
  10.             $rech_spec = mysql_query($sql2, $connexion);
  11.             /* Un petit compteur pour les specialistes */
  12.             $nd = 0;
  13.             /* On crée trois tableaux pour les numéros et les noms des specialistes */
  14.             $code_spec = array();
  15.             $nom_spec = array();
  16.   $ville_spec = array();
  17.   $det_spec = array();
  18.             /* On va mettre les numéros et noms des specialistes dans les trois tableaux */
  19.             while($ligne_spec = mysql_fetch_assoc($rech_spec))
  20.             {
  21.                 array_push($code_spec, $ligne_spec['id_specialiste']);
  22.                 array_push($nom_spec, $ligne_spec['specialiste']);
  23.    array_push($ville_spec, $ligne_spec['ville']);
  24.    array_push($det_spec, $ligne_spec['detail']);
  25.                 $nd++;
  26.             }
  27.    /* Maintenant on peut construire la liste déroulante */
  28.             ?>
  29.     <select name="specialiste" id="specialiste" >
  30.       <?php 
  31.             for($d = 0; $d<$nd; $d++)
  32.             {
  33.                 ?>
  34.       <option value="<?php echo($nom_spec[$d]); ?>"<?php echo((isset($spec_selectionne) && $spec_selectionne == $code_spec[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_spec[$d]." " ); ?>
  35.       <br>
  36.       <br />
  37.   <?php echo ($det_spec[$d]." ".à." " ); ?>
  38.    <br>
  39.       <br />
  40.       <?php echo($ville_spec[$d]); ?></option>
  41.       <?php
  42.             }
  43. ?>
  44.     </select>
  45.     <?php
  46. }
  47.         /* Un petit coup de balai */
  48.         mysql_free_result($rech_spec);
  49.  }
  50.  ?>
  51.  
  52.     <input type="submit" name="ok" id="ok" value="Envoyer" />
  53.   <br />
  54. <?php
  55. if(isset($_POST['ok']) && isset($_POST['specialiste']) && $_POST['specialiste'] != "" )
  56. {
  57.     $spec_selectionne =$_POST['specialiste'];
  58. ?>
  59. <br />Votre choix<br /> <b><?php echo($spec_selectionne); ?></b>
  60. <?php
  61. }
  62. ?>
  63. <?php
  64. $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='$spec_selectionne' order by ville asc";
  65. $result = mysql_query($query);
  66. while($row = mysql_fetch_array($result, MYSQL_ASSOC))
  67. {
  68.    echo "<br>"."<strong>{$row['detail']}</strong>"." " ."<br>{$row['adresse']}"." "."{$row['code']}"." "."{$row['ville']}"." "." "."<br><b>{$row['tel']}"."<br></b> ";
  69. }


si quelqu'un voit pourquoi.....?
Merci beaucoup

mood
Publicité
Posté le 27-03-2009 à 11:59:31  profilanswer
 

n°1866632
macgawel
Posté le 27-03-2009 à 12:49:51  profilanswer
 

chanteur06 a écrit :

voilà la fameuse: $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='$spec_selectionne' order by ville asc";
 
alors que deux lignes plus haut j'ai
    $spec_selectionne =$_POST['specialiste'];


Oui, mais si je lis bien ton code, l'assignation se fait sous condition :

Code :
  1. if(isset($_POST['ok']) && isset($_POST['specialiste']) && $_POST['specialiste'] != "" )
  2. {
  3.     $spec_selectionne =$_POST['specialiste'];
  4.  
  5. ?>
  6. <br />Votre choix<br /> <b><?php echo($spec_selectionne); ?></b>
  7. <?php
  8. }
  9. ?>
  10. <?php
  11. $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste
  12. WHERE specialiste='$spec_selectionne' order by ville asc";


Pour les erreurs EasyPHP, il faudrait nous dire à quelle ligne ça correspond.
 
Et je dis "si je lis bien ton code" parce que c'est mal codé :
- Pour commencer, sois cohérent : <br> ou <br /> mais pas les deux. Et évite la balise <b> (dépréciée)
- Sans parler de modèle MVC, c'est bien de séparer un minimum la présentation du contenu. Parce que là, tu mélanges allégrement le code php avec le html.

n°1866633
olivthill
Posté le 27-03-2009 à 12:53:12  profilanswer
 

Citation :

voilà la fameuse: $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='$spec_selectionne' order by ville asc";

Au début, j'ai pensé au problème classique des simples quotes et des doubles quotes. Pour rappel, si un dollar se trouve quelque part entre deux simple quotes, il reste un dollar, alors que s'il se trouve entre deux double quotes, il est interprété comme étant le début du nom d'une variable. Mais le mieux est encore d'utiliser la concaténation avec le point. Donc, j'aurais essayé :

$query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='".$spec_selectionne."' order by ville asc";

Mais le message indique que $spec_selectionne n'est pas défini, donc cela veut dire que le programme atteint la requête sans passer par la ligne dans le if qui définit cette variable.


Message édité par olivthill le 27-03-2009 à 12:59:14
n°1866734
chanteur06
Posté le 27-03-2009 à 15:30:51  profilanswer
 

Non, ni le placement dans le If ni le point devant $ ne change klk chose...!
Le plus étonnant c'est que ça fonctionne sans erreur sur le site en ligne chez OVH...
edeelic.com

n°1866749
macgawel
Posté le 27-03-2009 à 15:49:00  profilanswer
 

chanteur06 a écrit :

Non, ni le placement dans le If ni le point devant $ ne change klk chose...!
Le plus étonnant c'est que ça fonctionne sans erreur sur le site en ligne chez OVH...
edeelic.com


 :heink:  
C'est ton code je l'ai repris tel que... Je ne vois pas trop comment tu peux le placer "dans" le IF sachant qu'il y est déjà.
 
Ce que je voulais dire, c'est :
En gros tu as

Code :
  1. if(isset($_POST['ok']) && isset($_POST['specialiste']) && $_POST['specialiste'] != "" ) {
  2.    $spec_selectionne =$_POST['specialiste'];
  3. }


SI ta condition n'est pas remplie, tu ne mets rien dans $spec_selectionne.
Du coup, $spec_selectionne n'est pas défini.
Du coup, tu as un message d'erreur Notice: Undefined variable: spec_selectionne.
 
1. Essaye de prendre le temps d'épurer ton code en dégageant d'un côté la présentation et de l'autre le code proprement dit (placé dans des fonctions que tu appelles dans la partie présentation).
2.Apprends à débugger un programme :
echo $mavariable; => te permet de voir si ce qu'elle contient est conforme à ce que tu attends
var_dump($mavariable); => pareil, mais détaille complétement le contenu de ta variable (y compris pour les tableaux et les objets)
 
En l'occurence, ici tu devrais vérifier le contenu de ton $_POST au début de ta page, le contenu de $spec_selectionne avant depasser ta requête, les requêtes et les résultats de tes requêtes...

n°1866777
chanteur06
Posté le 27-03-2009 à 17:00:22  profilanswer
 

C'est juste que les erreurs sont à décocher dans WAMP!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  probleme de syntaxe?

 

Sujets relatifs
Probleme de syntaxe phpPetit probleme de syntaxe pour utiliser du javascript en php
[Javascript] Problème simple de syntaxe ![Résolu] Problème de syntaxe?
[Perl] Problème de syntaxeproblème de syntaxe
Probleme pour écrire dans un fichier avec la fonction fwriterequête sql+php: problème de syntaxe
problème de syntaxeproblème de 'quote' dan sune syntaxe XML
Plus de sujets relatifs à : probleme de syntaxe?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR