[PHP/MySQL] probleme requete between

Résolu
Matii_75 Messages postés 22 Statut Membre -  
Matii_75 Messages postés 22 Statut Membre -
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
Configuration: Linux
Konqueror 3.5

4 réponses

  1. macgawel Messages postés 676 Statut Membre 89
     
    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
  2. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    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
  3. Matii_75 Messages postés 22 Statut Membre 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))
    0