Problème de Boucle imbriquée

Eléphant du PHP | 100 Messages

16 janv. 2010, 20:07

Bonsoir à Toutes et à Tous,

J'aimerai afficher la table que j'ai choisie et afficher tous les enregistrements sans connaitre au préalable le nombre de champs que cette table détient en sachant que chaque table est différente mais je n'y arrive pas, voici ce que j'ai fait mais
cela ne m'affiche pas ce que je désire

J'affiche toutes mes bases de données et je choisis parmi un select

Variable de ma base de données : $BaseDonnees

J'affiche toutes mes Tables et je choisis parmi un select
Variable de ma table : $table

Je récupère le nombre de champs contenus dans ma base avec $nombrechamps
Jusqu'ici tout va bien

C'est ici que je rame lamentablement
<?php

$resultats = mysql_query("SELECT * FROM $table ");
$nombrechamps = mysql_num_fields($resultats);
echo "<br />";
echo 'Nombre des Champs dans la Table <b>'.$table.'</b> : '.$nombrechamps;


echo "<br />";
$i =0;
$ii = 0;
while ($ligne = mysql_fetch_row($resultats))
{
$i =0;
echo $ii.' : '.$ligne[$ii].' ';
echo "<br />";
foreach($ligne as $nombrechamps)
{
echo $i.' : ';
$row = mysql_fetch_row($resultats);
echo $row[0].' : ';
echo $row[$i]."<br />";
$i++;
}

echo "<br />";

$ii++;
$i=0;
if ($ii == $nombrechamps) {
echo 'dedans';
break;
}
}


mysql_close($connect);
?>[/php]

Merci de vos suggestions
Bonne soirée

Bernard

Mammouth du PHP | 661 Messages

16 janv. 2010, 23:03

je dirais que ton foreach est complètement aberrant !...

testes plutôt un truc comme ça :
foreach($ligne as $row)
{
  echo $i.' : '.$row[0].' : '.$row[1];
$i++;
}


Eléphant du PHP | 100 Messages

17 janv. 2010, 11:09

Bonjour à TOutes et à Tous,

Merci Nours312,


Je pense que tu n'es pas loin du résultat,


Effectivement c'est la première fois que j'utilise Foreach et ce n'est pas une réussite

Ce que j'aimerias comme résultat c'est que ma boucle parcours tous mes champs un par un en me l'affichant et ensuite qu'il passe au deuxième enregistrement etc... Facile à dire n'est-ce pas ?

J'ai repris ton code que j'ai inséré:
					$resultats = mysql_query("SELECT * FROM $table ");
					$nombrechamps = mysql_num_fields($resultats);
					echo "<br />";
					echo 'Nombre des Champs dans la Table <b>'.$table.'</b>  : '.$nombrechamps;

					echo "<br />";
					$i =0;
					$ii = 0;
					   while ($ligne = mysql_fetch_row($resultats))
					{
						echo $ii.' : '.$ligne[$ii].'  ';
						echo "<br />";
[b]						foreach($ligne as $row)
						{

							echo $i.' : '.$row[0].' : '.$row[1];
							$i++;
						}[/b]

						echo "<br />";

						$ii++;
						$i=0;	
						if ($ii == $nombrechamps) {
							break;
						}
					}
Le résultat donne des erreurs:
Notice: Uninitialized string offset: 1 in C:\wamp\www\UtilitairePHP\affichetable.php on line 103
0 : 1 : 1 : A : A2 : J : A3 : 0 : 34 : 0 : 65 : V : e6 : 1 : ,7 : M : a8 : S : E9 : 9 : 010 : 8 : .
Notice: Uninitialized string offset: 1 in C:\wamp\www\UtilitairePHP\affichetable.php on line 103
11 : 5 :
Notice: Uninitialized string offset: 1 in C:\wamp\www\UtilitairePHP\affichetable.php on line 103
12 : 3 : 13 : 2 : 014 : . : .15 : . : .16 : . : .17 : . : .18 : 2 : 019 : 0 : 020 : n : o21 : A : u22 : 1 : 9
Notice: Uninitialized string offset: 1 in C:\wamp\www\UtilitairePHP\affichetable.php on line 103
23 : 1 : 24 : E : q25 : E : l
Notice: Uninitialized string offset: 1 in C:\wamp\www\UtilitairePHP\affichetable.php on line 103
26 : 2 : 27 : 4 : 0
1 : B206

En tout cas merci beaucoup, je vais essayé de bosser sur ton code
Bon dimanche

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 janv. 2010, 19:46

Je ne comprend pas bien le format que tu veux donner en sortie, mais peut être que ceci te permettra d'y voir plus clair :
echo '<table>';
while ($row = mysql_fetch_assoc($rs)) { // pour chaque enregistrements
	echo '<tr>';
	foreach ($row as $lib => $val) { // parcours chacun des champs de l'enregistrement
		echo '<td>' . $val . '</td>';
	}
	echo '</tr>';
}
echo '</table>';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 100 Messages

17 janv. 2010, 20:05

Merci Ryle,

j'ai trouvé ceci qui fonctionne comme je l'espérais :

					$resultats = mysql_query("SELECT * FROM $table ");
					$nombrechamps = mysql_num_fields($resultats);
				
					
					echo "<br />";
					echo 'Nombre des Champs dans la Table <b>'.$table.'</b>  : '.$nombrechamps;

					echo "<br />";
					$i =0;
					$ii = 1;
					   while ($ligne = mysql_fetch_row($resultats))
					{
						echo "<br />";
						$i=0;
[b]						echo '<b>Enregistrement N° :'.$ii.'</b><br />';
						//--------------------------------------------
					[color=#4000FF]	for($i=0;$i < $nombrechamps;$i++)
						{
							echo ' Champ : '.$i.'  :  ';
							echo $ligne[$i].'<br />';
														
						}[/color] [/b]
						//--------------------------------------------
						$ii++;
						$i=0;	
						if ($ii == $nombrechamps) {
						}
					}

					mysql_close($connect);	
Merci à tous le monde et bonne fin de soirée
Amicalement
Bernard