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

Résolu
pontarose -  
 pontarose -
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>
A voir également:

43 réponses

pontarose
 
Bonjour,

J'ai mis mon scriptphp dans /var/www/apache2-default

Quand je tape http://localhost/ dans firefox j'ai bien la page d'accueil, du moins je vois inscrit :
index of/
apache2-default

Je suis sous ubuntu
0
pontarose
 
Bonjour ,

Je ne vois pas comment récuperer la valeur de $famille_id.? Faut que je fasse une requête
Sachant que je suis parti d'un formulaire pour remplir ma base de donnée et que maitenant je fais appel à celle-ci pour obtenir mon tableau HTML.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

veux-tu afficher toutes les lignes de la table 'famille' ?

si oui, ta première requête pourrait être :
$requete="SELECT famille_id, famille_name, famille_number
FROM famille;

et pour définir la deuxième tu récupère 'famille_id' de la ligne en cours de traitement :
$requete2="SELECT enfant_nom, enfant_age, enfant_yeux
	FROM enfant
	WHERE famille_id=".$execution['famille_id'];

0
pontarose
 
Merci beaucoup pour ta patience Dalida.

Serait tu pourquoi je n'arrive pas a visualiser mon tableau HTML?
Pour que mon script PHP soit interpreté par Apache2 et que le résultat HTML soit "visible", je lance mon script depuis un navigateur Fire Fox.
Mon script est dans le répertoire var/www/apache2-default
Donc je lance http://localhost/apache2-default/script.php mais je n'obtiens rien; ma page est vide.

Si je tapes dans firefox:http://localhost/
je tombe bien sur la page d'acceuil Apache

Ma distribution est ubuntu
0

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

Posez votre question
pontarose
 
Re-salut,

J'ai trouvé la solution a mon problème j'avais mal défini mes balises elle n'était pas dans le bon ordre
<body>
<style>
</style>
</body>
<table>
</table>
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
crée un fichier php dans ton local par défaut que tu nommes index.php.
dedans tu colles :
<?php phpinfo() ?>


et tu actualises http://localhost/ dans FF, en vidant le cache avec [ Ctrl ] + [ F5 ].
0
pontarose
 
Merci.

Les différentes infos saisies lors de mon formulaire (formulaire a plusieurs pages) ont été stockés dans ma base de donnée.
Maintenant j'aimerais qu'une partie de ces infos apparaissent dans mon formulaire sous forme d'une liste . Et lorsque je clique sur un élément de cette liste je dois voir apparaitre le tableau associé a cet élément.

formulaire.php :
Dans mon formulaire je peux sélectionner un nom de famille et pour chaque nom de famille j'ai un lien cliquable.

while ($row= mysql_fetch_assoc($execution))
{

print ('<td align =center><a href="http:/apache2-default/tableau.php">'.$row['famille_name'].'</a></td>');
print('</tr>');
}

Jusqu'ici tout va bien.

Mais comment indiquer que pour l'élément que j'ai cliqué je veux un tableau HTML qui lui est associé. ???


Si je fais
Dans tableau.php :

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

$requete2="SELECT enfant_nom, enfant_age, enfant_yeux
FROM enfant
WHERE famille_id=$execution['famille_id'];


Alors là, quel que soit le nom que je clique j'obtiens le même tableau HTML.

Je pense que je ne peux pas passer par $_POST pour récupérer la valeur de la variable famille_name pour pouvoir ensuite l'insérer dans mes requêtes.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
as-tu réussi à faire tourner ton serveur ?

pour le formulaire tu peux le faire avec $_POST mais par $_GET ce sera bien plus simple, d'autant que les infos transitant ne sont pas sensibles (id de la famille).

il suffit de modifier le lien vers la famille.
while ($row= mysql_fetch_assoc($execution))
{

print ('<td align =center><a href="http:/apache2-default/tableau.php?id='.$row['famille_id'].'">'.$row['famille_name'].'</a></td>');
print('</tr>');
} 

ce qui donnera un lien du type : "http:/apache2-default/tableau.php?id=16"

dans ton script 'tableau.php' tu récupèreras l'info par :
if(isset( $_GET['id']) && !empty( $_GET['id']))
{
        $famille_id = $_GET['id'];
}
0
pontarose
 
Bonjour,

Oui j'ai réussi a faire tourner mon server tous marche.


A partir de 3 enfants j'ai un affichage décalé pour mon tableau HTML.En effet, j'ai un décalage au niveau de mon alignement.
Voiçi un exemple :
Au lieu d'avoir cela :
famille_name famille_number enfant_yeux enfant_age
dupond 3 bleu 18
dupond 3 marron 16
dupond 3 marron 14


j'aimerais avoir cela :(pour une même famille fusion des 3 lignes pour les champs famille_name et famille_number)
famille_name famille_number enfant_yeux enfant_age
bleu 18
dupond 3 marron 16
marron 14


Or après avoir lancé mon script j'obtiens :
famille_name famille_number enfant_yeux enfant_age
bleu 18
dupond 3 marron 16
marron 14

la troisième ligne est décalé de un champ vers la gauche!!

Dans mon script je fais une fusion des lignes en fonction du nombre d'enfants.


while ($row = mysql_fetch_assoc($execution))
{
$requete2="SELECT enfant_yeux, enfant_age
FROM enfant
WHERE famille_id=".$execution['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");
exit;
}

