Partage
  • Partager sur Facebook
  • Partager sur Twitter

tableau avec CSS et array PHP

lentement mais surement!!! surtout lentement

Sujet résolu
    7 février 2006 à 11:25:10

    Bonjour à tous

    je débute dans la programmation et j'ai lu (je pense) avec attention les tutos de M@teo 21 sur les sites web et le PHP. Enfin si je poste ici, c'est que j'ai certainement loupé des informations utiles!!

    Je travaille avec de nombreux logiciels pour créer plusieurs sites webs, tous à l'état de projet. En voici la liste:

    J'ai commencé avant de venir sur le site du zéro par Front Page.
    J'ai installé également:
    Apache 1.3.33
    PHP 4.3.10
    PHP my Admin 2.6.1
    MySQL 4.1.19


    Je travaille actuellement sur un tableau avec mise en page CSS.

    Je souhaite générer ce tableau à partir d'une base de donnée construite de la manière suivante:
    base de donnée: "marquage"
    table: "prestation"

    champs:
    "identifiant" smallint(6) auto increment
    "marché" text
    "id_prestation" text
    "prestation" text
    "Unité" text
    "Prix_HT" float
    "Nature_produit_travaux" text
    "couleur" text
    "type_ligne" text
    "epaisseur_ligne" text

    j'ai 433 enregistrements différents dans ma base de donnée.

    Je ne souhaite afficher que les prestations appartenant au marché "2004-108"

    Je fais donc la requete suivante apres m'être connecté à ma base de donnée:

    select * from prestation where marché=2004-108

    Pour finir, voici mon code:

    <style>
    {
    border-collapse: collapse;
    }
    td, th //mettre une bordure sur les td et les th
    {
    border: 1px solid black;
    }
    </style>



    <html>

    <head>

    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    "><style>
    {
    border-collapse: collapse;
    }
    td, th //mettre une bordure sur les td et les th
    {
    border: 1px solid black;
    }
    </style>
    <title>nouvelle page 1</title>
    </head>
            <body>
                    <table>
                            <caption>devis pour travaux neufs de marquage routier</caption>
                            <thead>
            <tr>
                <th>numéro de prix</th>
                <th>libellé</th>
                <th>unité</th>
                <th>nature du produit appliqué</th>
                            <th>couleur du produit</th>
                            <th>type de ligne</th>
                            <th>épaisseur de ligne</th>
                <th>Prix unitaire HT </th>
                <th>Quantité</th>
                            <th>Total estimé HT </th>

                </tr>
                 </thead>
            <tfoot>
           <tr>
               <th>Total</th>
               <th>   </th>
           </tr>
           <tr>
               <th>Coefficient de révision des prix</th>
               <th> 1.006  </th>
           </tr>
               <tr>
               <th>Total HT</th>
               <th>   </th>
           </tr>
               <tr>
               <th>TVA (19.6%)</th>
               <th>   </th>
           </tr>
           <tr>
               <th>Total TTC</th>
               <th>   </th>
           </tr>

       </tfoot>

       <tbody>
          <?php
                     mysql_connect("localhost");
                     //connexion à MySQL
                     mysql_select_db("marquage");
                     //sélection de la base marquage
                     $reponse=mysql_query"select * from "prestation" where "marché" = "2004-108"
    //requete SQL

    // On fait la boucle pour lister tout ce que contient la table:

    while ($donnees=mysql_fetch_array($reponse))
    {
    ?>


                     <tr>

             <td><?php echo $donnees['id_prestation']; ?></td>
             <td><?php echo $donnees['prestation']; ?></td>
             <td><?php echo $donnees['Unité']; ?></td>
             <td><?php echo $donnees['nature_produit_travaux']; ?></td>
             <td><?php echo $donnees['couleur']; ?></td>
             <td><?php echo $donnees['type_ligne']; ?></td>
             <td><?php echo $donnees['epaisseur_ligne']; ?></td>
             <td><?php echo $donnees['Prix_HT']; ?></td>

             </tr>

       <?php
       }

       mysql_close();
       //déconnexion de MySQL
       ?>

    </tbody>
    </table>


    Voila, sur le principe, ça me parait bien.

    Bien évidemment, je n'obtiens pas ce que je veux:
    - le corps du tableau est vide; mon script PHP ne fonctionne donc pas
    - les bordures du tableaux ne s'affichent pas; le CSS ne fonctionne pas non plus...

    ma question est simple: ou est l'erreur?
    Pardon!! où sont les erreurs?


    merci pour vos remarques !!!!
    • Partager sur Facebook
    • Partager sur Twitter
      7 février 2006 à 11:37:42

      Déjà change ceci :


       mysql_connect("localhost");
                       //connexion à MySQL
                       mysql_select_db("marquage");
                       //sélection de la base marquage
                       $reponse=mysql_query"select * from "prestation" where "marché" = "2004-108"
         


      Par :


       mysql_connect("HOST", "USER", "PASS");
                       //connexion à MySQL
                       mysql_select_db("marquage");
                       //sélection de la base marquage
                       $reponse=mysql_query ("select * from prestation where marché = "2004-108"") or die ("Erreur : " . mysql_error ());
       


      N'oublie pas de changer les infos de "HOST", "USER", "PASS".

      Ensuite :


      <style>
      table
      {
      border-collapse: collapse;
      }
      tr, th //mettre une bordure sur les td et les th
      {
      border: 1px solid black;
      }
      </style>


      Essaie ca et dit nous quelle erreur il affiche pour php (si il y en a une) grâce au mysql_error ().

      EDIT : change dans ta base le "marché" en "marche".
      • Partager sur Facebook
      • Partager sur Twitter
        7 février 2006 à 11:38:58

        Tu as oublié le "table" dans le CSS ?

        Et es-tu sûr d'être bien à une adresse commençant par http://127.0.0.1/ sur ta page quand tu la test ?
        • Partager sur Facebook
        • Partager sur Twitter
          7 février 2006 à 15:00:47

          Je me suis penché un peu sur vos remarques entre midi et 2 heures.

          J'ai modifié le code là ou j'ai pu le faire.

          Je n'ai pas réussi à renommer le champs "marché" en "marche"..

          Faut il que je supprime ma base de donnée et que je la recrée entièrement?
          • Partager sur Facebook
          • Partager sur Twitter
            8 février 2006 à 8:40:49

            Bonjour,

            suite à vos remarques, j'ai retravaillé dans la base de donnée.

            apache a été reconfiguré. il n'y a plus qu'un répertoire mes documents / mes sites webs / travail nommé travail

            Dans PHP MyAdmin, j'ai laiissé les privilèges suivants:
            -utilisateur: root
            -serveur: localhost
            -mot de passe: (aucun)

            j'ai completement effacé ma table "prestation" et l'ai recréé en renommant les champs sans accent et totu en minuscule.
            Les champs sont donc les suivant:
            -identifiant
            -marche
            -id_prestation
            -unite
            -prix_ht
            -nature_produit
            -couleur
            -type_ligne
            -epaisseur_ligne


            j'ai modifié le css en rajoutant "table" que j'avais oublié

            j'ai modifié le code html comme cela a été suggéré.


            Pour rappel, je remets le code corrigé:

            <html>

            <head>

            <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
            <meta name="ProgId" content="FrontPage.Editor.Document">
            <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
            <style>
            table
            {
            border-collapse: collapse;
            }
            td, th //mettre une bordure sur les td et les th
            {
            border: 1px solid black;
            }
            </style>

            <title>devis travaux neuf</title>
            </head>
                    <body>
                           <table>
                                  <caption>devis pour travaux neufs de marquage routier</caption>
                                  <thead>
                     <tr>
                        <th>numéro de prix</th>
                        <th>libellé</th>
                        <th>unité</th>
                        <th>nature du produit appliqué</th>
                                    <th>couleur du produit</th>
                                    <th>type de ligne</th>
                                    <th>épaisseur de ligne</th>
                        <th>Prix unitaire HT </th>
                        <th>Quantité</th>
                                    <th>Total estimé HT </th>

                        </tr>
                         </thead>
                    <tfoot>
                   <tr>
                       <th>Total</th>
                       <th>   </th>
                   </tr>
                   <tr>
                       <th>Coefficient de révision des prix</th>
                       <th> 1.006  </th>
                   </tr>
                       <tr>
                       <th>Total HT</th>
                       <th>   </th>
                   </tr>
                       <tr>
                       <th>TVA (19.6%)</th>
                       <th>   </th>
                   </tr>
                   <tr>
                       <th>Total TTC</th>
                       <th>   </th>
                   </tr>
                   
               </tfoot>

               <tbody>
                  <?php
                             mysql_connect("localhost", "root", "");
                             //connexion à MySQL
                             mysql_select_db("marquage");
                             //sélection de la base marquage
                             $reponse=mysql_query ( select * from prestation where marche = "2004-108" ) or die(mysql_error());
            //requete SQL

            // On fait la boucle pour lister tout ce que contient la table:

            while ($donnees=mysql_fetch_array($reponse))
            {
            ?>


                             <tr>
                             
                        <td><?php echo $donnees['id_prestation']; ?></td>
                        <td><?php echo $donnees['prestation']; ?></td>
                                  <td><?php echo $donnees['unite']; ?></td>
                                    <td><?php echo $donnees['nature_produit_travaux']; ?></td>
                                  <td><?php echo $donnees['couleur']; ?></td>
                                  <td><?php echo $donnees['type_ligne']; ?></td>
                                  <td><?php echo $donnees['epaisseur_ligne']; ?></td>
                                  <td><?php echo $donnees['prix_ht']; ?></td>
                     
                     </tr>
               
               <?php
               }
               
               mysql_close();
               //déconnexion de MySQL
               ?>

            </table>
            </tbody>


            au final, le résultat n'a pas changé: j'ai toujours un tableau avec le head et le foot accolé l'un à l'autre et sans bordure de cellule
            le body qui aurait du être constitué par le code php est vide.


            il n'y a eu aucun message d'erreur renvoyé par mysql_error. Je suis content d'apprendre que mon script est correct. Même s'il ne fonctionne pas!! J'ai bien reregardé le code de Matéo dans son cours, la seule chose qui diffère, c'est que matéo affiche le contenu de l'array entre des balises HTML de paragraphe et non dans un tableau comme je souhaite le faire.


            Peut être devrais je procéder de la façon suivante:
            - compter le nombre de ligne where "marche" = "2004-108"
            -faire une boucle à l'intérieur de laquelle je créerais une ligne et afficherais dans chaque cellule les différentes données que je souhaite voir apparaitre. Qu'en pensez vous? Des idées pour arriver à ce résultat?

            • Partager sur Facebook
            • Partager sur Twitter
              8 février 2006 à 11:13:55

              Je serais tenter de te dire d'essayer avec un seul echo et non pas toute une multitude :
              <?php
                               mysql_connect("localhost", "root", "");
                               //connexion à MySQL
                               mysql_select_db("marquage");
                               //sélection de la base marquage
                               $reponse=mysql_query ( select * from prestation where marche = "2004-108" ) or die(mysql_error());
              //requete SQL

              // On fait la boucle pour lister tout ce que contient la table:

              while ($donnees=mysql_fetch_array($reponse))
              {
              echo"<td>$donnees['id_prestation']</td><td>$donnees['prestation']</td>... ";
              }



              Et dernière question , ou est l'interet d'utiliser des array alors que des variable suffisent ?
              • Partager sur Facebook
              • Partager sur Twitter
                8 février 2006 à 15:04:38

                Non non, fais comme ca pour ta requête :


                $reponse=mysql_query ('select * from prestation where marche = "2004-108"') or die(mysql_error());
                • Partager sur Facebook
                • Partager sur Twitter
                  12 février 2006 à 19:51:13

                  Bonjour,

                  je pense avoir localisé le probleme.

                  J'ai repris et refait l'exemple de mateo dans son cours: Le Site du Zér0 > Les tutoriaux > Officiels > Site Web > PHP > Un site dynamique avec PHP ! > La base de données > Lire des données


                  j'ai juste modifié les privilèges de connexion pour les adapter au mien et j'ai rajouté un or die(mysql_error());

                  Le or die... ne m'a renvoyé aucune erreur.

                  La page internet s'est inscrite mais la connexion à la base de donnée ne s'est pas faite.

                  Voici ce que m'affichait la page:





                  Jeu :
                  Le possesseur de ce jeu est : , et il le vend à euros !
                  Ce jeu fonctionne sur et on peut y jouer à au maximum
                  a laissé ces commentaires sur :


                  Le contenu des échos reste vide et la boucle ne s'éxécute pas.


                  Comment je peux résoudre ce probleme de connexion à la base de donnée?


                  merci

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 août 2006 à 12:08:25

                    Yaisse!!!!

                    depuis le temps que je pouvais plus plancher sur ce probleme.

                    et puis hier matin, l'illumination.

                    Alors voila la solution que j'ai trouvé.

                    Il ne s'agit pas de la même base de donnée mais il suffira de remplacer le nom de la table et le nom des champs.

                    Je ne saisis pas non plus le code pour la mise en forme du tableau.
                    Il y avait plusieurs erreurs dont celles ci:
                    • je mélangeais array en PHP, table de base de donnée MySQL et tableau HTML. 3 choses bien différentes
                    • ouvrir une balise HTML "table" à l'intérieur d'un while. résultat parse error. Solution sortir la balise table de la boucle while
                    • la balise HTML "table" ne doit pas être intégrer à l'intérieur des balises de commande PHP...


                    Pour finir voici le code qui fonctionne:

                    <?php
                    mysql_connect("localhost", "root", ""); // Connexion à MySQL
                    mysql_select_db("test"); // Sélection de la base test

                    // On est connectés, on peut travailler sur la BDD
                    // ...
                    // ...

                    $reponse = mysql_query("SELECT * FROM jeux_videos")or die(mysql_error());
                    ?>

                    <table>

                    <?php

                    while ($donnees = mysql_fetch_array($reponse) )
                    {
                    ?>

                       <tr>
                           <td><?php echo $donnees['nom']; ?></td>
                           <td><?php echo $donnees['possesseur']; ?></td>
                           <td><?php echo $donnees['prix']; ?></td>
                               <td><?php echo $donnees['console']; ?></td>
                               <td><?php echo $donnees['nbre_joueurs_max']; ?></td>
                               <td><?php echo $donnees['commentaires']; ?></td>
                       </tr>
                       
                    </table>

                    <?php
                    }

                    // On a fini de travailler, on ferme la connexion :
                    mysql_close(); // Déconnexion de MySQL
                    ?>
                    • Partager sur Facebook
                    • Partager sur Twitter

                    tableau avec CSS et array PHP

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown