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>
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>';
}
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!
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)
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!
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>
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.
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
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.
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
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 ?
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
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 ?
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
ç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