id supérieur à 9

Par mirael86, il y a 11 ans


Bonjour,

Voilà mon problème, je suis en train de faire un module de recherche avec des suggestions relié à une BDD. Ça fonctionne très bien, mais dès que je clique sur une entré qui a un ID supérieur à 9 (ou à plusieurs chiffres), ça ne m'affiche que id?=9 à la place de id?=93.

<pre>
$query = $db->query("SELECT * FROM invites WHERE cid='".$_GET['cid']."' LIKE '%" . $queryString . "%' OR invit_name LIKE '%" . $queryString . "%' ORDER BY cid LIMIT 15");

            if($query) {
                while ($result = $query ->fetch_object()) {
                    $invit_name = $result->invit_name;
                    $identifiant = $result->cid;
                    echo "<a href=\"invites.php?cid={$identifiant['cid']}\" class=\"searchheading\">$invit_name</a>";
                }
                echo '<span class="seperator"><a href="">Plus de résultats en cliquant ici</a></span><br class="break" />';
            } else {
                echo 'Erreur dans la requête';
            }

</pre>

24 réponses

bugland, il y a 11 ans

Salut,
Dans la base de donnée ton champ id est de quel type ?

mirael86, il y a 11 ans

Salut,
Merci de répondre :)

cid -> Int(11) -> Primary key -> auto increment

bugland, il y a 11 ans

Et si coté php tu fais un var_dump($_GET['cid']) il te renvoie 9 ou 93 ?

mirael86, il y a 11 ans

Il me retourne 9

J'ai lu quelque part que ça pourrait-être à cause de ma requête... aussi, la connexion à la base de données se fait en MySQLi. C'est un code que j'ai récupérer sur un site.

je n'arrive pas coller mon code sur le site pour montrer ce que j'ai!

Je deviens fou avec cette histoire!

bugland, il y a 11 ans

Si c'est le $_GET['cid'] qui renvoi 9 c'est pas ta requète qui est en cause mais la récupération de ta valeur. Lorsque tu fais un var_dump($_GET['cid']) il te renvoi quoi exactement ? (typage et valeur)

mirael86, il y a 11 ans

string(9) "9"

Réédit:
excuse moi c'est string(1) "9"

bugland, il y a 11 ans

Et ton url ressemble à quoi par exemple ?

bugland, il y a 11 ans

Dans ce cas c'est normal qui récupère 9 car cela correspond à ton url. Il faut que ton url soit comme cela :
http://localhost:8888/mariage_photos/invites.php?cid=93

Et seulement là tu auras ta bonne valeur avec $_GET['cid'].

Donc ton problème est l'url!

mirael86, il y a 11 ans

oui je pense que ça vient de mon code de recherche... Le lien ne doit pas être bon, et je ne trouve pas le moyen de changer ça!

je te laisse regarder :

<p id="searchresults"> <?php $db = new mysqli('localhost', 'root', 'root', 'mariage'); if(!$db) { echo 'ERREUR de connexion à la base de données'; } else { if(isset($_POST['queryString'])) { $queryString = $db->real_escape_string($_POST['queryString']); if(strlen($queryString) >0) { $query = $db->query("SELECT * FROM invites WHERE invit_name LIKE '%" . $queryString . "%' ORDER BY cid LIMIT 15"); if($query) { while ($result = $query ->fetch_object()) { $invit_name = $result->invit_name; $identifiant = $result->cid; echo "<a href=\"invites.php?cid={$identifiant['id']}\" class=\"searchheading\">$invit_name</a>"; } echo '<span class="seperator"><a href="">Plus de résultats en cliquant ici</a></span><br class="break" />'; } else { echo 'Erreur dans la requête'; } } else { } } else { echo 'Erreur!'; } } ?> </p>
bugland, il y a 11 ans

Est ce que dans ton sql si tu executes directement cette requete est ce qu'il trouve quelque chose :
SELECT * FROM invites WHERE cid = 93 AND invit_name LIKE '%" . $queryString . "%' ORDER BY cid LIMIT 15

Et remplace $queryString par la valeur saisi.

mirael86, il y a 11 ans

Meme en faisant ça, ça me retourne encore 9

bugland, il y a 11 ans

Et en faisant juste ca :
SELECT cid FROM invites WHERE cid = 93

mirael86, il y a 11 ans

Toujours 9... tu vas devenir fou comme moi...

bugland, il y a 11 ans

Lol j'avoue qu'il est sympa ton problème.

On va essayé un truc, renomme temporairement le champ cid en id et exécute cette requete :
SELECT id FROM invites WHERE id = 93

mirael86, il y a 11 ans

Ben nan... c'est pareil!!

bugland, il y a 11 ans

Si cela se trouve ta table est erroné. C'est bizarre.

Tu travail sur mysql comme base de données ?

Pour éliminé le fait que cela puisse venir de la table duplique ta table sous un autre nom et effectue la même requete.

mirael86, il y a 11 ans

ouais je suis sur phpMyAdmin...j'ai pas l'impression que ce soit la table... je ne comprends pas!

j'ai reprendre mon code à zéro je crois

bugland, il y a 11 ans

Si sous phpMyAdmin il renvoie pas la bonne valeur c'est pas ton code qui pose problème du coups. C'est vraiment bizarre.

Le dernier truc a tester pour moi sinon après je sèche cela serait de tester sur une autre table qui possède un champ autoincrémente supérieur à 9 et de faire la requete qu'on a fait plus haut SELECT id FROM table WHERE id = 12

Et si cela renvoie bon c'est que ta table a un soucis. Tu travail en local ?

mirael86, il y a 11 ans

En fait à un autre endroit, je fais un lien vers le fameux cid 93 et ça marche bien!
Donc je ne crois pas que ce soit la table... enfin bref... je vais continuer à chercher... je te tiens au courant

bugland, il y a 11 ans

Ok bon courage ! Je suis curieux de sqvoir d'où cela vient du coups.

Edit : au faite quand je te disais d'exécuter la requete tu le faisais bien sous phpMyAdmin ou dans ton programme php ?

mirael86, il y a 11 ans

Bon j'ai réussi à m'en sortir! j'ai repris le code à zéro et j'ai changé ma requête et quelques variables!
Par contre j'ai un autre problème sur mon site et tu peux peut-être m'aider :
http://www.grafikart.fr/forum/topics/17193

StarTechs, il y a 11 ans

ça n'a peut être aucun rapport mais le fait que la valeur récupérée est une chaine de caractère ne choque personne ? :D

mirael86, il y a 11 ans

Voilà comment je m'en suis sorti :

if(strlen($queryString) >0) { $query = $db->query("SELECT * FROM invites WHERE invit_name LIKE '%" . $queryString . "%' ORDER BY cid LIMIT 15"); if($query) { $catid = 0; while ($result = $query ->fetch_object()) { echo '<a href="invites.php?cid='.$result->cid.'" class="searchheading">'; $invit_name = $result->invit_name; echo '<span>'.$invit_name.'</span>'; echo '</a>'; }