Requête SQL et concaténation de $_POST
Résolu/Fermé
A voir également:
- Requête SQL et concaténation de $_POST
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Sql lister les tables ✓ - Forum Programmation
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
9 réponses
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
1 juil. 2010 à 10:45
1 juil. 2010 à 10:45
Dans chaque cas fais un echo de ta requête. Le problème "devrait" te sauter aux yeux...
nicolas59000
Messages postés
228
Date d'inscription
mercredi 2 septembre 2009
Statut
Membre
Dernière intervention
1 juillet 2010
124
1 juil. 2010 à 10:47
1 juil. 2010 à 10:47
Avant d'exécuter ta requête fais un echo $sql; et regarde ce qu'il ne va pas dans ta requête sur phpmyadmin
Ah je vois ça affiche toujours le post que j'ai sélectionné mais je sais pas trop comment régler ça. Autre question la suite de if en dessous est correct ?
Mes if sont tous faux en fait...je viens de voir ça. Je sais pas comment traiter les post un par un et à plusieurs...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
maka54
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
1 juil. 2010 à 11:06
1 juil. 2010 à 11:06
$query=mysql_query('SELECT COUNT(*) FROM modifications WHERE 1=1') or die(mysql_error()); if(isset($_POST['technicien'])&&$_POST['technicien']!="") $query.=" AND intervenant='".$_POST['technicien']."'"; tu va un peu trop vite ... $query='SELECT COUNT(*) FROM modifications WHERE 1=1'; if(isset($_POST['technicien'])&&$_POST['technicien']!="") $query.=" AND intervenant='".$_POST['technicien']."'";
çà marchera mieux comme çà déjà
pour ne pas repeter tes if :
$query = ''; foreach($_POST as $key => $value){ if($value != ''){ $query .= ' AND '.$key .' = "'.$value.'"'; } } if($query != ''){ $req = 'SELECT COUNT(*) FROM modifications WHERE (1 '.$query.')'; }
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
1 juil. 2010 à 11:06
1 juil. 2010 à 11:06
Il faut que tu réfléchisse au nombre de listes que tu as, aux nombre de tables que tu dois gérer et aux nombres de scenarii différents...
maka54 je ne comprend pas trop comment fonctionne le foreach dans mon cas.
Breub62 je te met le code avec les listes déroulantes :
Breub62 je te met le code avec les listes déroulantes :
<?php $demande="SELECT DISTINCT intervenant FROM modifications ORDER BY intervenant"; $result=mysql_query($demande); echo '<select name="technicien">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Date : '; $demande="SELECT DISTINCT date FROM modifications ORDER BY date"; $result=mysql_query($demande); echo '<select name="date">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Unité : '; $demande="SELECT DISTINCT unite FROM modifications ORDER BY unite"; $result=mysql_query($demande); echo '<select name="unite">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Secteur : '; $demande="SELECT DISTINCT secteur FROM modifications ORDER BY secteur"; $result=mysql_query($demande); echo '<select name="secteur">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'API : '; $demande="SELECT DISTINCT api FROM modifications ORDER BY api"; $result=mysql_query($demande); echo '<select name="api">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Equipement : '; $demande="SELECT DISTINCT equipement FROM modifications ORDER BY equipement"; $result=mysql_query($demande); echo '<select name="equipement">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Motif : '; $demande="SELECT DISTINCT motif FROM modifications ORDER BY motif"; $result=mysql_query($demande); echo '<select name="motif">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; echo 'Status : '; $demande="SELECT DISTINCT status FROM modifications ORDER BY status"; $result=mysql_query($demande); echo '<select name="status">'; echo'<option value="" selected="selected"></option>'; while($row = mysql_fetch_array($result)) { echo '<option value="'.$row[0].'">'.$row[0].'</option>'; } echo '</select><br /><br />'; ?>
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
1 juil. 2010 à 11:43
1 juil. 2010 à 11:43
Si j'ai bien compté tu 8 listes déroulantes soit :
0 sélectionnés : 1 cas
1 sélectionnés : 8 cas
2 sélectionnés : 8x7 cas
3 sélectionnés : 8x7x6 cas
4 sélectionnés : 8x7x6x5 cas
5 sélectionnés : 8x7x6 cas
6 sélectionnés : 8x7 cas
7 sélectionnés : 8 cas
8 sélectionnés : 1 cas
Ce qui fais 2482 scénarios possibles...
A toi de voir comment t'organiser...
0 sélectionnés : 1 cas
1 sélectionnés : 8 cas
2 sélectionnés : 8x7 cas
3 sélectionnés : 8x7x6 cas
4 sélectionnés : 8x7x6x5 cas
5 sélectionnés : 8x7x6 cas
6 sélectionnés : 8x7 cas
7 sélectionnés : 8 cas
8 sélectionnés : 1 cas
Ce qui fais 2482 scénarios possibles...
A toi de voir comment t'organiser...
maka54
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
1 juil. 2010 à 11:47
1 juil. 2010 à 11:47
foreach($_POST as $key => $value){ if($value != ''){ $query .= ' AND '.$key .' = "'.$value.'"'; } }
tu boucles sur tes $_POST et tu recupères la clé et la valeur
exemple avec
$_POST['technicien'] $key = 'technicien'; $valeur = 'la valeur de ton $_POST'; $query .= ' AND '.$key .' = "'.$value.'"'; -> $query .= ' AND technicien = "une_valeur"';
par contre je viens de voir que ton champ s'appelait intervenant, du coup, çà marchera pas, mais si tous tes champs du formulaire avait le meme nom que dans ta base, çà te ferait gagner un temps considérable ...
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
1 juil. 2010 à 11:42
1 juil. 2010 à 11:42
Pour cette partie là :
if(isset($_POST['status'])&&$_POST['status']!="") $query=" AND status='".$_POST['status']."'"; $nb_entrees = mysql_result($query,0,0);mysql_result ne fonctionne pas avec une chaîne de caractère ça devrait plutôt être :
if(isset($_POST['status'])&&$_POST['status']!="") $query=" AND status='".$_POST['status']."'"; $res = $requete=mysql_query($sql,$db); $nb_entrees = mysql_result($res,0,1);