Inscription tableau PHP

Résolu/Fermé
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 - 28 nov. 2012 à 15:20
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 - 5 déc. 2012 à 14:27
Bonjour,

je galère depuis un petit moment sur un problème qui va surement vous sembler "débile" mais je suis débutant en PHP :)

Présentation du projet :

Premièrement, je récupère les données dans une BDD MySQL, que je trie en fonction de la date, bref je ne pense pas que cela soit très important.

Ensuite j'ai une page "web", contenant un tableau PHP, voici un bout de code que j'ai utilisé pour faire le tableau :

<table style="width:100%; font-size: 12px>
<tr style="font-style:bold;"><td>Num.</td><td>Nom</td><td>Prenom</td><td>Stagiaire</td> ...
</table>

J'espère que c'est compréhensible.


Voilà, maintenant c'est que je cherche à faire, c'est remplir ce tableau avec les données que je récupère dans la BDD (un enregistrement BDD -> Une ligne du tableau).

Merci de votre aide.


A voir également:

10 réponses

Un truc du genre je pense:

<table style="width:100%; font-size: 12px>		

<?php
		// Connexion à la base de données
		try
		{
			$bdd = new PDO('mysql:host=HOST;dbname=DBNAME', 'LOGIN', 'MDP');
		}
		catch(Exception $e)
		{
				die('Erreur : '.$e->getMessage());
		}
		// Fin de connexion à la base
		
		// Récupération des info
		$req = $bdd->query('SELECT Num, nom, prenom, stagiaire FROM ma table ORDER BY Num DESC');
		
while ($donnees = $req->fetch())
{
?>
	<tr style="font-style:bold;"><td><?php echo htmlspecialchars($donnees['Num']); ?></td><td><?php echo htmlspecialchars($donnees['Nom']); ?></td><td><?php echo htmlspecialchars($donnees['Prenom']); ?></td><td><?php echo htmlspecialchars($donnees['Stagiaire']); ?></td>
     
	
<?php
} 
?>
</table>
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 15:37
J'ai un erreur sur ces lignes de code :

while($row = mysql_fetch_array($rs)) {
<tr style="font-style:bold;"><td><?php echo
htmlspecialchars($row['nom']); ?></td><td><?php echo
htmlspecialchars($row['prenom']); ?></td><td><?php echo
htmlspecialchars($row['stagiaire']); ?></td><td><?php echo
htmlspecialchars($row['sstraitant']); ?></td></tr>
}

L'erreur est : Parse error: syntax error, unexpected '<' sur la deuxième ligne du code ci-dessus.

As-tu une explication ?

Merci de ton retour.
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
30 nov. 2012 à 15:48
while($row = mysql_fetch_array($rs)) {
?>
<tr style="font-style:bold;"><td><?php echo
htmlspecialchars($row['nom']); ?></td><td><?php echo
htmlspecialchars($row['prenom']); ?></td><td><?php echo
htmlspecialchars($row['stagiaire']); ?></td><td><?php echo
htmlspecialchars($row['sstraitant']); ?></td></tr>
<?php
} 
0
jorge_gomes Messages postés 76 Date d'inscription vendredi 5 février 2010 Statut Contributeur Dernière intervention 28 novembre 2012 5
28 nov. 2012 à 16:20
En PHP tu n'auras qu'à faire un loop sur les éléments de ton tableau pour les placer dans un les cellules correspondantes.

http://php.net/manual/en/control-structures.foreach.php
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
28 nov. 2012 à 17:08
Ok merci je teste ça dans la semaine, et je vous tien au courant.

Si quelqu'un à autre chose à proposer, allez-y ...
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 16:44
Voici mon code complet :
http://www.zimagez.com/zimage/code32.php

Mais j'ai une erreur : Parse error: syntax error, unexpected $end.
Sur la ligne 61, alors qu'il n'y en a pas.

Quelqu'un pour m'aider ??


PS: Merci maka54 c'était ça !
0
A la ligne 46, faut rouvrir la balise php "<?php" deja
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 17:02
Effectivement merci :)

Maintenant, j'ai l'en tête de ma page, mais pas du tout le tableau, j'ai une erreur :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given sur la ligne 40.


Merci de vos retours aussi rapide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 17:06
J'ai réussi à corriger ...

Par contre maintenant j'aimerai avoir une en-tête à mon tableau, c'est à dire que j'aimerai donner un nom au colonnes, pour ne pas avoir que le contenu récupérer de ma base ... ?

De plus dans mon code, il est censé affiché une image (ligne 16), pouvez-vous me dire pourquoi celle-ci n'est pas affichée ?

Merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
30 nov. 2012 à 17:46
Bonsoir keenan,
Pour l'entête d'un tableau, il faut utiliser la balise "<th>" et "</th>"
Donc:
<table>
<tr><th>Colonne1</th><th>..</th><th>..</th></tr>
<tr><td>contenu</td><td>contenu</td><td>contenu</td></tr>
..
<tr><td>contenu</td><td>contenu</td><td>contenu</td></tr>
</table>
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 17:51
D'accord je teste cela la semaine prochaine. Merci
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 17:54
Quoi que :) Désolé je suis unpeu loosé sur l'explication ^^ On va dire que c'est parce que c'est la fin de la semaine.

Tu pourrai me donner un exemple par rapport à mon code, comment l'intégrer dans ma boucle while :) Merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 30/11/2012 à 18:10
Voila le code avec une boucle pour remplir le tableau:
<table> 
	<tr style="font-style:bold;"> 
		<th>Colonne1</th> 
		<th>Colonne2</th> 
		... 
		... 
		<th>DernièreColonne</th> 
	</tr> 
	 while($row = mysql_fetch_array($rs)) 
	 { 
	 } 
</table>
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
30 nov. 2012 à 18:17
Cela s'applique de la même manière à ce genre de code : ?
while($row = mysql_fetch_array($rs)) {
?>
<tr style="font-style:bold;"><td><?php echo
htmlspecialchars($row['nom']); ?></td><td><?php echo
htmlspecialchars($row['prenom']); ?></td><td><?php echo
htmlspecialchars($row['stagiaire']); ?></td><td><?php echo
htmlspecialchars($row['sstraitant']); ?></td><td><?php echo
htmlspecialchars($row['respCO']); ?></td><td><?php echo
htmlspecialchars($row['respCC']); ?></td><td><?php echo
htmlspecialchars($row['datefin']); ?></td></tr><?php
}
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
3 déc. 2012 à 12:14
Ce code fonctionner merci.

J'aurai juste besoin d'une petite précision, comment puis-je faire pour faire correspondre les données que je récupère dans ma BDD à la bonne colonne créée ?

Merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
3 déc. 2012 à 12:21
"$row" contient tous les champs (que tu vas placer dans chaque colonne) d'un seul enregistrement (que tu vas placer dans une ligne de ton tableau. Ainsi:
$row['nom'] contient la valeur du champ "Nom"
$row['prenom'] contient la valeur du champ "prenom"
$row['stagiaire'] contient la valeur du champ "stagiaire"
$row['sstraitant'] contient la valeur du champ "sstraitant"
$row['respCO'] contient la valeur du champ "respCO"
$row['respCC'] contient la valeur du champ "respCC"
$row['datefin'] contient la valeur du champ "datefin"
Ces précisions te suffisent ?
Sinon, soit plus précis, car c'est que je n'ai pas compris ta question.
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
3 déc. 2012 à 13:41
Effectivement je n'ai peut être pas été très précis.

J'ai une partie de mon code qui permet d'afficher l'en-tête des colonnes (<th>...</th>), et une autre partie qui me permet d'afficher le contenu des champs que je récupère dans ma BDD.

Ce que je voudrai, je vais donner un exemple ce sera surement plus explicite, c'est que le 'nom' que je récupère de la BDD, soit affiché dans la colonne "Nom", idem pour le prenom, la date ...

Est-ce plus claire ?


Merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
3 déc. 2012 à 14:30
Pour moi, ce n'est pas plus claire .. j'en suis désolé.
Mais je vais éclaircir ma dernière explication .. c'est peut-être de cela que tu veux parler .. on y va:

Quand tu récupère ton enregistrement mysql_fetch_array($rs) et que tu fais une boucle, pour parcourrir tous les enregistrements while($row = mysql_fetch_array($rs)),
A chaque tour (de boucle), tu as donc un enregistrement complet, contenant, "nom", "prenom", "stagiaire", "sstraitant", "respCO", "respCC" et "datefin".

Admettons ton tableau, avec l'ordre des colonnes comme ceci:
"datefin", "sstraitant", "stagiaire", "respCO", "respCC", "prenom", "nom".

Alors, il faudra écrire dans ton code, dans cet ordre:
<td><?php echo htmlspecialchars($row['datefin']); ?></td>
<td><?php echo htmlspecialchars($row['sstraitant']); ></td>
<td><?php echo htmlspecialchars($row['stagiaire']); ?></td>
<td><?php echo htmlspecialchars($row['respCO']); ?></td>
<td><?php echo htmlspecialchars($row['respCC']); ?></td>
<td><?php echo htmlspecialchars($row['prenom']); ?></td>
<td><?php echo htmlspecialchars($row['nom']); ?></td>

En d'autres termes,
<td><?php echo htmlspecialchars($row['CHAMPS']); ?></td>
tu remplaces le mot CHAMPS par le nom du champs que tu veux afficher dans cette colonne.
Est-ce cela que tu as demandé ?
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
3 déc. 2012 à 17:15
On va y arriver, je ne désespère pas ... :)

