Requête SQL avec GET_ via PDO

Coucou, ça fait plaisir de vous retrouver pour vous partager, une nouvelle fois une petite chose que je n'arrive pas à faire fonctionner !

L'objectif, initier des recherches SQL avec une variable url GET à partir d'une map, (qui à l'occurrence est une carte de France).
J'aimerais afficher des sociétés correspondants à un département, sur une même page (si possible).

<li id="text-3" class="widget-container widget_text"><h3 class="widget-title">Recherches par départements</h3>     <div class="textwidget"><br />
  <map name="carte_departementale" id="carte_departementale">
        <area shape="poly" coords="126,38,125,50,145,53,145,48,147,40,137,42" href="/admin?critere=60&pays=France" alt="Oise" title="Oise" >
        <area shape="poly"  coords="164,28,149,28,150,23,146,16,141,11,135,11,132,3,137,2,142,10,148,10,151,17,157,18,158,22,164,22" href="/admin?critere=59&pays=France" alt="Nord" title="Nord" >
        <area shape="poly" coords="145,27,136,23,126,20,122,18,123,7,131,4,135,11,137,14,142,14,142,17,145,17" href="/admin?critere=62&pays=France" alt="Pas-de-Calais" title="Pas-de-Calais" >

//*..etc...*//
<?php $critere = $_GET['critere']; ?>
 </map>
  <img name="carte_departementale" id="carte_departementale" src="images/carte.png" usemap="#carte_departementale" alt="Carte cliquable" title="Carte cliquable" height="259" width="281">



<?php
    try { 
      $base = new PDO('mysql:host=localhost; dbname=iplanet', 'root'. '');
      }
      catch(exception $e)  {
      die ('Erreur '.$e->getMessage());
      }
      $base->exec("SET CHARACTER SET utf8");
      $retour = $base ->query('SELECT id_societe, nom_societe, adr, adr2, cp, ville, tel, fax, mail FROM societe WHERE cp LIKE "'.$critere%.'"');
      echo "<table border=1><caption>Gestion des societes </caption>";
      ?>
<thead>
             <tr>
                <th> ID </th>
                <th>Nom</th>  
                <th>Adr</th>
                <th>Adr2</th>
                <th>CP</th>
                <th>Ville</th>
                <th>Tel</th>
                <th>Fax</th>
                <th>Mail</th>
              <!--<th><a onclick="popupas();"><img src="images/icoajout.png"></a></th>
              <th><a onclick="popuprs();"><img src="images/icorechercher.png"></a></th>-->
            </tr>
            </thead>
      <?php
      while ($data = $retour ->fetch()) {
      echo "<tr><td>".$data['id_societe']."</td>";
      echo "<td>".$data['nom_societe']."</td>";
      echo "<td>".$data['adr']."</td>";
      echo "<td>".$data['adr2']."</td>";
      echo "<td>".$data['cp']."</td>";
      echo "<td>".$data['ville']."</td>";
      echo "<td>".$data['tel']."</td>";
      echo "<td>".$data['fax']."</td>";
      echo "<td>".$data['mail']."</td>";
      ?>
       <td><a onclick="popupms(<?php echo $data['id_societe']; ?>);"><img src="images/icomodifier.png"></a> </td>
       <td><a onclick="popupss(<?php echo $data['id_societe']; ?>);"><img src="images/icosupprimer.png"></a> </td></tr>
      <?php
      }
      echo "</table>";
      $base = null;
      ?> 


Erreur listé :
Undefined Index pour la ligne suivante : <?php $critere = $_GET['critere']; ?>

Le procédé est mauvais, ou il y a une erreur de syntaxe ?

Merci pour votre aide,

1 réponse

  1. Uhm j'imagine que le premier extrait est la page admin.php non ?
    Si c'est le cas alors
    if(isset($_GET['critere'])){
    
        $critere = $_GET['critere'];
    
    }

    Devrai régler ton problème.
    1. Ah oui merci, c'est ça.donc, bon bah ça fonctionne... par contre petite erreur de syntaxe apparemment dans ma requête : $retour = $base ->query('SELECT id_societe, nom_societe, adr, adr2, cp, ville, tel, fax, mail FROM societe WHERE cp LIKE "'.$critere%.'"'); Qui est la syntaxe en équation avec mes autres requêtes et tout mon code de la page admin.php.

      j'ai mis ça à la place : "SELECT id_societe, nom_societe, adr, adr2, cp, ville, tel, fax, mail FROM societe WHERE cp LIKE '$critere%'" mais du coup il reconnait plus à nouveau la variable critère et me fait des erreurs de syntaxe sur tout le reste de mon code.

      Vous auriez une alternative sous la main ?
    2. Euhm, alors, il y a une chose basique en prog, si tu as besoin de mettre une chose dans la chaine, il faut la mettre "dans" la chaîne.

      LIKE "'.$critere.'%";);

      Si je ne me trompe pas. Si c'est le cas c'est une erreur basique que tu ne devrais pas avoir à demander d'aide pour, dans de cas là sors un peu de changer les idées et reviens avec la tête fraiche.
    3. Sublime text me coloriait les choses bien joliment alors je ne faisais pas attention. J'ai modifier à ta manière, mais le soucis soucis provient du coup avec la suite de mon code :

      Parse error: syntax error, unexpected '"'); ' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp\www\administration\admin.php on line 233

      Bon, c'est la pause MacDo, je m'y penche tout à l'heure. Merci pour ton aide bichette.^^