[PHP/MySQL] probleme requete between

Résolu/Fermé
Matii_75 Messages postés 22 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 12 février 2009 - 29 mai 2008 à 12:49
Matii_75 Messages postés 22 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 12 février 2009 - 29 mai 2008 à 14:08
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
A voir également:

4 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
29 mai 2008 à 12:56
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)
0
met ".$id1."AND".$id2."
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
29 mai 2008 à 13:04
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 ...
0
Matii_75 Messages postés 22 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 12 février 2009 1
29 mai 2008 à 14:08
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))
0