IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requête avec AND ne fonctionne pas [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut requête avec AND ne fonctionne pas
    bonjour

    J'essaye de faire une requête avec plusieurs AND. si je met un N° de master ($master) la fonction retourne le N° sans se soucier des AND titre.
    Si je ne mets rien dans le champ master la requête renvoie la liste complète toujours sans prendre en compte la requête.
    Peut être le problème vient des quote et double quote, je crois que je n'ai pas toujours bien saisi la nuance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
      include("base.php");
      $master=$_POST[master];
      if (empty($master)){
    	  echo"vide";
    	  $masterech=" titre1 COLLATE utf8_unicode_ci LIKE '%" . $titre1 . "%' AND titre2 COLLATE utf8_unicode_ci LIKE '%" . $titre2 . "%'";
      }
      else  $masterech="master='$master'  AND titre1 COLLATE utf8_unicode_ci LIKE '%" . $titre1 . "%' AND titre2 COLLATE utf8_unicode_ci LIKE '%" . $titre2 . "%'";
     
     $date=$_POST[date];
      $duree=$_POST[duration];
      $stockage=$_POST[lieu];
      $client=$_POST[client];
      $contact=$_POST[nomclient];
      $titre1=$_POST[titre1];
      $titre2=$_POST[titre2];
      $producteur=$_POST[prod];
      $realisateur=$_POST[reali];
      $monteur=$_POST[monteur];
      $truquiste=$_POST[truq];
      $compositeur=$_POST[compo];
      $musik=$_POST[mus];
      $formatorigine=$_POST[formorig];
      $standard=$_POST[standard];
      $speak1=$_POST[speak1];
      $speak2=$_POST[speak2];
      $v1=$_POST[v1];
      $v2=$_POST[v2];
      $contenu=$_POST[contenu];
      $observation=$_POST[obs];
      $count=0;
     
     
     
      echo "master".$master."<br>"
      .$duree.$stockage.$client.$contact.$titre1.$titre2.$producteur.$realisateur.$monteur.$truquiste.$compositeur.$musik.$formatorigine.$standard.$speak1.$speak2.$v1.$v2;
      echo"<br>".$contenu;
      echo"<br>".$observation;
      echo"<table bgcolor='#FFF'>";
    //recherche par un des champs
     $sqlafichmaster= "SELECT * FROM  films WHERE $masterech" ;
     
    $resultat1 = mysql_query($sqlafichmaster) or die(mysql_error());
    while ($master =mysql_fetch_array ($resultat1)){
    	$count=$count+1;
    	$id=$master['idfilm'];
    	$master2=$master['master'];
    	$titre1bis=$master['titre1'];
    	$titre2bis=$master['titre2'];
    	$duration=$master['duration'];
    	$date2=$master['date'];
     
    	echo" <tr><td class='champmasterlist'>M&nbsp; <a href='affich-master.php?fiche=$id'>".$master2."</a></td><td class='champtitrelist'><a href='affich-master.php?fiche=$id'>".$titre1bis."</a></td><td>".$duration."</td><tr><td ></td><td  class='champtitrelist2'>".$titre2bis."</TD><td>".$date2."</td><td></td>";
     
     
    }
     
    ?>

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Dans ton filtre en lignes 7 et 9 tu utilises $titre1 et $titre2 or ces deux variables ne sont définies que plus loin : lignes 16 et 17 !

  3. #3
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    mais oui bien sur.
    désolé pour cette erreur stupide.
    un regard extérieur est souvent nécessaire.

    merci rawsrc

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    J'en ai profité pour reprendre ton code dans la foulée avec une meilleure lisibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
     
    include "base.php";
     
    $where = array();
     
    if (isset($_POST['master']) && (strlen($_POST['master']))) {
       $where[] = "master='".mysql_real_escape_string($_POST['master'])."'";
    }
     
    if (isset($_POST['titre1'])) {
       $where[] = "titre1 LIKE '%".mysql_real_escape_string($_POST['titre1'])."%'";
    }
     
    if (isset($_POST['titre2'])) {
       $where[] = "titre2 LIKE '%".mysql_real_escape_string($_POST['titre2'])."%'";
    }
     
    $sql = 'SELECT * FROM  films';
    if ( ! empty($where)) {
       $sql .= ' WHERE '.implode(' AND ', $where);
    }
     
    mysql_query("SET NAMES 'utf8'"); // évite de trainer des COLLATE partout
    $data = mysql_query($sql);
     
    if ( ! $data) {
       die('Error : ' . mysql_error());
    }
     
    echo
       'master',
       $_POST['master'],
       '<br />',
       $_POST['duration'],
       $_POST['lieu'],
       $_POST['client'],
       $_POST['nomclient'],
       $_POST['titre1'],
       $_POST['titre2'],
       $_POST['prod'],
       $_POST['reali'],
       $_POST['monteur'],
       $_POST['truq'],
       $_POST['compo'],
       $_POST['mus'],
       $_POST['formorig'],
       $_POST['standard'],
       $_POST['speak1'],
       $_POST['speak2'],
       $_POST['v1'],
       $_POST['v2'],
       '<br />',
       $_POST['contenu'],
       '<br />',
       $_POST['obs'],
       '<table bgcolor="#FFF">';
     
    while($row = mysql_fetch_assoc($data)): ?>
       <tr>
          <td class="champmasterlist">M&nbsp; <a href="affich-master.php?fiche=<?php echo $row['idfilm']; ?>"><?php echo $row['master']; ?></a></td>
          <td class="champtitrelist"><a href="affich-master.php?fiche=<?php echo $row['idfilm']; ?>"><?php echo $row['titre1']; ?></a></td>
          <td><?php echo $row['duration']; ?></td>
          <td></td>
          <td class="champtitrelist2"><?php echo $row['titre2']; ?></td>
          <td><?php echo $row['date']; ?></td>
          <td></td>
       </tr>
    <?php endwhile; ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Ma requête avec condition ne fonctionne pas
    Par spike35s dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/03/2010, 06h13
  2. requête match qui ne fonctionne pas.
    Par sam01 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2006, 20h28
  3. Réponses: 16
    Dernier message: 01/02/2006, 19h09
  4. [MySQL] Requête update qui ne fonctionne pas
    Par Sylvain245 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/12/2005, 16h40
  5. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo