[PHP/MySQL] probleme requete between

Résolu
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. 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))
    1. 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 ...
      
      1. 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)