Probleme de mise en page sur un tableau

Petit nouveau ! | 1 Messages

12 mai 2009, 09:32

Bonjour,

Débutant en php j'ai faut un script pour ajouté des données via un formulaire php, avec lui j'ai fait un autre script pour affiché mes données dans un tableau, et maintenant j'en essaye un troisième qui affiche et permet de modifié les valeurs via un formulaire.

Dans le 1er script qui affiche mes infos dans un tableau, mes données sont affiché proprement pages par pages.

Dans le second qui affiche une colonne modifi, l'option modifié fonctionne très bien mais j'ai un problème de mise en page, celui ci m'affiche un tableau par données affichés

Comme cela :
Nom du Client | Ville |Date | Interv. | Modifie
Nom1 | Ville1 | Date 1 | Interv1 | Modifier

Nom du Client | Ville |Date | Interv. | Modifie
Nom2 | Ville2 | Date2 | Interv3 | Modifier

Nom du Client | Ville |Date | Interv. | Modifie
Nom3 | Ville3 | Date3 | Interv3 | Modifier
Apres pas mal de recherche et de bidouille je ne sais plus trop quoi faire donc je demande votre aide.

Merci a vous :


Voila le code qui me fait un tableau par ligne :

Code : Tout sélectionner

<?php function barre_navigation ($nb_total, $nb_affichage_par_page, $debut, $nb_liens_dans_la_barre) { $barre = ''; // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT if ($_SERVER['QUERY_STRING'] == "") { $query = $_SERVER['PHP_SELF'].'?debut='; } else { $tableau = explode ("debut=", $_SERVER['QUERY_STRING']); $nb_element = count ($tableau); if ($nb_element == 1) { $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut='; } else { if ($tableau[0] == "") { $query = $_SERVER['PHP_SELF'].'?debut='; } else { $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut='; } } } // on calcul le numéro de la page active $page_active = floor(($debut/$nb_affichage_par_page)+1); // on calcul le nombre de pages total que va prendre notre affichage $nb_pages_total = ceil($nb_total/$nb_affichage_par_page); // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin) // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11 if ($nb_liens_dans_la_barre%2==0) { $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1; $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2); } else { $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2)); $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2)); } if ($cpt_deb1 <= 1) { $cpt_deb = 1; $cpt_fin = $nb_liens_dans_la_barre; } elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) { $cpt_deb = $cpt_deb1; $cpt_fin = $cpt_fin1; } else { $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1; $cpt_fin = $nb_pages_total; } if ($nb_pages_total <= $nb_liens_dans_la_barre) { $cpt_deb=1; $cpt_fin=$nb_pages_total; } // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page if ($cpt_deb != 1) { $cible = $query.(0); $lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;'; } else { $lien=''; } $barre .= $lien; // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) { if ($cpt == $page_active) { if ($cpt == $nb_pages_total) { $barre .= $cpt; } else { $barre .= $cpt.'&nbsp;-&nbsp;'; } } else { if ($cpt == $cpt_fin) { $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); $barre .= "'>".$cpt."</A>"; } else { $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;"; } } } $fin = ($nb_total - ($nb_total % $nb_affichage_par_page)); if (($nb_total % $nb_affichage_par_page) == 0) { $fin = $fin - $nb_affichage_par_page; } // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation if ($cpt_fin != $nb_pages_total) { $cible = $query.$fin; $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>'; } else { $lien=''; } $barre .= $lien; return $barre; } ?> <html> <head> <title>Liste des interventions de *****</title> </head> </body> <strong>Liste des interventions de ****** :</strong><br /> <br /> <?php // on se connecte à notre base include 'conf.php'; // on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages $sql = 'SELECT count(*) FROM client'; // on exécute cette requête $resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on récupère le nombre d'éléments à afficher $nb_total = mysql_fetch_array($resultat); // on teste si ce nombre de vaut pas 0 if (($nb_total = $nb_total[0]) == 0) { echo 'Aucune réponse trouvée'; } else { // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0 if (!isset($_GET['debut'])) $_GET['debut'] = 0; $nb_affichage_par_page = 20; // Préparation de la requête avec le LIMIT $sql = 'SELECT * FROM client ORDER BY id ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page; // on exécute la requête $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); //connection au serveur: $cnx = mysql_connect( "localhost", "root", "" ) ; //sélection de la base de données: $db = mysql_select_db( "dp49" ) ; //requête SQL: $sql = "SELECT * FROM client ORDER BY id" ; //exécution de la requête: $requete = mysql_query( $sql, $cnx ) ; //affichage des données: while( $result = mysql_fetch_object( $requete ) ) { echo("<table bgcolor=\"#FFFFFF\">") ; echo("<tr>") ; echo("<td bgcolor=\"#E0D59F\"><b><u>Nom du Client</u></b></td>") ; echo("<td bgcolor=\"#E0D59F\"><b><u>Ville</u></b></td>") ; echo("<td bgcolor=\"#E0D59F\"><b><u>Date Interv.</u></b></td>") ; echo("<td bgcolor=\"#E0D59F\"><b><u>Modifier</u></b></td>") ; echo("</tr>") ; echo("<tr>") ; echo("<div align=\"center\"><td>".$result->nom." ".$result->prenom."</td>") ; echo("<div align=\"center\"><td>".$result->ville."</td>") ; echo("<div align=\"center\"><td>".$result->date."</td>") ; echo("<div align=\"center\"><td><a href=\"pages/modification2.php?id=".$result->id."\">modifier</a></td>") ; echo("</tr>") ; echo("</table>") ; } // on affiche enfin notre barre echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>'; } // on libère l'espace mémoire alloué pour cette requête mysql_free_result ($resultat); // on ferme la connexion à la base de données. mysql_close (); echo '</table><br />'; ?> </body> </html>
Si vous avez des suggestion concernant le nettoyage de mon code allez y aussi je suis a votre ecoute :), j'ai modifié pas mal de tuto et donc il y a des truc etrange que je n'arrive pas a modifié comme la conexion un coup par le fichier config et l'autre en direct vie le fichier visu.php.

Encore merci

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 mai 2009, 12:10

Tu intègres le tableau entier dans ta boucle, c'est donc normal donc que tu ais des duplicata de lignes.

Le morceau :
 echo("<table bgcolor=\"#FFFFFF\">") ;
echo("<tr>") ;
      echo("<td bgcolor=\"#E0D59F\"><b><u>Nom du Client</u></b></td>") ;
        echo("<td bgcolor=\"#E0D59F\"><b><u>Ville</u></b></td>") ;
      echo("<td bgcolor=\"#E0D59F\"><b><u>Date Interv.</u></b></td>") ;
      echo("<td bgcolor=\"#E0D59F\"><b><u>Modifier</u></b></td>") ;
echo("</tr>") ; 
doit se trouver hors de la boucle.

Idem pour la fermeture du tableau.