Base de données, HTML: visualiser lrésultats

Résolu/Fermé
pontarose - 29 août 2007 à 17:23
 pontarose - 7 sept. 2007 à 16:04
Bonjour,
je voudrais visualiser mon formulaire (données entrés dans une base de donnée) sous forme de tableau html.
Je lance mon sritp sous root comme cela : php page.php je vous avoue que je ne sais si c'est comme cela que l'on procède!!!


qqn pourrait m'aider?



page.php
<html>
<body>
<table border="1">
<tr>
<th>Complex Name<th>
<th>Subunit Number<th>
<th>Subunit Name<th>
<th>Systematic Gene Name<th>
<th>Description<th>
<th>Stochiometrie<th>
</tr>

<?php

$servername = 'localhost';
$user = 'root';
$password = ''; //je n'ai pas de mot de passe root
$dbname = 'db';

$connexion= mysql_connect($servername,$user, $password) or die ("problème de connexion au serveur");
mysql_select_db($dbname,$connexion) or die ("problème :base de donnée non trouvé");


$requete=
"SELECT famille_name, famille_number
FROM famille";

$execution = mysql_query($requete) or die("erreur au niveau de la requête");
$ligne = mysql_fetch_array($execution);
while($ligne)
{
print "
<td>".$ligne['famille_name']."</td>
<td>".$ligne['famille_number']."</td>";

$requete2=
"SELECT enfant_age, enfant_yeux
FROM enfant, famille
WHERE famille.famille_id = enfant.famille_id";

$execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");
$ligne2 = mysql_fetch_array($execution2);
while($ligne2)
{
print "
<td>".$ligne['age']."</td>
<td>".$ligne['yeux']."</td>";
}
}
mysql_close($connexion);//déconnexion a la DB
?>
</table
</body>
</html>

43 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
29 août 2007 à 17:38
salut,

bah ça a pas l'air mal tout çà !
tu as un problème avec ?

sinon tu peux déjà l'améliorer en évitant les guillemets et en leurs préférant les apostrophes.
un tuto pour savoir quand utiliser quoi.
0
Re-salut,

En fait avec le script (ci-dessus) cela m'affiche le html tel que je l'ai écrit rien n'est interprété par php5.

De plus j'ai lu ton tuto j'avoue que j'ai un peu de mal avec ' et " . Et donc si j'ai bien compris je dois écrire

print "
<td>'.$ligne['famille_name'].'</td>
<td>'.$ligne['famille_number'].'</td>";


mais cela me met erreur de syntaxe


Ce qui est bizare c'est que tous les caractère de mon script sont en noir ; j'ai une erreur mais ....
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
29 août 2007 à 18:40
"rien n'est interprété par php5"
as-tu installé un serveur ?
fonctionne-t-il ?
ton fichier est-il dans le dossier ad hoc ?

