Array für Tabellenzellen aufteilen?
Thorsten
- php
Ich habe eine Datenbankabfrage (ziemlich einfach) und versuche nun die daten nicht mehr an einem Stück auszugeben sondern in einer eigenen tabelle in den gewünschten Zellen auszugeben.
!!! Ohne dabei die Farbteilung zu verlieren !!!
Hier der alte Code:
-------------------------------------------------------------
<?php
error_reporting(E_ALL);
$dbh = mysql_connect("********", "*******", "**********");
$query = "use DB********";
if (!mysql_query($query, $dbh)) die("Datenbank existiert nicht. \n");
$unter = $_POST['unter'];
$plzkurz = $_POST['plzkurz'];
$produkt = $_POST['produkt'];
$anfrage = "SELECT
haupt,unter,ladenlokale,name,strasse,plz,ort,produkt
FROM ******** WHERE unter = '$unter'
AND produkt = '$produkt'
AND plzkurz = '00000'
OR unter = '$unter'
AND produkt = '$produkt'
AND plzkurz LIKE '%".$_POST['plzkurz']."%'
OR unter = '$unter'
AND produkt LIKE '%".$_POST['produkt']."%'
AND plzkurz = '$plzkurz'
OR unter = '$unter'
AND produkt LIKE '%".$_POST['produkt']."%'
AND plzkurz LIKE '%".$_POST['plzkurz']."%'
OR unter = '$unter'
AND produkt LIKE '%".$_POST['produkt']."%'
AND plzkurz LIKE '00000'
ORDER BY ladenlokale ASC";
$ergebnis = mysql_query($anfrage) or die("fehlermeldung: ".mysql_error());
$_color = array('#f7f7f7','#dedfe4');
$count = 0;
$ergebnis = mysql_query($anfrage);
echo "<table borderwidth='1' rules='groups' bordercolor='#ff9933' width='970px' cellpadding='3' cellspacing='0'>";
// Tabellenkopf (Überschrift der Spalten)
echo "<thead>";
echo "<TR height='21px' bgcolor='cccccc'>";
echo "<TH WIDTH='137' padding-left='5px'>";
echo "<P class='Stil8' STYLE='text-align'='center'><B><SPAN>Firmenlogo: </SPAN></B></P></TH>";
echo "<TH WIDTH='209' padding-left='5px'>";
echo "<P class='Stil8' STYLE='text-align'='left'> <B><SPAN>Unternehmen:</SPAN></B></P></TH>";
echo "<TH WIDTH='136' padding-left='5px'>";
echo "<P class='Stil8' STYLE='text-align'='left'> <B><SPAN>Produkt: </SPAN></B></P></TH>";
echo "<TH WIDTH='198' padding-left='5px'>";
echo "<P class='Stil8' STYLE='text-align'='left'> <B><SPAN>Ladenlokale:</SPAN></B></P></TH>";
echo "<TH WIDTH='155' padding-left='5px'>";
echo "<P class='Stil8' STYLE='text-align'='center'><B><SPAN>zum Produkt:</SPAN></B></P></TH>";
echo "</TR>";
echo "</thead>";
echo "</table>";
// HIER BEGINNT DAS PROBLEM, DENN JETZT
// WERDEN DIE DATEN AN EINEM STÜCK AUSGEGEBEN
echo "<table border='1' bordercolor='#ffffff' width='970px' cellpadding='3' cellspacing='0'>";
for ($i=0; $i<mysql_num_fields($ergebnis);$i++)
?>
<BR>
<?php
while ($zeile=mysql_fetch_row($ergebnis))
{
echo "<tr bgcolor="".$_color[++$count%2]."">\n";
for ($i=0; $i<mysql_num_fields($ergebnis);$i++)
{
echo '<td>'.$zeile[$i].'</td>'; // TD WIDTH WÄRE GUT
} // WAS IST MIT $i ode $zeile ?
echo '</tr>';
}
echo '</table>';
mysql_free_result($ergebnis);
mysql_close($dbh);
?>
-------------------------------------------------------
Wer mir da wohl helfen könnte... :-)
gruß Thorsten
Bin bei dem Problem leider nich ganz durchgeblickt, nachproduzieren kann ichs auch nich direkt ohne die Tabelle. Falls es darum geht, dass deine Tabellenzellen nich die richtigen Hintergrundfarben erhalten, solltest du schauen, dass du die <td>s und nich die <tr>s mit den entsprechenden Attributen zur Hintergrundfarbe besetzt. Ich glaube nämlich dass in deinem Fall die Hintergrundfarbe der <td>s die von den <tr>s schlicht überschreibt, falls einen Browser die Hintergrundfarbe eine Tabellenzeile überhaupt interessieren sollte.
Was mir aber aufgefallen is an deinem Code und worauf du viel dringender ein Auge werfen solltest ist die Tatsache dass bei dir die Sachen die über ein Formular via $_POST reinkommen ohne Validierung in den Query übernommen werden. Das riecht nach SQL-Injection...
Schau dir am besten mal genau http://de.wikipedia.org/wiki/SQL-Injektion an.
hi,
das mit der Lücke ist mir klar - ist noch nicht ausgereift.
aber du bist auf die hintergrundfarbe abgerutscht.
mein problem ist wohl viel einfacher,
für mich ein buch mit (noch) 7 siegeln.
es geht mir nur darum in einer tabelle an beliebiger stelle einzelne ergebnisse des ...
$result=mysql_query($query, $dbh); und/oder ???
while($row=mysql_fetch_array($result, MYSQL_ASSOC)) ...
zuzugreifen.
ich möchte z.b. in zeile 1 <tr>, spalte 1 <td> wert3 der abfrage ausgeben (das war die spalte ladenlokale) <td>
in spalte 2 <td> wert4 <br> wert5 <br> wert6 < > wert7 </td>
ausgeben.
wobei wert4=name, wert5=strasse, wert6=plz, wert7=ort ist.
dann wieder </td>
und </table>
fertig - aber alles in dieser while schleife weil ja mehrere
werte kommen und dadurch auch mehrere spalten / zeilen entstehen.
hilfe
danke
gruß an alle Thorsten