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 :

Classement sur une base de donnée MySQL


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut Classement sur une base de donnée MySQL
    Bonjour et bonnes fêtes à tous
    Bonjour je désire faire un classement d'après une table Mysql
    La connexion à la BD fonctionne mais après la variable $result qui doit contenir le résultat de la requete smeble vide !
    Dans la console MySQL les requêtes fonctionnent parfaitement mais lorsque j'essaie de les traduire en PHP ça ne fonctionne pas
    Quelqu'un peut il me dire ce qui ne va pas ?
    Mes connaissnces en PHP sont limitées
    Merci d'avance
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?php
    // F1 = nom  ; F2 = appellation cross ;  F7 = date  ;  F15 - Total des points
     
    // $host_name = 'Hote';
    // $database = 'BD';
    // $user_name = 'Utilisateur';
    // $password = '<1234>';
     
    // -----------------------------------------
    $link = mysqli_connect("db2385.1and1.fr", "Hostname", "1234", "BD");
    // $link = mysqli_connect("localhost", "root", "", "aspv3p7");
     
    if (!$link) {
        echo "Erreur : Impossible de se connecter à MySQL." . PHP_EOL;
        echo "Errno de débogage : " . mysqli_connect_errno() . PHP_EOL;
        echo "Erreur de débogage : " . mysqli_connect_error() . PHP_EOL;
        exit;
    }
    echo "Connexion réussie" . PHP_EOL;
    echo "Information d'hôte : " . mysqli_get_host_info($link) . PHP_EOL;
    mysqli_query("SET NAMES 'utf8'");
     
    // *-*-*-*-
    // On cree un table temporaire
    mysqli_query("CREATE TEMPORARY TABLE tmp (F1 VARCHAR(50),F15 BIGINT(20),F2 VARCHAR(50))");                             
    mysqli_query("INSERT INTO tmp SELECT F1, max(F15),F2 FROM aspt_visforms_1 GROUP BY  F1,F2");
     
    mysqli_query("CREATE TEMPORARY TABLE tmp2 (F1 VARCHAR(50),F15 BIGINT(20),F2 VARCHAR(50))");
    mysqli_query("INSERT INTO tmp2 SELECT F1, sum(F15),F2 FROM tmp GROUP By F1");
     
    $result = mysqli_query( 'SELECT F1, F15 FROM tmp2 GROUP BY F1 ORDER BY F15 DESC');
     
    //  Classement
     
     // si on a recupere un resultat on l'affiche.
    if($result) {
     // debut du tableau
      //  echo '<table bgcolor="#FFFFFF">  //'."n";
    	    $a=1;
     
    // premiere ligne on affiche les titres nom et surnom dans 2 colonnes
            echo '<tr align="center">';
    		echo '<td bgcolor="#9999CC"><b><u>Rang</u></b></td>';
    		echo '<td bgcolor="#9999CC"><b><u>Nom</u></b></td>';
            echo '<td bgcolor="#9999CC"><b><u>Points</u></b></td>';
     
    // lecture et affichage des resultats sur 2 colonnes, 1 resultat par ligne.    
        while($row = mysqli_fetch_array($result)) {
    		echo '<tr align="center">';
    		echo '<td bgcolor="#b4d4f4">'.$a++.'</td>';
    		echo '<td bgcolor="#b4d4f4">'.$row['F1'].'</td>';
            echo '<td bgcolor="#b4d4f4">'.$row['F15'].'</td>';
     
    		// echo '<tr>'."n";
        }
    echo " /   Pas de données trouvées   / ";
    }	
     
    // On supprime la table
     mysqli_query("DROP TABLE tmp");
     mysqli_query("DROP TABLE tmp2");
     
    //  ************************
    // on ferme la connexion à mysql 
    mysqli_close($link);
     echo '<tr>'."Fin";
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    global $pdo;
    // -----------------------------------------
    $link = mysqli_connect(...);
    1- Alors : PDO ou mysqli_ ???

    2- Enlève les DROP TABLE, et vérifie que les tables SQL sont bien créées en BDD.
    Cela dit, je ne comprends pas pourquoi tu crées des tables temporaires...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut
    Merci
    Plutôt Mysqli, j'avais oublié de supprimer Global dbo
    La table Visform_1 contient bien les données
    Mais je ne sais pas comment faire pour visualiser les tables temporaires dans la console Mysql
    Je créé des tables temporaires car une fois le résultat affiché elles ne me servent plus

  4. #4
    Invité
    Invité(e)
    Par défaut
    Mea culpa.
    Il semble qu'une table temporaire ne soit pas visible via phpMyAdmin.


    A TEMPORARY table is visible only within the current session, and is dropped automatically when the session is closed.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut
    En effet il semble qu'on ne peut pas les voir. J'ai donc supprimé "Temporary" pour créer des tables "normales"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query("CREATE TABLE tmp (F1 VARCHAR(50),F15 BIGINT(20),F2 VARCHAR(50))");
    .Apparemment les tables ne sont pas créées!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Forcément.... la syntaxe est fausse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query( $link, "............" );
    Mais je te conseille d'utiliser PDO.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut Meilleurs voeux
    Bonjour jreaux62
    Les fêtes sont passées, je m'y remets...
    Tout d'abord je te remercie de la patience à mon égard (suis un débutant vraiment pas très doué...)
    Je te souhaites une très bonne année 2020
    Bon revenons au sujet :
    J'ai suivi tes conseils et j'essai de me mettre à "PDO"
    J'ai également abandonné la création de tables provisoires"

    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
    <?php
     $host='localhost';
     $dbname = 'test';
     $username = 'root';
     $password = '';
     
     try{
      $dsn = "mysql:host=$host;dbname=$dbname";
      $pdo = new PDO($dsn, $username, $password);
     
      $sql = <<<EOSQL
    CREATE TABLE tmp (
      id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
      F1 VARCHAR(50) NOT NULL,
     F2 VARCHAR(50) NOT NULL,
       F15 BIGINT(20)
    ) ENGINE=InnoDB
    EOSQL;
     
      $msg = '';
     
      $res = $pdo->exec($sql);
     
      if($res !== false){
       $msg =  "La table tmp est créée avec succès!";
      }else{
       $msg =  "Table déjà créée ou Erreur lors de la création de la table tmp.";
      }
      // afficher le message
      if($msg != '')
       echo $msg;
     
      }catch (PDOException $e){
       echo $e->getMessage(); 
    }
     
    // Requête mysql pour insérer des données
     
     
      $sql = 'INSERT INTO tmp SELECT F1, max(F15),F2 FROM aspt_visforms_1 GROUP BY F1, F2';
      $res = $pdo->prepare($sql);
     $exec = $res->execute(array(":F1"=>$F1,":F15"=>$F15,":F2"=>$F2));
     
      // vérifier si la requête d'insertion a réussi
      if($exec){
        echo 'Données insérées';
      }else{
        echo "Échec de l'opération d'insertion dans tmp";
      }
    Maintenant la table "tmp" est bien créée mais les données de la table aspt_visforms_1 ne sont pas copiées dans la table "tmp"
    Je suppose qu'il y a sûrement encore une erreur de syntaxe ou de structure
    Merci d'avance

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2014, 18h02
  2. [MySQL] Données d'autres sites sur une base de données MySQL
    Par frohike dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/02/2013, 14h51
  3. [phpMyAdmin] Recherche sur une base de données MySQL
    Par CCPMurat dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 29/06/2011, 17h43
  4. Réponses: 4
    Dernier message: 08/01/2009, 15h01
  5. Réponses: 3
    Dernier message: 23/03/2007, 22h26

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