Je ne suis pas sûr que cela réponde, en faite actuellement avec mon code, j'ai le tableau avec le nom de colonnes, puis en dessous toutes les lignes avec ce que je récupère de la base de données.

Sauf que ce que je récupère de ma base ne set met pas au bonne endroit dans le tableau :

Voici les lien suivant avec mon code et mon résultat, je pense que tu me comprendra mieux comme cela :
http://www.zimagez.com/zimage/rsultat2.php
http://www.zimagez.com/zimage/code33.php

merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 3/12/2012 à 18:20
Bonsoir keennan,
- Je n'ai pas tout le code .. on va faire avec.
- Dans l'affichage de ta page Web, il y a 13 colonnes, dont la colonne "nom" qui est repris 2 fois .. Pourquoi 2 fois la même valeur ?

Donc, je pars du principe qu'il te faut 12 colonnes:
Nom
Prenom
Stagiaire
SSTraitant
Resp.CO
Resp.CC
CUID
Date de fin
Mail Alerte Manager
Mail Depart
Mail suppression
Valider

Pour afficher les 12 entêtes de colonnes:
<tr> 
 <th>Nom</th> 
 <th>Prenom</th> 
 <th>Stagiaire</th> 
 <th>SSTraitant</th> 
 <th>Resp.CO</th> 
 <th>Resp.CC</th> 
 <th>CUID</th> 
 <th>Date de fin</th> 
 <th>Mail Alerte Manager</th> 
 <th>Mail Depart</th> 
 <th>Mail suppression</th> 
 <th>Valider</th> 
</tr>

La requête doit être changée comme ceci (en espérant que les noms de champs sont bien encodés comme ceux-là):
$strSQL = "SELECT nom, prenom, stagiaire, sstraitant, respCO, respCC, CUID, datefin, MailAlerteManager, MailDepart, Mailsuppression, Valider FROM newcollab WHERE ...";

Et pour afficher les valeurs:
Affichage des valeurs
while($row = mysql_fetch_array($rs)) 
{ ?> 
 <tr style="font-style: bold;"> 
  <td> 
   <?php echo htmlspecialchars($row['nom']); ?> 
  </td> 
  <td> 
   <?php echo htmlspecialchars($row['Valeur']); ?> 
  </td> 
<?php }?>
Il faut remplacer le mot en gras "Valeur" par un des nom de champs que tu as besoin d'afficher.
C'est tou.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
3 déc. 2012 à 18:23
Le principe de la requête est d'annoncer la couleur de ce que tu veux voir afficher. Exemple:
$strSQL = "SELECT Champ1, Champ14, Champ12, Champs203, Champs2, Champ... FROM NomDeLaTable WHERE Condition"

A partir de là tu peux afficher tous les champs contenu dans ta requête et seulement ceux-là !
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
3 déc. 2012 à 21:18
Je vais revoir mon code demain, car il ressemble beaucoup à ce que tu me dit, je vais vérifier et je te tiens au courant. Car je ne suis pas sur que en faisant cela les données et les en-tête soient bien alignés.

Des que j'ai essayé je te dit, merci de ton suivi et de ta sympathie.
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
4 déc. 2012 à 14:25
Bonjour Heliotte,

voilà le résultat final de ce code :
http://hpics.li/50aedef

Maintenant tu devrai mieux comprendre ma question :
Comment aligner les données récupérées avec l'en-tête de la colonne, histoire que ça fasse quelque chose de correcte quand même ... ?

Merci.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
4 déc. 2012 à 19:15
Cela veux dire que CA MARCHE ?
Attention toutefois à la date dans le coin supérieur gauche qui n'est pas à jour ! .. On est en décembre !!
Pense à mettre résolu, merci.
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
5 déc. 2012 à 10:26
Ca marche OUI ET NON.

Comme tu peut le voir, ce n'est pas très esthétique ... Sait tu comment je peut faire pour aligner les données et avec le titre des colonnes ... ?

Merci.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 déc. 2012 à 13:07
salut,
Par défaut th est centré et td est aligné à gauche , si tu faisait cette mise en forme avec du CSS

tu rajoutes dans la partie <head></head> de ta page:

<style type="text/css">
td, th {
   text-align:center;
}
</style>


vas voir ce site:
https://openweb.eu.org/articles/tableaux_css
0
keennan Messages postés 128 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 15 octobre 2014 22
5 déc. 2012 à 14:27
Merci à tout les deux. Je vais tester ca devrait marche.

Heliotte : Merci pour la date, mais c'est normal, c'est la date du jour -30 normalement qui est affiché.

Je passe le sujet en résolu dès que ce problème de centrage est résolu...
0