Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2011, 15h56   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
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 :
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>";
 
 
}
 
?>
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h12   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
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 !
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h22   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
mais oui bien sur.
désolé pour cette erreur stupide.
un regard extérieur est souvent nécessaire.

merci rawsrc
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h53   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
J'en ai profité pour reprendre ton code dans la foulée avec une meilleure lisibilité :
Code :
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; ?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h55.


 
 
 
 
Partenaires

Hébergement Web