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

Messages postés
22
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
12 février 2009
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Messages postés
671
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
85
0
Merci
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
Merci
met ".$id1."AND".$id2."
Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
97
0
Merci
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
0
Merci
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))