print("<tr>");
print('<td align center rowspan="$num_rows2">'.$row['famille_name'].'</td>
<td align center rowspan="$num_rows2">'.$row['famille_number'].'</td>');

while ($ligne = mysql_fetch_assoc($execution2))
{
print('<td>'.$ligne['enfant_yeux'].'</td>
<td>'.$ligne['enfant_age'].'</td>');

print("</tr>");
}
}
0
Alain42
 
execution2 = mysql_query($requete2) or die("erreur au niveau de la requête");

il manque le $ au début de la ligne.

Pour le décalage est ce que les titres des colonnes famille_name famille_number enfant_yeux enfant_age sont bien dans les même balises <table></table> que le résultat de tes requettes ? tu n'as pas deux tableaux séparés ?

Au passage mets des <th> au lieu des <td> pour les titres ça te les met en gras.
0
pontarose
 
Merci c'est une faute de frappe pour $.

Oui mes titres sont bien dans les même balises <table></table> que le résultat de tes requettes.

<table border="1">
<tr>
<th>Famille Name<th>
<th>Famille Number<th>
<th>Yeux enfant<th>
<th>Age enfant<th>
</tr>
<?php

<--les requêtes ci-dessus -->

mysql_close($connexion);
?>
</table>

Ce qui est étonnat c'est que ce décalage intervient a partir d'un nombre d'enfants supérieur ou égal à 3. (càd $num_rows2>=3).
Pour 2 pas de souci!!!
0
Alain42
 
Il doit te manquer des balises <tr> </tr> dans ta boucle while ($ligne = mysql_fetch_assoc($execution2))

pour que le tableau avec rowspan marche il faut qu'il ait cette structure:

<table>
<tr>
<td rowspan="2"> A</td>
<td>A11</td>
<td>A12</td>
</tr>
<tr>
<td>A21</td>
<td>A22</td>
</tr>

</table>


alors essayes:

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

print("</tr>");
} 
0
pontarose
 
Bonjour,

en fesant cela je n'ai pas la fusion de mes lignes et j'ai un décalage de 2 colonnes vers la gauche.

Je veux que X lignes (dépend du nombre d'enfants soit dans mon script $num_rows2) de mes deux premières colonnes soit fusionnés.
0
pontarose
 
Bonjour,
cela fait deux jours que je suis sur mon problème et je ne trouve toujours pas de solution quelqu'un aurait-il une idée ou une solution a me suggérer?

Je veux que X lignes (dépend du nombre d'enfants ,soit dans mon script $num_rows2) de mes deux premières colonnes soit fusionnés.
Cependant a partir de $num_rows2≤=3, j'ai un décalage pour ma troisième lignes de 2 colonnes (d'après l'exemple ci-dessus : marron se trouve dans la colonne famill_name et 14 se trouve dans la colonne famille_number).

j'aimerais avoir cela :(fusion des 2 colonnes famille_name et famille_number et ensuite avoir sur chaque ligne les caractéristique pour chaque enfant. Le nombre de lignes dépend du nombre d'enfants)
famille_name famille_number enfant_yeux enfant_age
bleu 18
dupond 3 marron 16
marron 14


voiçi mon script :
<table border="1">
<tr>
<th>Famille Name<th>
<th>Famille Number<th>
<th>Yeux enfant<th>
<th>Age enfant<th>
</tr>

<?php

<--connexion a la base de donnée , requête -->



while ($row = mysql_fetch_assoc($execution))
{
$requete2="SELECT enfant_yeux, enfant_age
FROM enfant
WHERE famille_id=".$execution['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");
exit;
}

print("<tr>");
print('<td align center rowspan="$num_rows2">'.$row['famille_name'].'</td>
<td align center rowspan="$num_rows2">'.$row['famille_number'].'</td>');

while ($ligne = mysql_fetch_assoc($execution2))
{
print('<td>'.$ligne['enfant_yeux'].'</td>
<td>'.$ligne['enfant_age'].'</td>');

print("</tr>");
}
}
mysql_close($connexion);
?>
</table>
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

est-ce quelque chose comme ce tableau ?
je n'ai pas le temps de me pencher sur l'algo, mais ça me permettra d'y réfléchir.
j'essaie de repasser dans la journée.
0
pontarose
 
Bonjour,
Oui c'est tout a fait cela .
Sauf que pour les familles suivantes par exemple Barottzi si tu met 9 pour famille_number , alors il faut que tu aient 9 lignes correspondant pour les deux colonnes enfant_yeux et enfant_age. Là tu as mis q'une ligne.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
heu, oui…
mais j'ai rempli au pif, par contre l'info peut avoir son importance pour l'algo.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
et avec quelque chose comme ça :
<?php
while ($row = mysql_fetch_assoc($execution))
{
	$requete2="SELECT enfant_yeux, enfant_age
	FROM enfant
	WHERE famille_id=".$execution['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");
		exit;
	}

	print("<tr>");
	print('<td align center rowspan="$num_rows2">'.$row['famille_name'].'</td>
	<td align center rowspan="$num_rows2">'.$row['famille_number'].'</td>');

	$inline = true;

	while ($ligne = mysql_fetch_assoc($execution2))
	{
	
	    if($inline == true)
	 	{
			print('<td>'.$ligne['enfant_yeux'].'</td><td>'.$ligne['enfant_age'].'</td>'); 
			print("</tr>");
			$inline = false;
		}
		else
		{
			print("<tr>");
			print('<td colspan="3">'.$ligne['enfant_yeux'].'</td>
			<td colspan="3">'.$ligne['enfant_age'].'</td>');
			print("</tr>");
		}
	}
}
?>

par contre il faudrait ajouter le '</tr>' dans le cas ou il n'y a pas d'enfant.
0
pontarose
 
Ca ne marche toujours pas.
La j'ai mon décalage même pour $num_rows2=2. et j'ai la fusion de ma troisième et quatrième colonnes
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
peux-tu me faire un copier/coller du code rendu par le serveur ?
0