pour les guillemets :
echo ('<td>'.$ligne['famille_name'].'</td>
<td>'.$ligne['famille_number'].'</td>'); 

les guillemets quand il y a quelque chose à interpréter.
les apostrophes quand tu veux imprimer tel quel.

il vaut mieux utiliser 'echo()'
0
J'ai progressé...

Cela m'affiche <td>3<td>res></td> x fois. En effet 3 et res correspond bien a ce que je veux obtenir ceux-ci sont présent dans ma base de donnée

Je peux obtenir cela si et seulement si j'enlève cette partie de mon script et que je la met a la fin :
<html>
<body>
<table border="1">
<tr>
<th>Complex Name<th>
<th>Subunit Number<th>
<th>Subunit Name<th>
<th>Systematic Gene Name<th>
<th>Description<th>
<th>Stochiometrie<th>
</tr>

J'ai un server apache2 qui fonctionne
mon fichier est avec tous mes autres script dans /var/www/apach2-default
Je n'ai pas de fichier ad hoc!
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
29 août 2007 à 20:09
• tu n'as pas de DocType à ton document ;
• tu n'as pas de <head> à ton document ;
• la balise fermante </table> est mal écrite ;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>

		<title></title>

		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

	</head>

	<body>

			<table border="1">
				<tr>
					<th>Complex Name<th>
					<th>Subunit Number<th>
					<th>Subunit Name<th>
					<th>Systematic Gene Name<th>
					<th>Description<th>
					<th>Stochiometrie<th>
				</tr>

<?php

$servername = 'localhost';
$user = 'root';
$password = ''; //je n'ai pas de mot de passe root
$dbname = 'db';

$connexion= mysql_connect($servername,$user, $password) or die ("problème de connexion au serveur");
mysql_select_db($dbname,$connexion) or die ("problème :base de donnée non trouvé");


$requete=
"SELECT famille_name, famille_number
FROM famille";

$execution = mysql_query($requete) or die("erreur au niveau de la requête");
$ligne = mysql_fetch_array($execution);
while($ligne)
{
print "
<td>".$ligne['famille_name']."</td>
<td>".$ligne['famille_number']."</td>";

$requete2=
"SELECT enfant_age, enfant_yeux
FROM enfant, famille
WHERE famille.famille_id = enfant.famille_id";

$execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");
$ligne2 = mysql_fetch_array($execution2);
while($ligne2)
{
print "
<td>".$ligne['age']."</td>
<td>".$ligne['yeux']."</td>";
}
}
mysql_close($connexion);//déconnexion a la DB
?>
		</table>

	</body>

</html>

pour ton tableau, tu crées 6 colonnes mais n'en remplis que 4.
tu insères directement des cellules sans insérer de ligne.
0
Bonjour,

J'ai allégé mon script pour essayer de comprendre le problème de plus je me suis rendu compte de certaines de mes erreurs

script.php:

<?php
header("Content-Type: application/xhtml+xml;charset=utf-8");
echo '<?xml version="1.0" encoding="iso-8859-15" ?>';
?>

<html xmlns="http://www.w3.org/1999/xhtml">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Tableau</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<table border="1">
<tr>
<th>Famille Name</th>
<th>Enfant Number</th>
</tr>


<?php
$servername = 'localhost';
$user = 'root';
$password = '';
$dbname = 'db';

$connexion= mysql_connect($servername,$user, $password) or die ("problème de connexion au serveur");
mysql_select_db($dbname,$connexion) or die ("problème :base de donnée non trouvé");


$requete=
"SELECT famille_name, famille_number
FROM famille
WHERE famille_id =1";

$execution = mysql_query($requete) or die("erreur au niveau de la requête");
$ligne = mysql_fetch_array($execution);
while($ligne)
{

//print ("$ligne");
print '<tr>
<td>'.$ligne['famille_name'].'</td>
<td>'.$ligne['famille_number'].'</td>
<tr>';
}
mysql_close($connexion);//déconnexion a la DB
?>
</table>
</body>
</html>


Quand je lance le script en ligne de commande j'obtiens cela tel quel

<html xmlns="http://www.w3.org/1999/xhtml">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Tableau</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<table border="1">
<tr>
<th>Famille Name</th>
<th>Enfant Number</th>
</tr>

puis <td>dupond<td>
<td>3<td><tr> qui défile continuellement;

Je ne comprend pas car dans ma base de donnée je n'ai qu'un seul élément correspondant a famille_id=12 et c'est la famille Dupond pourquoi cette répétion d'affichage.
Pourquoi ce n'est pas interprété de façon a ce que j'obtiennne le tableau?

Quand je lance mon script http://localhost/apache2-default/script.php; mon script tourne je n'obtiens rien et je suis obligé de forcer mon sysytème pour quitter.


Peut-on m'aider
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
30 août 2007 à 21:32
salut,

je n'ai pas regarder le script php dans un premier temps, j'aurais dû, cela t'aurait épargner du temps.

tu as créé une boucle infinie. '$ligne' est toujours égale à 'true' si il y a au moins une ligne extraite.

je te laisse regarder la description de la fonction mysql_fetch_assco(), tu comprendras sans plus d'explications !

dans le tableau rendu par le serveur les cellules de données ne sont pas incluses dans une ligne.
il faut ajouter un "echo('<tr>');" avant la boucle et le refermer après.

dans le rendu je ne vois pas non plus les '<th>' → ???
0
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 2
31 août 2007 à 10:52
Merci de tes indications. J'ai désormais :

$execution = mysql_query($requete) or die("erreur au niveau de la requête");
$num_rows = mysql_num_rows($execution);
if ($num_rows == 0)
{
print("Aucune ligne trouvée.");
exit;
}
$row = mysql_fetch_assoc($execution);

print("<tr>");

while ($row)
{
print '
<td>'.$row['famille_name'].'</td>
<td>'.$row['famille_number'].'</td>
';
}
mysql_close($connexion);
print("</tr>");
?>
</table>
</body>
</html>


J'obtines toujours mon script qui tourne en m'affichant continuellement
<td>Dupond</td><td>3</td>

Je ne dois pas avoir de th car il correspondent au titre de mes 2 colonnes? non a moins que je me trompe.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
31 août 2007 à 11:40
salut,

pour le '<tr>' ça doit aller, à toi de nous dire.

"J'obtines toujours mon script qui tourne en m'affichant continuellement "
???

euh, tu as suivi le lien que je t'ai indiqué ???
il propose cet exemple :
<?php

$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
echo "Impossible de se connecter à la base de données : " . mysql_error();
   exit;
}

