Zugriff auf Array
Sascha Knappe
- php
0 Mike0 Sascha Knappe0 Mike
0 Sven Rautenberg
Hallo,
ich habe folgendes Problem...
Ich möchte eine Ergebnismenge in eine Tabelle legen und spaltenweise abwärts, nach Namen sortiert, ausgeben.
Nach einer Datenbankabfrage packe ich die Ergebnisse mit "setter-Methoden" in ein Objekte und per array_push ins Array $arr_rs. Es gibt genau 208 Ergebnisse, also 208 Objekte.
Ich gehe wie folgt vor:
$cols = 4;
$i = 1;
$herstellerHandler = new HerstellerHandler();
$arr_rs = $herstellerHandler->getAllHersteller($con);
$anzahl = count($arr_rs);
function ausgabeInSpalten($cols, $arr_rs)
{
#$cols = 5;
$anzahl = count($arr_rs);
#echo 'Anzahl: '.$anzahl.'<br>';
$anzahl_pro_array = intval($anzahl / $cols);
#echo 'Anzahl pro Array: '.$anzahl_pro_array.'<br>';
$rest = $anzahl - ($cols * $anzahl_pro_array);
#echo 'Rest: '.$rest.'<br>';
if($rest > 0)
{
$arr_anzahl = $anzahl_pro_array +1;
}
else
{
$arr_anzahl = $anzahl_pro_array;
}
$arr_result = array();
$arr_result = array_chunk($arr_rs, $arr_anzahl);
$string = '<table border="0" width="80%">';
$anz_letztes_array = count($arr_result[$cols-1]);
$diff = $arr_anzahl - $anz_letztes_array;
#echo 'Ergebnis: '.$arr_anzahl.' - '.$anz_letztes_array.' = '.$diff.'<br>';
if($diff > 0)
{
$arr_result[$cols-1] = array_pad($arr_result[$cols-1], $diff+2, ' ');
}
#echo '<pre>';
#print_r($arr_result);
#echo '</pre>';
for($r = 0; $r <= $arr_anzahl; $r++)
{
$string.= '<tr>';
$objekte1 = $arr_result[0][$r];
$objekte2 = $arr_result[1][$r];
$objekte3 = $arr_result[2][$r];
$objekte4 = $arr_result[3][$r];
#echo '<pre>';
#print_r($objekte1);
#echo '</pre>';
foreach($objekte1 as $objekt1)
{
$string.= '<td><a href="hersteller_detail.php?hersteller_id='.$objekte1->getHerstellerID().'">'.$objekte1->getName().'</a></td>';
break;
}
foreach($objekte2 as $objekt2)
{
$string.= '<td><a href="hersteller_detail.php?hersteller_id='.$objekte2->getHerstellerID().'">'.$objekte2->getName().'</a></td>';
break;
}
foreach($objekte3 as $objekt3)
{
$string.= '<td><a href="hersteller_detail.php?hersteller_id='.$objekte3->getHerstellerID().'">'.$objekte3->getName().'</a></td>';
break;
}
foreach($objekte4 as $objekt4)
{
$string.= '<td><a href="hersteller_detail.php?hersteller_id='.$objekte4->getHerstellerID().'">'.$objekte4->getName().'</a></td>';
break;
}
$string.= '</tr>';
}
$string.= '</table>';
return $string;
}
echo ausgabeInSpalten($cols, $arr_rs);
Es gibt die Warnung: Warning: Invalid argument supplied for foreach() in I:\wampp2\htdocs\humidoronline\zigarren.php on line 190
Bekomme so aber trotz der Warnung meine richtige Ausgabe.
Lasse ich die foreach-Schleifen weg, dann funktioniert meine Ausgabe nicht mehr.
Wie greife ich richtig auf meine Objekte zu?
Vielen Dank für eure Antworten.
Schönen Gruß aus München
die knappschaft
Moin Sascha,
Es gibt die Warnung: Warning: Invalid argument supplied for foreach() in I:\wampp2\htdocs\humidoronline\zigarren.php on line 190
ohne deinen Quelltext gecheckt zu haben, welches ist den Line 190?
Grüsse
Mike
Hallo Mike,
die Warnung kommt jeweils für die Zeilen mit foreach...
Schönen Gruß aus München
die knappschaft
Moin Sascha,
die Warnung kommt jeweils für die Zeilen mit foreach...
mal ein Schnellschuß: $objekte1 bis $objekte..nnn...
sind kein arrays!?
Schaue mal hier:
http://de3.php.net/manual/de/control-structures.foreach.php
regds
Mike
Hallo Mike,
ja, das ist mir schon klar. Aber wenn ich die foreach-Schleife auskommentiere, dann bekomme ich gar kein Ergebnis?!
Wenn ich aber die foreach "ins Leere" laufen lasse, dann bekomme ich zumindest ein Ergebnis - bis auf die störende Warning von PHP.
Schönen Gruß aus München
die knappschaft
Moin!
Es gibt die Warnung: Warning: Invalid argument supplied for foreach() in I:\wampp2\htdocs\humidoronline\zigarren.php on line 190
Wie liest du die Datenbank aus?
- Sven Rautenberg