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 :

Compter et trier résultats sur requete SQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut Compter et trier résultats sur requete SQL
    Bonjour,

    j'aimerais savoir si il est possible (surement mais bon faut hélas que je m'avoue à moi meme que je ne connais pas technique) en une seule requete SQL d'obtenir le résultat suivant :

    Dans une table obtenir tous les enregistrement de cette table en fonction de l'id (avec donc un select COUNT(id) etc... ) mais aussi parmis ces résultats obtenir aussi tous les enregistrements tels que etat=0 par exemple.

    En fait j'ai besoin d'obtenir en sortie à la fois le total d'enregistrements (peu importe la valeur de etat) de cette table mais aussi tous les etat='0' pour chaque ligne de cette table.

    j'ai essaye un SELECT COUNT(etat=0) as mavaleur1, COUNT(*) as mavaleur2 mais ça ne marche pas.

    Evidemment je pourrais faire deux requetes mais peut etre existe t'il un meilleur moyen ?

    Merci à ceux qui sauront me guider.

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Salut,
    Tu peux joindre 2 requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM 
    (SELECT COUNT(id)
      FROM table) AS a,
    (SELECT COUNT(etat)
      FROM table
      WHERE etat=0) AS b
    WHERE <condition de jointure des 2 tables/requetes>
    Z.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    Merci pour la réponse je fais ça et je reviendrais confirmer mes remerciements car ça me semble correct !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 130
    Par défaut inserer dans base MySql et recup
    J ai bien etudie la chose mais je suis a bout
    j ai un formulaire qui envoi des donnees dans la base(mabase)
    voici le form
    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
    <form id="monForm" action="listMbaois.php" method="post" onSubmit="return jecouteLeForm()" >
        <fieldset>
            <legend>Informations personnelles</legend>
            <input type="hiden" id="_id" name="_id">
            <p>
                <label for="form_prenom">Prénom : </label>
                <input type="text" id="form_prenom" name="prenom" />
            </p>
            <p>
                <label for="form_nom">Nom : </label>
                <input type="text" id="form_nom" name="nom" />
            </p>
     
            <p>
                <label for="form_adresse">Adresse : </label>
                <input type="text" id="form_address" name="address" />
            </p>
            <p>
                <label for="form_code_postale">Code postal : </label>
                <input type="text" id="form_code_postale" name="code_postale" />
            </p>
            <p>
                <label for="form_ville">Ville : </label>
                <input type="text" id="form_ville" name="ville" />
            </p>
            <p>
                <label for="form_pays">Pays : </label>
                <select id="form_pays" name="pays">
                    <optgroup label="Europe">
                        <option value="es">Espagne</option>
                        <option value="be">Belgique</option>
                        <option value="fr">France</option>
                        <option value="it">Italie</option>
                    </optgroup>
                </select>
            </p>
            <p>
                <label for="form_tel">Téléphone : </label>
                <input type="text" id="form_tel" name="tel" />
            </p>
            <p>
                <label for="form_email">E-mail : </label>
                <input type="text" id="form_email" name="email" />
            </p>
        </fieldset> <p>
                <label class="form_label_nostyle">&nbsp;</label>
                <input type="submit" name="submit" class="soumettre"/>
                <input type="reset" name="del" class="annuler"/>
            </p>
    </form>
    et maintenant voici le code du script:
    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
    <?php
      header ('Content-type: text/html; charset=utf-8');
     // connection a la base en local 
     include("connex.inc.php");
     mysql_query("SEL NAMES 'utf-08'");
     // selection de la base
     $idcom=connex("listdmembres","mesparam");
     //Protection contre l insertion du code SQL
     function quote_smart($value)
    {
        if(get_magic_quotes_gpc())
        {
        $value=stripslashes($value);
        }
     
        return mysql_real_escape_string($value);
    }
     
     // votre requete d'insertion
     if (isset($_POST['form_prenom']) && isset($_POST['form_nom']) &&  isset($_POST['form_adresse']) &&  isset($_POST['form_code_postale']) && isset($_POST['form_ville']) && isset($_POST['form_pays']) && isset($_POST['form_tel']) && isset($_POST['form_email']))
     {
     	$nom= $_POST['form_prenom'];
    	$prenom= $_POST['form_nom'];
    	$adresse= $_POST['form_adresse'];
    	$code_postale= $_POST['form_code_postle'];
    	$ville= $_POST['form_ville']; //0a revoir
    	$pays= $_POST['form_pays'];
    	$email= $_POST['form_email'];
    	$tel= $_POST['form_tel'];
    	if (empty($prenom) || empty($nom) || empty($adresse)  || empty($code_postale) || empty($ville)  || empty($pays)|| empty($email)|| empty($tel))
     	{ echo "Veillez remplir les champs s'il vous plait";}
     
    	else{
    	 	 mysql_query(" INSERT INTO mbaois
    	  					SET nom='$nom',prenom='$prenom',adresse='$adresse',code_postale='$code_postale',ville='$ville' ,pays='$pays',email='$email',tel='$tel'
    				    ");
    		 echo mysql_error();
    	      }
     
     }
      $resultat=mysql_query("SELECT nom,prenom,adresse,code_postale,ville,pays,email,tel FROM mbaois ORDER BY nom");
      echo mysql_error();
     // fermeture de la connection
     
     mysql_close($idcom);
    ?>
    et le recupere de cette facon suivante:
    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
    <?php
      if(!$resultat)
        {
        echo "Lecture impossible";
        }
      while ($ligne =mysql_fetch_array($resultat)) {
     
        $form_nom = $ligne['nom'];
        $form_prenom = $ligne["prenom"];
        $form_adresse = $ligne["adresse"];
        $form_code_postale = $ligne["code_postale"];
    	  $form_ville = $ligne["ville"];
    	  $form_pays = $ligne["pays"];
    	  $form_email = $ligne["email"];
    	  $form_tel = $ligne["tel"];
     
     
    function firstToUpper($Sentence) 
    { 
       $lettres = str_split($Sentence); // On met le mot dans une liste 
       $lettres[0] = strtoupper($lettres[0]); // la fonction va prendre la premiere lettre pour le mettre en MAJUSCULE.
       $finition = implode('',$lettres); // apres ce qu'on fait, on emploi implode , parce que c est un mot pas un tebleau
       return $finition; 
    } 
     
          $nom=strtoupper($form_nom);  //On les noms en Majuscule 
          $prenom=firstToUpper($form_prenom);
     
        echo "<tr class='ligneListe' onmouseover='survolLigne(this)' onmouseout='finsurvolLigne(this)' onclick='selectionLigne(this)'>";
        echo "<td>".$nom."</td>";
        echo "<td>".$prenom."</td>";
    	  echo "<td>".$form_adresse."</td>";
    	  echo "<td>".$form_code_postale."</td>";
        echo "<td>".$form_ville."</td>";
    	  echo "<td>".$form_pays."</td>";
        echo "<td><a href='mailto:' color='#00009'>".$form_email."<a/></td>";
    	  echo "<td>".$form_tel."</td>";
        echo "</tr>";
      }
    ?>
    les donnees inserees a partir de phpMyAdmin sont recuperees mais celle envoyees par le form ne sont insere.
    alors qu il a aucune erreur

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    Hello nestam !
    il a du y avoir une erreur de ta part car tu voulais surement poster un nouveau message et pas répondre au mien. mais c'est pas grave.

    je pense que ton erreur (sauf s'il y'en a d'autres j'ai pas tout vérifié) vient de ta requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query(" INSERT INTO mbaois SET nom='$nom',prenom='$prenom',adresse='$adresse',code_postale='$code_postale',ville='$ville' ,pays='$pays',email='$email',tel='$tel'");
    les requetes d'insertions c'est plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (champ1,champ2,etc) VALUES ('valeur1','valeur2',etc)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 130
    Par défaut
    cela peut aussi se faire de cette maniere
    seulement apres le INSERT INTO table il faut aller a la ligne
    pour mettre
    SET
    Mais c est bon j ai resolu le probleme c etait a une non connexion a la base

Discussions similaires

  1. [SQL] Probleme exploitation résultat de requete SQL
    Par ghargamaster dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/09/2006, 01h52
  2. erreur sur requete sql
    Par boss_gama dans le forum ASP
    Réponses: 1
    Dernier message: 31/07/2006, 13h39
  3. [RegEx] regexp sur requete SQL
    Par wamania dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2006, 15h40
  4. doute sur requete SQL
    Par gwendk dans le forum ASP
    Réponses: 19
    Dernier message: 31/05/2006, 17h15
  5. Question performance sur requetes sql
    Par shinrei dans le forum ASP
    Réponses: 7
    Dernier message: 19/05/2006, 13h28

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