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 :

Affichage du résultat d"une requête de manière dynamique


Sujet :

PHP & Base de données

  1. #1
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut Affichage du résultat d"une requête de manière dynamique
    Bonjour,

    Je parts d'un:
    Je veux stocker les entêtes dans un tableau (cela me permet aussi de savoir combien j'ai de colonne)
    Je veux afficher les données du tableau.

    Comment faire?

    J'ai pour l'instant ceci.
    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
    <?php
    $user='utilisateur';
    $pass='pass';
    $dsn='pgsql:host=localhost;dbname=nomdb';
     
    // nomdb
    global $db;
    $db = new PDO($dsn, $user, $pass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    ?>
     
    <html>
    <head>
    	<meta http-equiv="refresh" content="url=index.php">
        <meta charset="utf-8">
    </head>
    <body>
    <?php
     
    $actitable = array();
    $qry = $db->prepare("SELECT DISTINCT ON (col1) * FROM table WHERE LENGTH(col1) < 13 AND type = 'ACT' ");
    $qry->execute();
    ?>

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




    Exemples d'affichage :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $sql = "SELECT nom, prenom 
       FROM LATABLE ;";
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    while ($row = $stmt->fetch()) 
    {
        echo $row['nom'].' '.$row['prenom'].'<br />';
    }

    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
    16
    17
    18
    <?php
    $sql = "SELECT nom, prenom 
       FROM LATABLE 
       WHERE nom = :nom 
       AND prenom = :prenom ;";
    $stmt = $dbh->prepare($sql);
    $stmt->execute(array(
       :nom => $_POST['nom'],
       :prenom => $_POST['prenom']
       ));
    $nbreResult = $stmt->rowCount();
    if( $nbreResult > 0 )
    {
       while($row = $stmt->fetch()) 
       {
          echo $row['nom'].' '.$row['prenom'].'<br />';
       }
    }

  3. #3
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut
    Bonjour,

    J'avais compris ce que tu ecris, mais la je suis plus dans ce genre de truc:

    J'ai plusieurs problemes dans mon code:
    l'affectation du résultat de mon qry dans un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($d = $qry->fetch())
    {
    	$actitable[][$j] = $d[$columns[$j]];
    }
    et l'affichage du tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td>$actitable[$z][$columns[$j]]</td>";
    Voici ce que j'ai ecri ce jour.
    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
    <?php
    $user='utilisateur';
    $pass='pass';
    $dsn='pgsql:host=localhost;dbname=nomdb';
     
    // nomdb
    global $db;
    $db = new PDO($dsn, $user, $pass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    ?>
     
    <html>
    <head>
    	<meta http-equiv="refresh" content="url=index.php">
        <meta charset="utf-8">
    </head>
    <body>
    <?php
     
    $actitable = array();
    $qry = $db->prepare("SELECT DISTINCT ON (col1) * FROM table WHERE LENGTH(col1) < 13 AND type = 'ACT' ");
    $qry->execute();
    # Calcule le nombre de colonne dans la requette SQL et stocke les entetes dans le tableau columns
    for ($i = 0; $i < $qry->columnCount(); $i++) {
        $col = $qry->getColumnMeta($i);
        $columns[] = $col['name'];
        $numcolums = $i;
    }
     
    $numlignes = $qry->rowCount();
     
    echo "<table>";
    echo "<tr>";
    echo "<th>ligne $z = </th>";
    for ($j = 0; $j <= $numcolums; $j++)
    {
    	echo "<th>$columns[$j]</th>";
    }
     
    while ($d = $qry->fetch())
    {
    	$actitable[][$j] = $d[$columns[$j]];
    }
     
    echo "</tr>";
    for ($z = 0; $z <= $numlignes; $z++)
    {
    	echo "<tr>";
    	echo "<td>ligne $z = </td>";
    	for ($j = 0; $j <= $numcolums; $j++)
    		{
    		echo "<td>$actitable[$z][$columns[$j]]</td>";
    		}
    	echo "</tr>";
    }
    echo "</table>";
    echo "il y a $numlignes ligne(s)";
    echo "il y a $z ligne(s) retourné(s)";
    #print_r($columns);
    $qry->closeCursor();
    ?>
    cordialement,
    Vandman

  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
    Pourquoi tout ce bazard de tableau ?
    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
    $qry = $db->prepare("SELECT DISTINCT ON (col1) * FROM table WHERE LENGTH(col1) < 13 AND type = 'ACT' ");
    $qry->execute();
    $header = TRUE;
     
    echo '<table>';
    while ($row = $qry->fetch())
    {
    	if ($header == TRUE) {
                echo '<tr><th>' . implode('</th><th>' , array_keys($row)) . '</th></tr>';
                $header = FALSE;
            }
            echo  '<tr><td>' . implode('</td><td>' , $row) . '</td></tr>';
    }
    echo '</table>';
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut
    Bonjour,

    En plus de l'affichage, j'ai besoin de manipuler les données pour créer un autre référentiel.

    Pour essayer de faire simple:
    Les données don j'ai parlé précédemment sont des donnée bruts (code simple)
    Je vais avoir par la suite besoin de les comparer à des données venant d'un fichier calc dans lequel une partie des données est présente et en plus, des informations de liaison (qui lient les données entre elles) sont aussi présente.
    Avec ces deux sources de données, j'en crée une troisième (nouvelle base de donnée que je dois maintenir à jour avec les deux premières).
    Enfin je me sert de cette nouvelle base pour paramétrer un logiciel dans lequel il y aussi une base de donnée..

    C'est le bordel, je sais.

    Cordialement,
    Vandman

  6. #6
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut
    C'est bon, j'y suis arrivé.

    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
    <?php
    $user='utilisateur';
    $pass='pass';
    $dsn='pgsql:host=localhost;dbname=nomdb';
     
    // nomdb
    global $db;
    $db = new PDO($dsn, $user, $pass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    ?>
     
    <html>
    <head>
    	<meta http-equiv="refresh" content="url=index.php">
        <meta charset="utf-8">
    </head>
    <body>
    <?php
     
    $actitable = array();
    $qry = $db->prepare("SELECT DISTINCT ON (col1) * FROM table WHERE LENGTH(col1) < 13 AND type = 'ACT' ");
    $qry->execute();
     
    #sort($actitable);
    # Calcule le nombre de colonne dans la requette SQL et stocke les entetes dans le tableau columns
    for ($i = 0; $i < $qry->columnCount(); $i++) {
        $col = $qry->getColumnMeta($i);
        $columns[] = $col['name'];
        $numcolums = $i;
    }
    # Calcule le nombre de lignes retourne par la requette SQL
    $numlignes = $qry->rowCount();
    $z = 1;
    #stocke les valeurs dans un tableau (data)
    while ($row = $qry->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
        for ($i = 0; $i <= $numcolums; $i++) {
          	$data[$z][$i] = $row[$i];
        }
    	$z++;
    }
    #ferme la connection à la base de donnee
    $qry->closeCursor();
     
    #affiche le résultat
    echo '<table>';
    #affiche les entetes
    $z = 0;
    echo "<tr><th>Ligne = $z</th>";
    for ($i = 0; $i <= $numcolums; $i++) {
    	echo "<th>$columns[$i]</th>";
    }
    echo "</tr>";
    #affiche les donnees
    for ($z = 1; $z <= $numlignes; $z++) {
    	echo "<tr><td>Ligne = $z</td>";
    	$colonne = $data[$z];
        for ($i = 0; $i <= $numcolums; $i++) {
        	echo "<td>$colonne[$i]</td>";
            }
        echo "</tr>";
    }
    echo '</table>';
    echo "il y a $numlignes ligne(s) </br>";
    ?>

Discussions similaires

  1. Affichage des résultats d'une requête dans listbox
    Par Deallyra dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/10/2007, 14h09
  2. Affichage du résultat d'une requête SQL
    Par kamikazbe dans le forum JDBC
    Réponses: 2
    Dernier message: 24/05/2007, 19h47
  3. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  4. [VBA Access]Pb affichage de résultat d'une requête
    Par BouGeTonQ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/06/2006, 18h49
  5. Affichage du résultat d'une requête paramétrée
    Par Julien Dufour dans le forum Access
    Réponses: 6
    Dernier message: 11/05/2006, 14h32

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