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 :

PHP, MySQL & $_GET


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut PHP, MySQL & $_GET
    Bonjour à tous, je cherche a recenser tous les employés de mon entreprise, pour cela j'ai créé une base de donnée mysql pour me permettre de visualiser les informations de chaque employé sur une page web, en passant par php.
    J'ai un fichier liste.php auquel je voudrai assigner plusieurs taches en fonction de l'url qui lui est associée. Je m'explique si l'url termine par /liste.php, je souhaite qu'il affiche toute la liste, sinon si l'url est le résultat d'une recherche par un formulaire et qu'elle se termine par /liste.php?nom=Dupont&prenom= je souhaite que la liste affiche tous ceux dont le nom est Dupont.
    Pour se faire j'ai réalisé ce petit bout de code :

    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
    <div id="struct">
    	<h1>Liste des employés</h1>
    	<p>
    	<?php
    		$db = mysql_connect('localhost','root');
    		mysql_select_db('employes',$db);
     
    		// on crée la requête SQL
    		if ( $_GET['prenom'] != NULL ) { $prenom = $_GET['prenom']; }
    		elseif ( $_GET['nom'] != NULL ) { $nom = $_GET['nom']; }
     
    		if ( $prenom != NULL ) {
    			if ( $nom != NULL ) { $sql = "SELECT * FROM employes WHERE prenom='$prenom' AND nom='$nom' ORDER by nom ASC"; }
    			else { $sql = "SELECT * FROM employes WHERE prenom='$prenom' ORDER by nom ASC"; }
    		}
    		elseif ( $nom != NULL ) {
    			if ( $prenom != NULL ) { $sql = "SELECT * FROM employes WHERE prenom='$prenom' AND nom='$nom' ORDER by nom ASC"; }
    			else { $sql = "SELECT * FROM employes WHERE nom='$nom' ORDER by nom ASC"; }
    		}
    		else { $sql = "SELECT * FROM employes ORDER by nom ASC"; }
     
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    		while($data = mysql_fetch_assoc($req))
    		{
    			// on affiche les informations de l'enregistrement en cours
    			echo '<a href=employe.php?id=' .$data['id']. '>' .$data['nom'].' '.$data['prenom'].')</a><br />';
    		}
     
    		mysql_close();
    		?> 
    	</p>
    </div>
    cependant, cela ne marche qu'a moitié, en effet lorsque ?prenom=XXX&nom=YYY , le cela fonctionne, mais lorsqu'ils n'existent pas, j'obtiens:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Notice: Undefined index: prenom in \www\employes\liste.php on line 33
    Notice: Undefined index: nom in \www\employes\liste.php on line 34
    Notice: Undefined variable: prenom in \www\employes\liste.php on line 36
    Notice: Undefined variable: nom in \www\employes\liste.php on line 40
    Il semblerait que la détection de l'existence ou non de ?prenom=XXX&nom=YYY ne se fasse pas comme ci dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		if ( $_GET['prenom'] != NULL ) { $prenom = $_GET['prenom']; }
    		elseif ( $_GET['nom'] != NULL ) { $nom = $_GET['nom']; }
    Quelqu'un aurait-il une idée?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Bonjour,

    et avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset( $_GET['prenom'] ) )
     { $prenom = $_GET['prenom']; }
    elseif ( isset($_GET['nom'])) 
    { $nom = $_GET['nom']; }
    Tu teste ainsi l'existence de la variable ...

  3. #3
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Tu peux tester la "non nullité" de la valeur en plus en utilisant empty au lieu de isset.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    ah bah très bien ça marche nickel, merci a vous!!
    par contre j'ai une autre petite question ^^
    Je souhaite également effectuer des recherche en fonction des domaines d'activité de chacun de mes employés (Service juridique, technique...)

    J'ai réussi pour le nom et prenom:
    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
    		// on crée la requête SQL
    		if (isset($_POST['prenom'])) {
    			$prenom = $_POST['prenom'];
    		}
    		if (isset($_POST['nom'])) {
    			$nom = $_POST['nom'];
    		}
     
    		if (isset($prenom) && isset($nom)) {
    			if ( $prenom != '' ) {
    				if ( $nom != '' ) { $sql = "SELECT * FROM employes WHERE prenom LIKE '%$prenom%' AND nom LIKE '%$nom%' ORDER BY nom ASC"; }
    				else { $sql = "SELECT * FROM employes WHERE prenom LIKE '%$prenom%' ORDER BY nom ASC"; }
    			}
     
    			elseif ( $nom != '' ) {
    				if ( $prenom != '' ) { $sql = "SELECT * FROM employes WHERE prenom LIKE '%$prenom%' AND nom LIKE '%$nom%' ORDER BY nom ASC"; }
    				else { $sql = "SELECT * FROM employes WHERE nom LIKE '%$nom%' ORDER BY nom ASC"; }
    			}
    		}
    		else { $sql = "SELECT * FROM employes ORDER BY nom ASC"; }
    Je suis obligé de tester si l'un des 2 champs est null et modifier la requête sql en fonction de la nullité ou non de ces 2 champs, ce qui ne semble pas être une approche optimisé du code ^^

    J'ai a présent une formulaire avec des checkboxes, juridique, economique, technique. Cependant, la requete sql risque d'être différente selon chaque recherche effectuée. Je m'explique, si je coche juridique et economique
    la requete sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM employes WHERE jur=1 AND eco=1 ORDER BY nom ASC"
    si je coche juridique et technique j'aurai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM employes WHERE jur=1 AND tech=1 ORDER BY nom ASC"
    si je coche economique et technique j'aurai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM employes WHERE tech=1 AND eco=1 ORDER BY nom ASC"
    je peux également ne rien cocher.. comment modifier cette requete sql en fonction des checkboxes ?

  5. #5
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Avec une condition genre if...elseif...else !!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    hmm, du coup comme j'ai fait avec les noms et prenoms plus haut?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Une fois que tu as coché tes checkbox et que tu as valider ton formulaire (donc envoie des données par $_POST ou$_GET), tu les récupères et tu construit ta condition where.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = "select * from employe";
    $condition="";
    $tri = "ORDER BY nom ASC";
    Tu teste ensuite si tu récupère bien tes checkbox (avec isset)
    Si elles sont cochées, tu t'en sert pour faire ta condition where

    $condition=...

    et une fois que c'est fini tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete .= $condition.$tri;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    oui, seulement je ne vois pas comment construire le Where a partir de mes checkboxes,

    j'ai ça pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	<form method="post" action="liste.php">
    		<div id="corps-droit">
    			<p>Domaines d\'activité :<br />
    			<input type="checkbox" name="choix8" id="finance" /> <label for="finance">Finance</label><br />
    			<input type="checkbox" name="choix9" id="immo" /> <label for="immo">Immobilier</label><br />
    			<input type="checkbox" name="choix10" id="reseaux" /> <label for="reseaux">Réseaux</label><br />
    			<input type="checkbox" name="choix11" id="robotique" /> <label for="robotique">Robotique</label><br />
    			<input type="checkbox" name="choix12" id="dev" /> <label for="dev">Développement</label><br />
    			<input type="checkbox" name="choix13" id="bdd" /> <label for="bdd">Bases de données</label><br />
    			<input type="checkbox" name="choix14" id="env" /> <label for="env">Environnement</label><br />	
    			</p>
    		</div>
    			<p style="text-align:center"><input type="submit" value="Envoyer"/> <input type="reset" value="Effacer" /></p>
    	</form>
    Je dois donc récupérer dans liste les cases cochées ou non. j'ai essayé ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?
     $where = 'WHERE';
     if(!empty($_POST['choix'.$i])) {
     $where = $where.' '.$_POST['choix'.$i].'=1 AND';
    } ?>
    quelque chose comme ça ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Oui sauf que j'aurais mis en name et id des tes checkbox, le nom du champs de ta bdd pour simplifier ta requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <input type="checkbox" name="finance" id="finance" /> <label for="finance">Finance</label><br />
    			<input type="checkbox" name="immo" id="immo" /> <label for="immo">Immobilier</label><br />
    			<input type="checkbox" name="reseaux" id="reseaux" /> <label for="reseaux">Réseaux</label><br />
    			<input type="checkbox" name="robotique" id="robotique" /> <label for="robotique">Robotique</label><br />
    			<input type="checkbox" name="dev" id="dev" /> <label for="dev">Développement</label><br />
    			<input type="checkbox" name="bdd" id="bdd" /> <label for="bdd">Bases de données</label><br />
    			<input type="checkbox" name="env" id="env" /> <label for="env">Environnement</label><br />
    (code valable en admettant que ce que tuas a mis dans name était bien le nom des colonnes ...)

    Après de l'autre côté, tu teste tes checkbox une par une et ca donne : (tu te crée un variable pour tester la nécéssité du mot " AND " dans ta requete)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $where = 'WHERE';
     if(!empty($_POST['robotique'])) 
    {
           $where = $where.' '.robotique .' = '.$_POST['robotique'].'=1';
    }
    Et ainsi de suite pour les autres ...

    Je pense que ca devrait marcher ....
    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
     
     if(!empty($_POST['immo'])) 
    {
    	$where = $where.' '.immo .' = '.$_POST['immo'].'=1';
    }
     if(!empty($_POST['reseaux'])) 
    {
    	if(strcmp($where,"where")!=0)
    	   $where .= " AND";
    	$where = $where.' '.reseaux .' = '.$_POST['reseaux'].'=1';
    }
     if(!empty($_POST['robotique'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where .= " AND";
    	$where = $where.' '.robotique .' = '.$_POST['robotique'].'=1';
    }
     if(!empty($_POST['dev'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where .= " AND";
    	$where = $where.' '.dev .' = '.$_POST['dev'].'=1';
    }
     if(!empty($_POST['bdd'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where .= " AND";
    	$where = $where.' '.bdd .' = '.$_POST['bdd'].'=1';
    }
     if(!empty($_POST['env'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where .= " AND";
    	$where = $where.' '.env .' = '.$_POST['env'].'=1';

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    en fait j'ai remplacé id par value dans mon formulaire,
    j'obtiens ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="choix1" value="finance" /> <label for="finance">finance</label><br />
    ou value correspond au nom du champ dans ma base sql.
    Ensuite, j'ai construit ma requete comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		elseif (isset($_POST['choix1'])) {
    			$where = 'WHERE';
    			for ( $i = 0 ; $i < 15 ; $i++ ) {
    				if(!empty($_POST['choix'.$i])) {
    					$where = $where.' '.$_POST['choix'.$i].'=1 AND';
    					echo $where;
    				}
    			}
    			$pos = strrpos($where, "AND");
    			echo substr($where,0,$pos);
    		}
    mais ça ne fonctionne pas, j'ai réussi a supprimer le dernier AND
    mais j'ai une erreur dans la requete, si je coche une case j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE finance=1 ANDWHERE finance=1
    si j'en coche 2 j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE finance=1 ANDWHERE finance=1 AND immo=1 ANDWHERE finance=1 AND immo=1
    Je ne comprend pas d'où vient l'erreur..

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    oui c'est une erreur de ma part :/

    il faut remplacer mes :
    par
    Je faisais une somme au lieu d'une concaténation :/

    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
     
     if(!empty($_POST['immo'])) 
    {
    	$where = $where.' immo = '.$_POST['immo'].'=1';
    }
     if(!empty($_POST['reseaux'])) 
    {
    	if(strcmp($where,"where")!=0)
    	   $where = $where+" AND";
    	$where = $where.' reseaux = '.$_POST['reseaux'].'=1';
    }
     if(!empty($_POST['robotique'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where =$where + " AND";
    	$where = $where.' robotique = '.$_POST['robotique'].'=1';
    }
     if(!empty($_POST['dev'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where = $where + " AND";
    	$where = $where.' dev = '.$_POST['dev'].'=1';
    }
     if(!empty($_POST['bdd'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where = $where + " AND";
    	$where = $where.' bdd = '.$_POST['bdd'].'=1';
    }
     if(!empty($_POST['env'])) 
    {
        if(strcmp($where,"where")!=0)
    	   $where .= $where + " AND";
    	$where = $where.' env = '.$_POST['env'].'=1';
    }
    Si tu as toujours le where qui se rajoute, réinitialise ta variable avant chaque écriture

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    non cela ne semble pas venir de la, j'ai supprimé le dans mon code et je l'ai remplacé par et lorsque j'execute le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		elseif (isset($_POST['choix1'])) {
    			$where = '';
    			for ( $i = 1 ; $i < 15 ; $i++ ) {
    				if(!empty($_POST['choix'.$i])) {
    					$where .= ' '.$_POST['choix'.$i].'=1 AND';
    					echo $where;
    				}
    			}
    			$pos = strrpos($where, "AND");
    			echo substr($where,0,$pos);
    		}
    j'obtient cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    finance=1 AND finance=1
    je ne comprend pas pourquoi il boucle deux fois.. hormis cela, mon code semble fonctionner

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    tu as coché combien de case ?

    redonne le code complet stp

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    une seule!

    et pour 2 cases j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    finance=1 AND finance=1 AND immo=1 AND finance=1 AND immo=1
    jpige pas ce qui cloche niveau algo

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    essaye comme je l'ai écrit avant de réinitialiser ta variable where avant d'y mettre quelque chose dedant

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    en fait j'ai trouvé pourquoi la requete était pas bonne, a chaque boucle j'ai
    donc forcément il réécri la requete a la suite de celle écrite lors du parcours de la boucle précédente!

    par contre dans le sens inverse, lorsque je souhaite afficher toutes les informations d'un employé, est il possible de créer une req sql qui recherche tous les champs définis a 1. Exemple si l'employé travaille dans l'environnement et le technique, je souhaite créer une variable qui contienne tout simplement les 2 noms Environnement Technique pour ensuite les afficher sur la page web.
    J'ai déjà ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while($data = mysql_fetch_assoc($req))
    {
    	echo '<h1>'.$data['prenom']. ' ' .$data['nom'].'</h1><br />';
    	echo '<p><img src="img/'.$data['id'].'.png" class="imageflottante" alt="Image flottante" width="80" height="100" /></p>';
    	echo '<p>Nom: '.$data['nom'].'<br />';
    	echo 'Prénom: '.$data['prenom'].'<br />';
    	// echo 'Domaines: ...<br />';
    	echo '</p><br /><br />';
    }
    edit: résolu, j'ai trouvé, je poste le code :

    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
    		$sql = "SELECT * FROM competences WHERE id ='$id'";
     
    		// on envoie la requête
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    		// on fait une boucle qui va faire un tour pour chaque enregistrement
    		while($data = mysql_fetch_array($req, MYSQL_NUM))
    		{
    			$comp = '';
    			$fields = mysql_list_fields("bdd", "table"); 
    			// on affiche les informations de l'enregistrement en cours
    			for ( $i = 1 ; $i <= 7 ; $i ++ ) {
    				if ( $data[$i] == 1 ) { $comp .= ' '.mysql_field_name($fields, $i); }
    			}
    			echo 'Compétences: '.strtoupper($comp).'<br />';
    		}
    par contre la précédente requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		elseif (isset($_POST['choix1'])) {
    			$where = '';
    			for ( $i = 1 ; $i < 15 ; $i++ ) {
    				if(!empty($_POST['choix'.$i])) {
    					$where .= ' '.$_POST['choix'.$i].'=1 AND';
    				}
    			}
    			$pos = strrpos($where,"AND");
    			$where = substr($where,0,$pos);
    			$sql = "SELECT * FROM eleves,competences WHERE eleves.id = competences.id AND $where ORDER BY nom ASC";
    		}
    ne fonctionne que lorsque je coche la premiere case, sinon cela affiche de mauvais résultat, existe il une condition pour tester tous les $_POST['choix'.$i] de 1 a i plutot que d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (isset($_POST['choix1']) || isset($_POST['choix2'] || ... || isset($_POST['choixi'])) ) {

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for($i=0;$i<7;$i++)
    {
       if (isset($_POST['choix'.$i]))
       {
        .......
       }
    }

  18. #18
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    tu te compliques la vie ... c'est pas mieux ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    else
    {
    	$i = 1;
    	$sql = "SELECT ici_liste_tous_les_champs_au_lieu_de_mettre_* 
    		FROM eleves e INNER JOIN competences c ON e.id = c.id 
    		WHERE 1=1";
    	while (!empty($_POST['choix'.$i]))
    	{
    		$sql .= ' AND '.$_POST['choix'.$i].'=1 ';
    		$i++;
    	}
    	$sql .= " ORDER BY nom ASC";
    }
    Evite d'utiliser * et liste plutôt chaque champ dans le SELECT et n'utilise JAMAIS de variable dans une chaine de caractères déclarée avec des doubles quotes : utilise des simples quotes et la concaténation

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33
  3. [php / mysql] pb if ( mysql_query() )
    Par dkmatt dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2004, 20h07

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