Des enregistrements qui disparaissent ?

Eléphant du PHP | 172 Messages

11 sept. 2005, 21:13

Bonjour à tous,

J'ai un phénomène étrange sur une table.

Depuis phpMyAdmin j'ai ajouté 2 enregistrements dans une table qui en comptait 39, il y en a donc maintenant 41.

Depuis phpMyAdmin, je peux lister tous les enregistrements sans aucun problème.

MAIS depuis le script php ci-dessous, je ne vois que 39 enregistrements.

Je ne comprends vraiment pas pourquoi.

Est-ce un bug connu ?
<?php
require("connect.php");
$result1 = mysql_query("SELECT * FROM `models` WHERE `model` LIKE '%'");
$nbenregistrements = mysql_num_rows($result1);
$urlsiteimage ='../images/';

echo "il y a $nbenregistrements articles dans la base";
echo "<table>";
while ($row=mysql_fetch_array($result1)){
echo "<tr><td><b>$row[model]</b></td><td><img src='" . $urlsiteimage . $row[picture] . "'></td></tr>";
}
echo "</table>";
?>

HD
Mammouth du PHP | 1181 Messages

11 sept. 2005, 21:16

tes nouveaux enregistrements ne repsectent probablement pas la condition
WHERE `model` LIKE '%'
(que je ne comprend d'ailleurs pas)
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphant du PHP | 172 Messages

11 sept. 2005, 21:20

tes nouveaux enregistrements ne repsectent probablement pas la condition
WHERE `model` LIKE '%'
(que je ne comprend d'ailleurs pas)
Salut,

Tu ne comprends pas LIKE '%' ? :shock:

LIKE 'A%' signifie tous les enregistrements commençant par A

LIKE '%' ne siginifie-t-il pas TOUS les enregistrements ?

Mammouth du PHP | 19672 Messages

11 sept. 2005, 21:35

LIKE '%' ne siginifie-t-il pas TOUS les enregistrements ?
Dans ce cas, cette clause est complètement inutile, le SELECT * comprenant déjà tous les enregistrements de toutes façon :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

11 sept. 2005, 21:44

Salut Cyrano,

Merci de t'intéresser à mon mystère !
Dans ce cas, cette clause est complètement inutile, le SELECT * comprenant déjà tous les enregistrements de toutes façon :-k
Je sais, mais avec:

$result1 = mysql_query("SELECT * FROM `models`");

J'ai exactement le même problème.

J'avais conservé le:

WHERE `model` LIKE '%'

Parce qu'ensuite je veux n'afficher que les enregistrements du type:

WHERE `model` LIKE '94%' (par exemple) :wink:

Eléphant du PHP | 493 Messages

11 sept. 2005, 21:46

alors le probleme ne vient pas de ta requete SQL... certainement de tes conditions d'affichage ou encore de tes insertions dans la bdd.

Eléphant du PHP | 172 Messages

11 sept. 2005, 21:52

alors le probleme ne vient pas de ta requete SQL... certainement de tes conditions d'affichage ou encore de tes insertions dans la bdd.
L'insertion dans la base des 2 nouveaux enregistrements a été faites via phpMyAdmin (comme les 39 autres d'ailleurs), donc l'insertion est en principe correcte.

Qu'entends-tu par conditions d'affichage ?

Ceci: $result1 = mysql_query("SELECT * FROM `models`"); ??

Mammouth du PHP | 19672 Messages

11 sept. 2005, 21:52

Dans ce cas, il faudrait échapper le second % qui doit être interprété comme un caractère et non comme un joker :

Code : Tout sélectionner

SELECT * FROM `models` WHERE `model` LIKE '%\%'
Mais tu as aussi les REGEXP en SQL qui pourraient t'aider, peut-être à explorer ? Tu as aussi dans cette même doc des éléments intéressants sur les clauses WHERE
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

11 sept. 2005, 21:59

Dans ce cas, il faudrait échapper le second % qui doit être interprété comme un caractère et non comme un joker :
Merci Cyrano,

Mais avec:
SELECT * FROM `models`
ça ne m'affiche que les 39 enregistrements, les 2 enregistrements que je viens de faire via phpMyAdmin n'apparaissent pas, pourquoi ? :cry:

HD
Mammouth du PHP | 1181 Messages

11 sept. 2005, 22:03

comme te l'a dit Vaedan
alors le probleme ne vient pas de ta requete SQL... (..) ou encore de tes insertions dans la bdd.
verifie alors ta bd et si les nouveaux enregistrements ont la meme structure que les anciens, s'il n y a pas de problemes au niveau de la cle primaire...
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphant du PHP | 172 Messages

11 sept. 2005, 22:09

J'ai vérifié ma BD avec:

CHECK TABLE `models`

réponse:

check status OK :roll:

Mammouth du PHP | 19672 Messages

11 sept. 2005, 22:16

Et si tu rajoutes des éléments, est-ce que leur nombre augmente ou bien ils disparaissent aussi à leur tour ?

Je téléphone immédiatement à Mulder et Scully, le cas est étrange :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

11 sept. 2005, 22:20

Si j'ajoute de nouveaux enregistrements depuis phpMyAdmin, phpMyAdmin me permet de les voir, les trier, phpMyAdmin me dit bien, que la table est composée de 41, puis 42, puis 43 enregistrements.

Je peux les éditer, les effacer depuis phpMyAdmin, MAIS lorsque je lance mon script PHP, ils ne sont pas là :roll:

Eléphant du PHP | 493 Messages

11 sept. 2005, 22:21

bah alors donne nous ton script ... là on y peut rien

Mammouth du PHP | 19672 Messages

11 sept. 2005, 22:21

Mais que fait la police ? :langue:

Dis, es-tu bien sûr de travailler sur la même table, voire sur la même base de données ? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: