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 :

Requêtes pHp pour récupérer des données de la BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Requêtes pHp pour récupérer des données de la BDD
    Bonjour.
    J'essaie de faire un petit script pHp (et commandes mySQL) pour récupérer la table que j'ai créer avec pHp et le script suivant :
    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
    <?php 
    	include('../includes/connexion_V2.php'); 
    	connexion(); 
    			$sql= "CREATE TABLE IF NOT EXISTS " .$_POST['table']. "("; 
    			$sql .= "`id` int(11) NOT NULL auto_increment,"; 
    	session_start();
    		/*var_dump($_POST);*/
    		for ($j = 1; $j <= $_SESSION['nbc']; $j++) {
            /*if (isset($_POST['col'.$j])       )*/
    		$sql .= $_POST["col".$j].",";
    		}
    			$sql .= "PRIMARY KEY (`id`),"; 
    			$sql .= "UNIQUE KEY `id_2` (`id`)"; 
    			$sql .= ") ENGINE=MyISAM;"; 
    	mysql_query($sql) or die(mysql_error()); 
    ?>
    Ca fonctionne donc tout ce qui est en amont aussi notamment le script connexion_V2.php
    Par contre avec ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
        include("connexion_V2.php");
     
        connexion(); 
     
    	$sql = "SHOW " .$_POST['table']; 
     
    	$req = mysql_query($sql) or die(mysql_error()); 
     
    	echo $req ;
     
    ?>
    je n'ai rien sinon une erreur de syntaxe.
    Il n'y a aucune données dans table, je voudrai en partant de pHp afficher les informations que j'aurai avec un SHOW table en ligne de commande.

    En fait, je n'arrive pas à trouver la syntaxe et les commandes (sans PDO) pour me connecter, concevoir et envoyer ma requête puis surtout récupérer ce résultat dans une variable mySQL puis l'afficher avec comme départ un script pHp et en sortie une page html ("BDD transparente")

    Merci de votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 117
    Points : 58
    Points
    58
    Par défaut
    Salut,

    que souhaites-tu afficher avec le SHOW ? Tu ne peux en tout cas pas l'utiliser avec le nom d'une de tes tables derrière.
    Ceci devrait pouvoir t'aider: http://dev.mysql.com/doc/refman/5.1/...nded-show.html

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.
    SHOW TABLES.
    Je souhaite afficher cette table integralement qu'il y ait des entrées ou pas en envoyant une requête par un script pHp.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme te l'a indiqué dewey01, SHOW ne sert pas à afficher le contenu d'une table.
    Ce que tu veux, c'est une requête SELECT.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Oui c'est ça.
    J'ai du mal m'exprimer, j'ai parlé de SHOW uniquement pour decrire le résultat escompté, ce que l'on obtient en ligne de commande dans un terminal.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 117
    Points : 58
    Points
    58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    include("connexion_V2.php");
    connexion(); 
    $sql = "SELECT * FROM " .$_POST['table']; 
    $req = mysql_query($sql) or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($req)) {
        echo($row['Column1']);
        echo($row['Column2']);
        echo($row['Column3']);
        ...
    }
    ?>
    Une simple recherche sur internet t'aurais pris 30s pour trouver ca.
    Cependant, mysql_connect est obsolete, il est conseillé d'utiliser mysqli_connect.

    A+

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour et merci ton aide.
    Effectivement j'ai une liste de fonctions pHp pour mySQL et je n'en n'ai pas trouvé à jour. Je vais continuer à chercher.

    Je ne suis pas loin de comprendre le petit bout que je tente de faire mais malgré des heures sur internet, j'ai toujours quelques questions
    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
    <?php 
    // on se connecte à MySQL et à la base
    include("connexion_V2.php");
     
    connexion();
     
    // on crée la requête SQL 
    $sql = "SELECT " .$_POST['table']; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // affichage
    while ($row = mysql_fetch_assoc($req)) {
        echo($row['Column1']);
        echo($row['Column2']);
        echo($row['Column3']);
       }
     
    // on ferme la connexion à mysql 
    mysql_close(); 
    ?>
    renvoie :
    Erreur SQL !
    SELECT parcours
    Unknown column 'parcours' in 'field list'
    C'est à dire le nom de ma table qu'il y a dans $_POST['table']., je souhaite afficher toute la table parcours sans donner d'autres info que son nom (sans donner le nom des colonnes).
    Cette table est par ailleurs vide.
    Je souhaite donc afficher le nom des "colonnes" (tant qu'il n'y a rien d'autre).

  8. #8
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2014
    Messages : 63
    Points : 123
    Points
    123
    Par défaut
    Bonsoir,

    essaie comme ceci comme requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM " .$_POST['table'].";";
    puis l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        echo("<table><tr><th>Colone1</th><th>Colone2</th><th>Colone3</th></tr>");
        while ($row = mysql_fetch_assoc($req)) {
            echo("<tr><td>".$row['Column1']."</td><td>".$row['Column2']."</td><td>".$row['Column3']."</td></tr>");
        }
        echo("</table>");

    un extrait de code php avec du SQL dedans développé lors de mes études (désolé format image :X )

    Nom : 44.png
Affichages : 355
Taille : 260,7 Ko

    Bonne soirée

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un peu de sécurité svp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM " . mysql_real_escape_string($_POST['table']);
    Pour l'affichage étant donné qu'on ne connait pas d'avance les colonnes :
    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
    echo '<table>'
    while ($row = mysql_fetch_assoc($req)) {
     
            if ($head == TRUE) {
                    echo '<tr>';
                    foreach ($row as $col=>$value) {
                            echo '<th>' . htmlspecialchars($col) . '</th>';
                    }
                    echo '</tr>';
                    $head = FALSE;
            }
            echo '<tr>';
            foreach ($row as $value) {
                            echo '<td>' . htmlspecialchars($value) . '</td>';
            }
             echo '</tr>';
        }
        echo '</table>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Merci à tous les 2.
    Il me manque quelque chose. Le script n'affiche rien : ni résultat, ni erreur.
    Pouvez m'aider à repérer ce qui ne fonctionne pas et à faire des tests pour voir ce qui ne va pas.
    Je rappelle que ma table est vide, il n'y a que les "en-tête" et c'est cela que je souhaiterai 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
    34
    35
    <?php 
    // on se connecte à MySQL et à la base
    include("connexion_V2.php");
     
    connexion();
     
    // on crée la requête SQL 
    $sql = "SELECT * FROM " . mysql_real_escape_string($_POST['table']);
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // affichage
    echo '<table>';
    while ($row = mysql_fetch_assoc($req)) {
     
            if ($head == TRUE) {
                    echo '<tr>';
                    foreach ($row as $col=>$value) {
                            echo '<th>' . htmlspecialchars($col) . '</th>';
                    }
                    echo '</tr>';
                    $head = FALSE;
            }
            echo '<tr>';
            foreach ($row as $value) {
                            echo '<td>' . htmlspecialchars($value) . '</td>';
            }
             echo '</tr>';
        }
    echo '</table>';
     
    // on ferme la connexion à mysql 
    mysql_close(); 
    ?>
    Le fichier connexion_V2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    	$host = "localhost"; /* L'adresse du serveur */ 
    	$login = "root"; /* Votre nom d'utilisateur */ 
    	$password = ""; /* Votre mot de passe */ 
    	$base = "toulesport"; /* Le nom de la base */ 
     
    function connexion() 
    	{ 
    	global $host, $login, $password, $base; 
    	$db = mysql_connect($host, $login, $password); 
    	mysql_select_db($base,$db); 
    	} 
    ?>

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta fonction ne sert pas à grand chose si tu n'as qu'elle dans ton fichier de connexion. De plus tu fais des choses bizarres sur la portée des variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    $host = "localhost";
    $login = "root";
    $password = "";
    $base = "toulesport";
    $db = mysql_connect($host, $login, $password); 
    mysql_select_db($base,$db);
    ?>
    Pour avoir les colonnes meme quand il n'y a pas de résultat, on va faire deux requêtes :
    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
    <?php 
    include("connexion_V2.php");
     
    echo '<table>';
     
    $sql = "SHOW COLUMNS FROM " . mysql_real_escape_string($_POST['table']);
    $req = mysql_query($sql); 
    while ($row = mysql_fetch_assoc($req)) {
       echo '<tr>';
       foreach ($row as $values) {
             echo '<th>' . values['field'] . '</th>';
      }
       echo '</tr>';
    }
     
    $sql = "SELECT * FROM " . mysql_real_escape_string($_POST['table']);
    $req = mysql_query($sql); 
    while ($row = mysql_fetch_assoc($req)) {
            echo '<tr>';
            foreach ($row as $value) {
                   echo '<td>' . htmlspecialchars($value) . '</td>';
            }
             echo '</tr>';
    }
    echo '</table>';
     
    mysql_close(); 
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour et merci pour le code.

    J'essaiyais de faire fonctionner le script en préparant les questions sur ce que tu m'as donné. Je pense que les réponses me feront faire un grand pas sur la compréhension globale.

    Lorsque j'ai eu une simple erreur de syntaxe que je n'arrive pas à corriger sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<th>' . values['field'] . '</th>';
    Parse error: syntax error, unexpected '[', expecting ',' or ';' in M:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V2.php on line 11

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque juste le $
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<th>' . $values['field'] . '</th>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Merci. Le dollar devant la variable, j'aurai du le voir.

    J'ai du mal avec le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in M:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V2.php on line 8
     
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in M:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V2.php on line 18
    pour les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while ($row = mysql_fetch_assoc($req)) {
    while ($row = mysql_fetch_assoc($req)) {
    La variable $req renvoie bien true ou false ?
    J'ai tenter un echo $req; mais ça ne me renvoie rien.

    Que représente field dans $values['field'] ?

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $req contient une ressource quand la requête fonctionne et FALSE quand elle ne fonctionne.
    Affiche les erreurs avec mysql_error();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Pas d'erreur avec mysql_error(); à part le message précédent que je ne comprends pas.

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu fais bien ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = mysql_query($sql);
    echo mysql_error();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Non.
    Je ne faisais que Je ne comprends pourquoi dans le même script, il faut taper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query($sql);
    plusieurs fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = mysql_query($sql);
    echo mysql_error();
    me renvoie :
    J'ai réussi à créer la table parcours avec le fichier de connexion que j'ai donné, pourquoi ai-je ce message d'erreur "pas de BDD sélectionnée ?

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu es sur que ta base s'appelle "toulesport" ?

    comme pour le reste, tu peux debuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_select_db($base,$db);
    echo mysql_error();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Ben oui, toulesport...

    Nom : Capture01.jpg
Affichages : 294
Taille : 84,5 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/09/2014, 19h29
  2. Réponses: 5
    Dernier message: 14/03/2010, 21h50
  3. Réponses: 1
    Dernier message: 14/03/2007, 13h08
  4. fonction pour récupérer des données xml
    Par jeff29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2006, 15h46
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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