Version complète: sur le forum Webmaster Hub : mise en page php
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
burinho
bonjour, je suis arrivé a ecrire sur ma BDD, a recupere des infos de la base.

mais comment faire pour faire une mise en page correct
xpatval
Plusieurs méthodes pour ce faire:

1: dans le cadre de ta page xxx.php, tout ce qui concerne le html se code ainsi:
CODE
<?php
include "connect.php";
$var = "toto";
print "<table><tr><td>";
print "Mon nom". $var;
print "</td></tr></table>";
$sql = "select....";
?>


ou encore comme ceci:
2:
CODE
<?php
include "connect.php"; // (par exemple)
$var = "toto";
?>
<table><tr><td>
Mon nom est <?php echo $var;?>
</td></tr></table>
<?php
$sql = "select...";
?>


Et puis ensuite, il faudra essayer de séparer véritablement la partie html, du code php.

xpatval
burinho
en faite j'ai déjà fais mon tableau pour récuperer les donnees de la base.

voilà ce que j'ai essayé de faire.


<?php
mysql_connect("localhost", "root", "") or
die("Impossible de se connecter : " . mysql_error());
mysql_select_db("acps");

//$req_compte = "SELECT nom,prenom, adresse,cp,ville,mail,date_adhesion,date_fin FROM membres";


$reponse = mysql_query("SELECT nom FROM membres"); // Requête SQL
//if ($result= mysql_query($req_compte)) //execution de la requette et test de réussite
//{echo "requete reussie";

//}
//else { echo mysql_errno() . ": " . mysql_error(). "\n" ; exit(1);}//message d'erreur

while ($donnees = mysql_fetch_array ($reponse) )

{
?>
<table>
<tr>
<td> <?php echo $donnees['nom'] ; ?>
</td></tr>
</table>
<?
}
mysql_close();
?>


mais apparament ça marche pas
xpatval
As-tu un message d'erreur ?

De plus, il est fortement conseillé d'initialiser les variables dont tu vas te servir, au départ du script.

Pour ce faire, la méthode la plus simple (à mon sens) est la suivante:
Tu crées un fichier initvar.php dans lequel tu vas initialiser les variales de la sorte:
CODE
<?php
$var= ( isset ( $_REQUEST['var'] ) ) ? $_REQUEST['var'] : '';
?>
pour toi ce sera:
$nom = ( isset ( $_REQUEST['nom'] ) ) ? $_REQUEST['nom'] : '';

Ensuite, au départ de ton script, tu inclus initvar.php, comme cela:
CODE
<?php
include "initvar.php";

le reste de ton script...


Mais surtout, quel est le message d'erreur ?

xpatval
burinho
merci,

j'ai trouvé mon erreur, je pense que je n'ai pas du mettre quelque chose correctement en commantaire.

maintenant ça marche
lupucide
CITATION(xpatval @ vendredi 25 février 2005, 22h43)
De plus, il est fortement conseillé d'initialiser les variables dont tu vas te servir, au départ du script.


Ah, un sujet qui m'intéresse smile.gif
Pourrais tu m'expliquer pourquoi cela est conseillé ? je tripote un peu MySQL et j'aimerais vraiment pouvoir optimiser mes scripts.
Anonymus
Initialiser ses variables au début du script peut avoir une certaine importance.. logique.

En fait, un programme prend des parametres en début de script, les traite, et execute des actions. Mais logiquement, on ne commence pas le programme pour analyser au beau milieu de celui-ci, les parametres qui ont été entrées au début.

De plus, le controle des variables en début de script conditionne le script dans sa globalité. Par exemple, tu ne peux envoyer d'entetes (header) si d'autres données ont déjà été envoyées.

Par contre, je déconseille fortement l'utilisation de la variable $_REQUEST. On doit savoir si l'on envoie une données d'une page à une autre en method POST ou GET, et c'est une erreur de récupérer
dans un 'super tableau' l'une ou l'autre.
Un exemple : vous faites un formulaire, que vous envoyez en method POST, vous récupérer les données en method REQUEST, en pensant que ca récupérera les données de la méthode POST, alors que quelqu'un pourrait très bien ajouter des champs dans l'url, ce qui ferait passer le REQUEST en methode GET.