if (!mysql_select_db("mydbname")) {
   echo "Impossible de sélectionner la base mydbname : " . mysql_error();
   exit;
}

$sql = "SELECT id as userid, fullname, userstatus 
FROM   sometable
WHERE  userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
   echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();
   exit;
}

if (mysql_num_rows($result) == 0) {
   echo "Aucune ligne trouvée, rien à afficher.";
   exit;
}

// Tant qu'une ligne existe, place cette ligne dans la variable $row
// sous la forme d'un tableau associatif.
// Note : Si vous n'attendez qu'une seule ligne, oubliez la boucle
// Note : Si vous utilisez extract($row); dans la boucle suivante
//       vous créerez $userid, $fullname et $userstatus
while ($row = mysql_fetch_assoc($result)) {
   echo $row["userid"];
   echo $row["fullname"];
   echo $row["userstatus"];
}

mysql_free_result($result);

?>

0
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 2
31 août 2007 à 16:44
Merci beaucoup.
Je pensais que je pouvais décomposé l'écriture!

pour un élement x de ma table A je dois récupérer des infomations (infos 1 et infos 2) se trouvant dans une table B de ma base de donnée des informations. Toutes ses données étant à mettre sur cette même ligne de mon tableau HTML.

Le souci est que pour un élement x de ma table A je ne récupère pas LES infos 1 et infos 2 lui étant associé, mais je récupère tous les infos 1 et infos 2 de ma table;
soit pour un élément x je récupère infos 1 et infos 2 de l'élément x mais aussi de l'élément y,h...

J'ai procédé ainsi
dans ma boucle while
je met une deuxieme requete me permettant de selectionner les infos 1 et 2(en fesant une liaison entre les deux table A et B)
puis je fais une outre boucle while
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
31 août 2007 à 17:09
salut,

il y a moyen de le faire en une seule requête avec une clause 'INNER'. mais il te faut un champ dans la table B qui te permette d'identifier la ligne qui doit être retournée.
il faudrait dans la table B un champ qui contienne l'identifiant de la ligne de la table A à laquelle les informations de B se rapportent.

regarde ces deux cours je crois qu'ils seront parfaits pour te lancer.
en particulier le premier à la page 62.
0
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 2
31 août 2007 à 18:07
Re salut Dalida,
Je regarde pour inner mais je t'avoue que mon erreur m'intrigue et que je ne vois pas du tout ou je fais une erreur au niveau de mes boucles .
Peut tu jeter un coup d'oeil SVP


$requete=
"SELECT DISTINCT famille_id, famille_name, famille_number
FROM famille";

$execution = mysql_query($requete) or die("erreur au niveau de la requête");
mysql_num_rows() pour récupérer le nbre de lignes d'un résultat
$num_rows = mysql_num_rows($execution);

