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, SQL COUNT


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 134
    Points : 78
    Points
    78
    Par défaut PHP, MYSQL, SQL COUNT
    Bjr,

    J'ai 2 équipes de foot, 'pays1' et 'pays2' qui se sont rencontrées n fois. Je voudrais par une requête SQL, afficher le nombre 'n', sachant que ['pays1' vs 'pays2'] = ['pays2' vs 'pays1'].

    Par exemple, cette requête doit m'afficher le nombre d'oppositions entre la France et l'Angleterre, en considérant que France-Angleterre = Angleterre-France.

    (je sais pas trop quoi mettre après "from head2head")...


    J'ai déclaré ma variable en ne sachant pas trop quoi mettre après ma variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $compte= $bdd->prepare("SELECT COUNT('pays1' = :P1) FROM head2head WHERE 'pays2' = :P2");
            $compte->execute(array(
                'P1' => $_GET['pays1'], 
                'P2' => $_GET['pays2']
            ));
            ?>
    puis annoncé dans mon tableau, en ne sachant pas trop quoi afficher

    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
    <table border="0" width="50%">
                            <tr><form method="GET" action="">
                            <td>
                <SELECT name="pays1">
                <OPTION value="KSA">Arabie Saoudite</OPTION>
                <OPTION value="AFG">Afghanistan</OPTION>
                <OPTION value="BAN">Bangladesh</OPTION>
            </SELECT></td>
                                <td> 
                <SELECT name="pays2">
                <OPTION value="KSA">Arabie Saoudite</OPTION>
                <OPTION value="AFG">Afghanistan</OPTION>
                <OPTION value="BAN">Bangladesh</OPTION>
            </SELECT></td>
                                <td>
                <input type="submit" value="OK"/>
                    </td>
                                </form> 
                            </tr>
     
                            <?php
            while($resultat = $compte->fetch()){
                ?>
                <tr>
                    <td><?php echo $resultat['pays1'];?></td>
     
                    <td></td>
     
                    <td></td>
     
                </tr>
     
                            <?php } ?>
    Je cale complet.... ^^

    Merci beaucoup

    Sylvain

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    et cette requête, ça donne quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $compte= $bdd->prepare("SELECT COUNT(*) FROM head2head 
    WHERE 
       (`pays1`=:P1 and `pays2`=:P2)
    or (`pays1`=:P2 and `pays2`=:P1)
    ");
    $compte->execute(array(
                ':P1' => $_GET['pays1'], //n'oubli pas les deux points (:) avant P1 et P2
                ':P2' => $_GET['pays2']
            ));

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 134
    Points : 78
    Points
    78
    Par défaut
    Ca donne rien. Je débute en sql et je connais pas toutes les fonctions

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    1-l'attribut action dans la "form" doit contenir le chemin du fichier php, vers lequel les données seront envoyées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="GET" action="chemin_relatif_au_fichier_php">
    2-dès que les données sont bien reçues, il faut les stocker dans une variable, selon ton code t'utilise $compte mais c'est faux, il faut utiliser une autre variable (corrige ton code html).

    index1.php :
    Code html : 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
     
    <table border="0" width="50%">
    	<tr>
    	   <td><!-- la form dans la td et pas le contraire!-->
    		<form method="GET" action="test.php">
    			<SELECT name="pays1">
    				<OPTION value="KSA" >Arabie Saoudite</OPTION>
    				<OPTION value="AFG">Afghanistan</OPTION>
    				<OPTION value="BAN">Bangladesh</OPTION>
    			</SELECT>		
    			<SELECT name="pays2">
    				<OPTION value="KSA">Arabie Saoudite</OPTION>
    				<OPTION value="AFG">Afghanistan</OPTION>
    				<OPTION value="BAN">Bangladesh</OPTION>
    			</SELECT>
    			<input type="submit" value="OK"/>
    		</form>
    	</td>
     
        </tr>
     
    	<?php
            if(isset($_GET['data'])){
                    $the_data=unserialize($_GET['data']);
                    ?>
    		<tr>
    			<td>Compte :<?=$the_data['tout'];?></td>
     
    			<td>Pays 1 :<?=$the_data['pays1']?></td>
     
    			<td>Pays 2 :<?=$the_data['pays2']?></td>
    		</tr>
    	<?php }?>
    </table>

    test.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $bdd=new PDO('mysql:host=localhost;dbname=nom_de_la_base', 'ton_rout', 'ton_mot_de_passe', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    $compte= $bdd->prepare("SELECT COUNT(*) as tout FROM head2head 
    WHERE 
       (`pays1`=:P1 and `pays2`=:P2)
    or (`pays1`=:P2 and `pays2`=:P1)
    ");
    $compte->execute(array(
      ':P1' => $_GET['pays1'], //n'oublis pas les deux points (:) avant P1
      ':P2' => $_GET['pays2']//n'oublis pas les deux points (:) avant P2
    ));
    $data=$compte->fetch(PDO::FETCH_ASSOC);//stocker le résultat dans $data
    $data['pays1']=$_GET['pays1'];//on ajoute le paramètre pays1 dans $data
    $data['pays2']=$_GET['pays2'];//on ajoute le paramètre pays2 dans $data
    header('Location:index1.php?data='.serialize($data));//redirection vers la page du formulaire avec $data

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Apparemment, tu débutes aussi en HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <tr><form method="GET" action="">
                            <td>...
    On ne dois pas mettre de balise entre les <tr> et <td> d'une <table>.

    Cela dit, le formulaire n'a rien à faire dans la <table> non plus.
    Dernière modification par Invité ; 24/11/2018 à 12h44.

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Salut Sylvain.
    Toufik te donne toutes les billes pour y arriver.
    Pour comprendre d'abord le SQL, connecte-toi à ton PHPmyAdmin pour y voir plus clair...

    Et colle ceci dans ta fenêtre SQL, tu comprendras mieux.
    Joue avec les différents pays de façon à comprendre...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) as nb_matches_F_D
    FROM head2head
    WHERE 
       (`pays1`="ALLEMAGNE" and `pays2`="FRANCE")
    or (`pays1`="FRANCE" and `pays2`="ALLEMAGNE")
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 134
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    J'ai essayé ce que Toufik a écrit et ça ne fonctionne pas... :/ Je veux bien mettre un truc à action mais je travaille déjà sur un fichier php (comme corps de page d'un modèle WP).

    Après Dendrite, tu indiques "nb_matches_F_D", c'est cette variable que je dois annoncer dans le tableau d'affichage ? (un truc du genre <?php echo nb_matches_F_D ?> ? )

    Merci beaucoup

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par sylvain257 Voir le message
    ...(un truc du genre <?php echo nb_matches_F_D ?> ? )...
    1- voici 2 liens A LIRE :


    A lire la partie concernant "try catch", afin d'afficher les erreurs/exceptions PDO.

    2- D'autre part, Débogage de base :
    • mets des echo et/ou var_dump sur les données, pour savoir ce qu'elles contiennent, et où passe le code (dans quel if, else,...)


    3- De plus, pour les erreurs spécifiques à PHP, ajouter en tout début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if( empty(session_id()) ){ session_start(); }
    	header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
    // Afficher les erreurs et les avertissements
    	error_reporting(E_ALL); 	// en TEST

  9. #9
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 134
    Points : 78
    Points
    78
    Par défaut
    Merci beaucoup
    Sylvain

Discussions similaires

  1. interface Joomla (php, Mysql) / SQL Server
    Par doeuf dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 03/12/2007, 14h53
  2. PHP/MySQL ou JSP/SQL Server ?
    Par condor_01 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 28/02/2007, 08h52
  3. [Tableaux] affichage tableau php apres requete sql count
    Par heteroclite dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2006, 20h53
  4. Réponses: 3
    Dernier message: 20/05/2006, 23h28

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