Nico.
xpatval
CITATION
Par contre, je déconseille fortement l'utilisation de la variable $_REQUEST.
.
En partie d'accord avec Anonymous, à ceci près: à mon (petit) niveau de programmeur php, il m'arrive parfois d'avoir, pour une variable, l'utilisation des deux méthodes (POST et GET), suivant l'action proposée dans les pages. Dans ce cas, l'utilisation du $_REQUEST règle l'affaire. Je n'ai pas trouvé d'autres solutions. A moins qu'il soit possible de tester quelle méthode est employée lors de la réception d'un paramètre.

xpatval
Ex-floodeur
CITATION(xpatval @ vendredi 25 février 2005, 21h05)
Plusieurs méthodes pour ce faire:


Et puis ensuite, il faudra essayer de séparer véritablement la partie html, du code php.

xpatval
*

PAr rapoort à ces deux méthodes, est ce que la deuxieme est melleure que la première ou bien le fait de sortir le HTML des éléments PHP ne change rien ?
lupucide
Ne serait-il pas mieux de faire un include du <td> avec la requête dans le tableau ?
xpatval
CITATION
PAr rapoort à ces deux méthodes, est ce que la deuxieme est melleure que la première ou bien le fait de sortir le HTML des éléments PHP ne change rien ?

Il faudrait normalement séparer le php du html, car même si les deux s'implémentent mutuellement, leur utilité n'est pas la même.
Je préfère la deuxième méthode, par souci de clarté dans le html, car il est beaucoup plus simple de trouver une erreur de "" dans du html que dans du php générant du html, surtout si ton script fait 500 lignes (je pense à des lignes de ce genre:
CODE
<?php
print "<div class=\"classcss\" style=\"margin: 5px;\">". $i['var'] ."<span class=\"...\">" etc...


CITATION
Ne serait-il pas mieux de faire un include du <td> avec la requête dans le tableau ?

C'est à dire ? je n'ai pas compris ta question.

xpatval
Portekoi
Ne lui complique pas la chose avec les includes

Pour ma part, je te conseille d'aller voir ici : http://www.phpdebutant.org

On ne conduis pas tout de suite.. d'abord, on a une phase d'apprentissage smile.gif

Ensuite pour ce qui est du $_REQUEST, je ne l'utilise pas.

Lorsque je transmet mes variables des 2 facons, je le fais ainsi :

$var = $_POST["var"];
if ($var == "" )
$var = $_GET["var"];

Naturellement, j'utilise une fonction pour virer tout ce qui est espace, quote, slash.... toussa quoi smile.gif

++

Portekoi
lupucide
Je voulais dire :

CODE
<table>
<tr>
<?php include ('requete_sql.php'); ?>
</tr>
</table>
Ex-floodeur
CITATION(xpatval @ mardi 01 mars 2005, 14h08)
Il faudrait normalement séparer le php du html, car même si les deux s'implémentent mutuellement, leur utilité n'est pas la même.
Je préfère la deuxième méthode, par souci de clarté dans le html, car il est beaucoup plus simple de trouver une erreur de "" dans du html que dans du php générant du html, surtout si ton script fait 500 lignes (je pense à des lignes de ce genre:
CODE
<?php
print "<div class=\"classcss\" style=\"margin: 5px;\">". $i['var'] ."<span class=\"...\">" etc...

oui, quand on a un gros code, c'est vrai que c'est plus clair de faire cette séparation nette : niveau efficacité ca change quelque chose ?
xpatval
Je ne saurais répondre à ta question, Ex_Floodeur. IL faudrait faire un tuning entre code séparé et non-séparé, je suppose, et encore, pour des scripts comportant 95 boucles imbriquées... ^_^

CODE
<table>
<tr>
<?php include ('requete_sql.php'); ?>
</tr>
</table>
Tu imagines, si tu dois faire 20 sauts de lignes, avec 65 cellules, dans requête_sql.php ? et que tu loupes un simple </tr> ? c'est vite le foutoir...

xpatval

ps: tiens, il faudrait que je teste if (!($_POST['var']))...
Ex-floodeur
en fait, je me pose la question car tu très bien avoir ton PHP explosé en 50 petits morceaux dans ton code : n'est ce pas trop chiant pour le serveur ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.