if (isset($_POST['denomination']) && $_POST['denomination']!='')
$tabCondition['denomination'] = "'%" . $_POST['denomination'] . "%'";
Au niveau de la requête SQL, il faut remplacer = par LIKE (ce qui marchera aussi pour les autres)
// parcours du tableau pour écrire la chaine et placer les AND
$condition = "";
foreach ($tabCondition as $key=>$value) { $condition .= " AND $key LIKE '$value' " ; }
// création de la requete
$sql = "SELECT * FROM fournisseurs WHERE 1 $condition";
ou bien, pour ne pas généraliser sur toutes les conditions possibles, tu dois élaborer la bonne condition au niveau des if et éliminer le foreach :// Création des conditions du WHERE
$condition = "";
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$condition .= " AND denomination LIKE '%" . $_POST['denomination'] . "%' ";
if (isset($_POST['activite']) && $_POST['activite']!='')
$condition .= " AND activite = '" . $_POST['activite'] . "' ";
if (isset($_POST['localite']) && $_POST['localite']!='')
$condition .= " AND localite = '" . $_POST['localite'] . "' ";
// création de la requete
$sql = "SELECT * FROM fournisseurs WHERE 1 $condition";
<?php
$_POST['denomination']='aaa';
$_POST['activite']='bbb';
$_POST['localite']='ccc';
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$where['denomination'] = 'denomination LIKE \'%'.$_POST['denomination'].'%\'';
if (isset($_POST['activite']) && $_POST['activite']!='')
$where['activite'] = 'activite=\''.$_POST['activite'].'\'';
if (isset($_POST['localite']) && $_POST['localite']!='')
$where['localite'] = 'localite=\''.$_POST['localite'].'\'';
$sql = 'SELECT * FROM fournisseurs WHERE '.join(' AND ', $where);
echo $sql;
?>
Code : Tout sélectionner
<option selected="selected" value=""/></option>
Code : Tout sélectionner
<option selected="selected" value="*"/>Toutes</option>
if (isset($_POST['denomination']) && $_POST['denomination']!='')
??
dans mon code précédent, je n'avais pas intégré le cas où toutes les variables sont vides.Ce qui va donner :
SELECT * FROM fournisseurs WHERE 1 si la condition est vide
et
SELECT * FROM fournisseurs WHERE 1 AND .... AND .... quand il y a 1 ou plusieurs conditions.
<?php
$_POST['denomination']='';
$_POST['activite']='';
$_POST['localite']='';
$where['tout'] = '1';
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$where['denomination'] = 'denomination LIKE \'%'.$_POST['denomination'].'%\'';
if (isset($_POST['activite']) && $_POST['activite']!='')
$where['activite'] = 'activite=\''.$_POST['activite'].'\'';
if (isset($_POST['localite']) && $_POST['localite']!='')
$where['localite'] = 'localite=\''.$_POST['localite'].'\'';
$sql = 'SELECT * FROM fournisseurs WHERE '.join(' AND ', $where);
echo $sql;
?>
pour ta question 1 :
Code : Tout sélectionner
<option selected="selected" value=""/>Toutes</option>SELECT * FROM fournisseurs WHERE 1
Le code que tu as modifié ne marché deja pas chez moi :<?php
$_POST['denomination']='aaa';
$_POST['activite']='bbb';
$_POST['localite']='ccc';
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$where['denomination'] = 'denomination LIKE \'%'.$_POST['denomination'].'%\'';
if (isset($_POST['activite']) && $_POST['activite']!='')
$where['activite'] = 'activite=\''.$_POST['activite'].'\'';
if (isset($_POST['localite']) && $_POST['localite']!='')
$where['localite'] = 'localite=\''.$_POST['localite'].'\'';
$sql = 'SELECT * FROM fournisseurs WHERE '.join(' AND ', $where);
echo $sql;
?>
il me renvoie cette erreur :Code : Tout sélectionner
Notice: Undefined variable: where in C:\wamp\www\xxx\result.php on line 55
Warning: join() [function.join]: Invalid arguments passed in C:\wamp\www\xxx\result.php on line 55
SELECT * FROM fournisseurs WHERE You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1$sql = 'SELECT * FROM fournisseurs WHERE '.join(' AND ', $where);
Ce qui marchais pour moi tranquille c'est ça :// Création des conditions du WHERE
$condition = "";
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$condition .= " AND denomination LIKE '%" . $_POST['denomination'] . "%' ";
if (isset($_POST['activite']) && $_POST['activite']!='')
$condition .= " AND activite = '" . $_POST['activite'] . "' ";
if (isset($_POST['localite']) && $_POST['localite']!='')
$condition .= " AND localite = '" . $_POST['localite'] . "' ";
// création de la requete
$sql = "SELECT * FROM fournisseurs WHERE 1 $condition";
Merci.
<?php
// Déclaration du tableau $where
$where = array();
// Condition initiale d'un Where vrai
$where['tout'] = 1;
// Conditions pour Where
if (isset($_POST['denomination']) && $_POST['denomination']!='')
$where['denomination'] = 'denomination LIKE \'%'.$_POST['denomination'].'%\'';
if (isset($_POST['activite']) && $_POST['activite']!='')
$where['activite'] = 'activite=\''.$_POST['activite'].'\'';
if (isset($_POST['localite']) && $_POST['localite']!='')
$where['localite'] = 'localite=\''.$_POST['localite'].'\'';
// Requête SQL
$sql = 'SELECT * FROM fournisseurs WHERE '. join(' AND ', $where);
echo $sql;
?>SELECT * FROM fournisseurs WHERE 1 AND activite='toutes' AND localite='toutes'
toutes n'existe pas dans la table, je veux qu'il affiche tous les enregistrements en fait, de activité si Toutes est selectionnée et toutes les localités si toues est selectionnée.
<?php
// Déclaration du tableau $where
$where = array();
// Condition initiale d'un Where vrai
$where['tout'] = 1;
// Conditions pour Where
if (isset($_POST['denomination']) && trim($_POST['denomination']) !='' && strtolower(trim($_POST['denomination'])) != 'toutes')
$where['denomination'] = 'denomination LIKE \'%'.$_POST['denomination'].'%\'';
if (isset($_POST['activite']) && trim($_POST['activite']) !='' && strtolower(trim($_POST['activite'])) != 'toutes')
$where['activite'] = 'activite=\''.$_POST['activite'].'\'';
if (isset($_POST['localite']) && trim($_POST['localite']) !='' && strtolower(trim($_POST['localite'])) != 'toutes')
$where['localite'] = 'localite=\''.$_POST['localite'].'\'';
// Requête SQL
$sql = 'SELECT * FROM fournisseurs WHERE '. join(' AND ', $where);
echo $sql;
?> Code : Tout sélectionner
<img src="images/xx.jpg" alt="" />

Code : Tout sélectionner
<img src="chemin et nom du fichier image" />// Après exécution de la requête SELECT qui (entre autres) retourne les "url_logo"
$resultat = mysql_query($sql);
while ($resultat && $row = mysql_fetch_array($resultat)
// placer l'url_logo dans l'image HTML
echo '<img src="images/' . $row['url_logo'] . '" />';
// suite ...
}
Dans cet exemple, les fichiers images correspondant aux url_logo sont stockés dans le dossier "images/", donc, dans la base de données, l'url_logo représente le nom propre du fichier image (sans le chemin d'accès) ce qui permet une certaine liberté de stockage des fichiers images sans devoir mettre à jour la base à cause du changement d'emplacement.