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] Recupèrer une base de données dynamiquement


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [PHP] Recupèrer une base de données dynamiquement
    Bonjour,

    Tout est dans le titre, j'essaie de récupérer une base de donnée dynamiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nom_page = str_replace('.php','', str_replace(dirname($_SERVER['PHP_SELF']).'/', '', $_SERVER['PHP_SELF']));
    $requete = 'SELECT * FROM '.$nom_page;
    $requete1 = 'SELECT column_name FROM information_schema.columns WHERE table_name = "'.$nom_page.'"';
    $r = mysql_query($requete) or die (mysql_error());
    $r1 = mysql_query($requete1) or die (mysql_error());
    Mon premier while qui me permet de faire la construction du tableau avec chaque nom de colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($noms = mysql_fetch_assoc($r1)){
        echo '<th>'.$noms["column_name"].'</th>';
    }
    Mon deuxième while qui me permettrais de recuperer les lignes du tableau selon les noms de colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while($e = mysql_fetch_assoc($r)){
        <tr>
        while($f = mysql_fetch_assoc($r1)){
            echo '<th>'.$e['"'.$f["column_name"].'"'].'</th>';
        }
        </tr>
    Le problème se pose justement sur ce deuxième while où il n'arrive à rien récupérer. Je sais aussi que mettre deux while qui se suivent comme cela surcharge le serveur mais je n'ai pas eu d'autre idée.
    J'ai voulu utilise un foreach pour les lignes sauf que j'ai eu le problème d'avoir deux fois la même ligne qui sort au final.

    Si quelqu'un a une solution a mon problème. Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Bonjour,

    Nous avions ce petit bout de code sur un de nos projets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // $db = une instance de PDO
    $result = $db->query("SHOW TABLES")->fetchAll(PDO::FETCH_NUM); // récupération des nom des tables
    if(!empty($result)){
    	foreach($result as $req){
    		$data[$req[0]] = array(); // pour chaque table, on initialise un tableau
    	}
            // une fois les tables récupérées, on parcourt chacune d'elle et on récupère toutes les lignes
    	foreach($data as $key => $var){
    		$result = $db->query("SELECT * FROM ".$key."")->fetchAll(PDO::FETCH_ASSOC);
    		$data[$key] = $result;	
    	}
            var_dump($data);  
    }
    Après, il n'y a plus qu'à exploiter le tableau $data.

    Ce n'est pas une modèle de perfection (un query dans une boucle foreach, c'est pas top) mais vu la fréquence d'utilisation et le niveau d'accès (réservé aux dev), ça suffisait.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse. Finalement je suis passé par une autre méthode avant de voir ta réponse.

    Dans mon premier while j'ai aussi initialise un tableau. J'ai rajouté cela de base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($noms = mysql_fetch_assoc($r1)) {
        echo '<th>' . $noms["column_name"] . '</th>';
        $arrayColonneName[$index] = $noms["column_name"];
        $index++;
    }
    Ensuite, dans mon deuxième while,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($e = mysql_fetch_assoc($r)) {
        $indexdepart = 0;
        while ($indexdepart < $index) {
            echo '<td><input type="text" value="'.$e[$arrayColonneName[$indexdepart]].'"> </td>';
            $indexdepart ++;
        }
    Cela fonctionne dorénavant si cela peut te servir pour ton projet. Par contre je pense quand même qu'il y aurait une façon algorithmique plus rapide. Je laisse le sujet non résolu à part si les modérateurs le décident autrement.
    Merci pour ta réponse en tout cas.

Discussions similaires

  1. [MySQL] Récupération de code php dans une base de données
    Par kitana dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/03/2006, 00h25
  2. Réponses: 10
    Dernier message: 10/02/2006, 14h23
  3. [Conception] insertion sql en php, dans une base de donnée ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/10/2005, 04h34
  4. [Conception] Code php dans une base de donnée
    Par krfa1 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/09/2005, 10h58
  5. [Delphi][PHP] Accès à une base de donnée Access
    Par Vodkha dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2005, 08h29

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