J'ai donc ce genre de projet pour avoir un poste divisé en plusieurs provinces. J'ai deux tableaux multidimensionnels avec table1 et table2, j'ai essayé de le faire écho avec la fonction foreach et etc. mais toujours une erreur. Voici mon tableau:
<?php $a=mysql_query("select * from province"); while($m1=mysql_fetch_array($a)){ $result[]=$m1; } $output=[]; $i=0; foreach($result as $r){ $b=$r['id_province']; $c=mysql_query("select * from news where id_province=".$b); $output[$i][$b]['table1']=$r; $dummy=[]; while($response = mysql_fetch_array($c)){ $dummy[] = $response; } $output[$i][$b]['table2']=$dummy; $i++; }
Je n'ai aucune idée de comment récupérer plus de 2 tables dans mon tableau avec. Donc je répète encore je veux faire écho à ce 2 tableau la 1ère province avait 2 nouvelles et la 2e province avait aussi 2 nouvelles, ce que je veux faire est de faire écho à ces 2 nouvelles en triant par province.
Ps. Ceci est mon code pour afficher la sortie des tableaux
array(2) { [0]=> array(1) { [1]=> array(2) { ["table1"]=> array(12) { [0]=> string(1) "1" ["id_province"]=> string(1) "1" [1]=> string(13) "Province A" ["nm_province"]=> string(13) "Province A" } ["table2"]=> array(2) { [0]=> array(58) { [0]=> string(2) "43" ["id_news"]=> string(2) "43" [1]=> string(1) "1" ["id_province"]=> string(1) "1" [2]=> string(23) "News A" ["nm_news"]=> string(23) "News A" } [1]=> array(58) { [0]=> string(3) "123" ["id_news"]=> string(3) "123" [1]=> string(1) "1" ["id_province"]=> string(1) "1" [2]=> string(21) "News B" ["nm_news"]=> string(21) "News B" } } } } [1]=> array(1) { [2]=> array(2) { ["table1"]=> array(12) { [0]=> string(1) "2" ["id_province"]=> string(1) "2" [1]=> string(23) "Province B" ["nm_province"]=> string(23) "Province B" } ["table2"]=> array(2) { [0]=> array(58) { [0]=> string(2) "44" ["id_news"]=> string(2) "44" [2]=> string(1) "2" ["id_province"]=> string(1) "2" [5]=> string(24) "News A Province B" ["nm_news"]=> string(24) "News A Province B" } [1]=> array(58) { [0]=> string(3) "127" ["id_news"]=> string(3) "127" [2]=> string(1) "2" ["id_province"]=> string(1) "2" [5]=> string(13) "News B Province B" ["nm_news"]=> string(13) "News B Province B" } } } } }
Merci d'aider les gars.
3 Réponses :
Essayer
$c=mysql_query("select * from news where id_province='$b'");
Je dirais que vous devez d'abord nettoyer votre tableau pour vous assurer que vous essayez de référencer le bon objet, vous semblez avoir tout dupliqué avec un index et une clé dans le tableau.
array( 'table1' => array( '0' => 1, 'id_province' => 1, '1' => 'Province A', 'nm_province' => 'Province A' ), 'table2' => array( array( '0' => '43', 'id_news' => '43', '1' => '1', 'id_province' => '1', '2' => 'News A', 'nm_news' => 'News A' ), array( '0' => '123', 'id_news' => '123', '1' => 1, 'id_province' => '1', '2' => 'New B', 'nm_news' => 'News B') ) ), array( 'table1' => array( '0' => "2", 'id_province' => "2", '1' => "Province B", 'nm_province' => 'Province B' ), 'table2' => array( array( '0'=>'44', 'id_news' => '44', '2' => '2', 'id_province' => '2', '5' => 'News A Province B', 'nm_news' => 'News A Province B' ), array( '0'=>'127', 'id_news' => '127', '2'=>'2', 'id_province' => '2', '5' => 'News B Province B', 'nm_news' => 'News B Province B' ) ) )
J'ai décomposé votre tableau pour que vous puissiez voir clairement ce que je veux dire
[0]=>"123", ["id_news"]=>"123", [1]=>"1", ["id_province"]=>"1", [2]=>"News B", ["nm_news"]=>"News B",
chaque deuxième élément contient les mêmes données. Le premier du duplicata est indexé (comme dans 0,1,2,3 etc ,.) tandis que les seconds ont une clé (comme dans id_news, id_province, nm_news)
mettez à jour le code ci-dessous, cela fonctionnera pour vous.
foreach($output as $out){ $table1= $out['table1']; $table2= $out['table2']; echo $table1['nm_provinsi'].'<br>'; echo 'Data from table 2'; foreach($table2 as $tab2){ echo "\t".$tab2['nm_berita'].'<br>'; } }
Ici, j'ai supprimé [$b]
supplémentaire du tableau de $output
.
Copiez maintenant le code ci-dessous pour imprimer le tableau.
foreach($result as $r){ $b=$r['id_province']; $c=mysql_query("select * from news where id_province=".$b); $output[$i]['table1']=$r; $dummy=[]; while($response = mysql_fetch_array($c)){ $dummy[] = $response; } $output[$i]['table2']=$dummy; $i++; }
Pouvez-vous afficher le code avec l'erreur?
là tu vas bro
Où est le foreach?
Je suis désolé ma mauvaise pâte fausse
Pouvez-vous donner un exemple de données
hmm que voulez-vous dire? Je vous donne déjà les données des tableaux
Je veux dire la variable pour que je puisse travailler avec comme
$arr = array("somekey" => 'somevalue');
fait vérifier la dernière
Que voulez-vous faire écho?
id_province et nm_province
Des tableaux 1 et 2? ou juste le tableau 1?
les deux table je veux faire écho à nm_province et nm_news, mais avec une province différente