[PHP/MySQL] probleme requete between [Résolu/Fermé]

Signaler
Messages postés
22
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
12 février 2009
-
Messages postés
22
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
12 février 2009
-
Bonjour,

Encore et toujours un petit soucis en Php ... cette fois ci je souhaite afficher les champs pour les identifiants n°xxx à yyy ...

J'ai donc un formulaire :

<form method="POST" action="recherche_id_bis.php">

                <p>Identifiant : </p>

                <input type="text" name="id1" size="20">
                <input type="text" name="id2" size="20">
                <input type="submit" value="rechercher">


Et mon code PHP :

$id=mysql_real_escape_string($_POST['id1']['id2']);

// Requete

$query = "SELECT id, source, date, mac, ip, epoch, texte FROM enregistrement WHERE id BETWEEN $id1 AND $id2;";

$result = mysql_query($query);

// Resultats

while($row = mysql_fetch_row($result))
{
$id = $row[0];

$source = $row[1];


Erreur : Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/stage/recherche_id_bis.php on line 53

4 réponses

Messages postés
671
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
87
Bonjour.

Erreur : Warning: mysql_fetch_row()

A priori, ta requête est incorrecte...
Affiche les valeurs de $id1, $id2 et $query, histoire de voir ce qu'il y a dedans.
Avec le BETWEEN, je suppose que ton champ id est une valeur numérique ? Essaye en mettant
BETWEEN intval($id1) AND intval($id2)
met ".$id1."AND".$id2."
Messages postés
528
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
Salut,

Dans ton script $id1 et $id2 n'existent pas, et tu définies $id d'une manière incorrecte.

Essai de remplacer
$id=mysql_real_escape_string($_POST['id1']['id2']);

par
$id1=mysql_real_escape_string($_POST['id1']);
$id2=mysql_real_escape_string($_POST['id2']);



De manière générale, quelques conseils :

- En phase de développement, placer au début du script php error_reporting(E_ALL) afin de voir toutes les erreurs même les moins critiques (variables non définies par exemple).
- quand un requête ne marche pas mettre un echo $requete quelque part pour voir la requête réellement envoyée au serveur de BD.
- Tester le retour de mysql_query,
Par exemple dans ton cas pour les 2 derniers points:
$result = mysql_query($query);
if(!$result){
echo "Impossible d'exécuter la requête $query";
die(mysql_error());
}
while ...
Messages postés
22
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
12 février 2009
1
Merci la solution est donc :

$idun=mysql_real_escape_string($_POST['idun']);
$iddeux=mysql_real_escape_string($_POST['iddeux']);

// Requete

$query = "SELECT id, source, date, mac, ip, epoch, texte FROM enregistrement WHERE id BETWEEN  $idun AND $iddeux;";

$result = mysql_query($query);

// Resultats

while($row = mysql_fetch_row($result))