if ($num_rows == 0)
{
print("Aucune ligne trouvée pour ma requete sur le complex.");
exit;
}

while($row= mysql_fetch_assoc($execution) )
{
$requete2=
"SELECT enfant_nom, enfant_age, enfant_yeux
FROM famille, enfant
WHERE famille.famille_id = enfant.famille_id";

$execution2 = mysql_query($requete2) or die("erreur au niveau de la requête");
$num_rows2 = mysql_num_rows($execution2);

if ($num_rows2 == 0)
{
print("Aucune ligne trouvée pour ma requete sur le complex.");
exit;
}



while ($ligne = mysql_fetch_assoc($execution2))
{
print("</tr>");
print('<td>'.$famille_name['famille_name'].'</td>
<td>'.$famille_number['famille_number'].'</td>');

print('<td>'.$ligne['enfant_nom'].'</td>
<td>'.$ligne['enfant_age'].'</td>
<td>'.$ligne['enfant_yeux'].'</td>');

print("</tr>");
}
}
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
31 août 2007 à 18:12
je dirais que tu fais référence à des variables qui n'existent pas dans le 2ème 'While()'.
j'ai modifié ce qui est souligné :
while ($ligne = mysql_fetch_assoc($execution2))
{
	print("<tr>");
	print('<td>'.$execution['famille_name'].'</td>
	<td>'.$execution['famille_number'].'</td>');

	print('<td>'.$ligne['enfant_nom'].'</td>
	<td>'.$ligne['enfant_age'].'</td>
	<td>'.$ligne['enfant_yeux'].'</td>');

	print("</tr>");
}

0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
31 août 2007 à 18:17
pour le 'INNER JOIN' tu peux essayer :
"SELECT famille.famille_id, famille_name, famille_number, enfant_nom, enfant_age, enfant_yeux
FROM famille INNER JOIN enfant USING(famille_id)"

le 'DISTINCT' ne doit pas être nécessaire en supposant qu'une famille soit unique.
0
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 2
31 août 2007 à 18:33
oui c'est une erreur que j'ai faite en reccopiant

j'ai bien print('<td>'.$execution2['famille_name'].'</td>

Le truc c'est que pour une famille (famille Dupond), j'ai tous les enfants qui lui sont associés

Je m'acharne....car je pense que c'est une erreur toute bête
0
Dès ton premier post j'ai lu:

Je lance mon sritp sous root comme cela : php page.php je vous avoue que je ne sais si c'est comme cela que l'on procède!!!


Si tu veux que ton script PHP soit interpreté par Apache et que le résultat HTML soit "visible" il faut que tu lances ton script depuis un navigateur Internet Explorer ou Fire Fox.

Si tu es sous Linux, tu tapes dans la barre d'adresse de FireFox http://localhost/repertoire_de_ton_site/script.php

il faut que ton script php soit dans le repertoire /var/www/rep_site ou /var/www/html/rep_site
0
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 2
31 août 2007 à 19:00
Je n'ai aucun de ces répertoires
j'ai var/www/apache2-default

Je tape donc http://localhost/apache2-default/script.php je n'ai rien qui apparait. (feuille blanche)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
31 août 2007 à 19:10
je vais ouvrir les yeux, un jour, promis !

si tu ne dis pas de quelle famille tu veux les enfants…
$requete="SELECT famille_id, famille_name, famille_number
FROM famille WHERE famille_id=".$famille_id;

$requete2="SELECT enfant_nom, enfant_age, enfant_yeux
	FROM enfant
	WHERE famille_id=".$famille_id;

et plus haut dans la code il faut définir la valeur de '$famille_id'.
pour le moment tu n'as qu'à coder cette valeur en dur, ensuite tu la récupèrera dynamiquement.
0
Ou as tu mis ton scriptphp ?
0
Si tu tapes dans firefox:

http://localhost/

As tu la page d'acceuil Apache ou "it work" ?

As tu configuré / initialisé ton serveur web sur ta machine linux ?

Quelle est ta distribution ?
0