PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellarische Ausgabe von SQL Abfrage


TaranTimo
30.08.2007, 09:46:10
Hallo! ich bins mal wieder! :)

Nachdem das wichtigste mit eurer Hilfe mitlerweile läuft ( ein dickes Danke nochmal! ) stehe ich jetzt vor einem neuen Problem.

Folgendes Szenario:

In ein Formular gibt man eine SysID ein. Diese wird an eine auswerten.php weitergeleitet. Diese Zeigt nun das komplette System an ( Das funktioniert schon wunderbar) doch nun soll es auch noch die angeschlossenen Drucker Tabellarisch ausgeben. Nun habe ich schon eine passende SQL Abfrage erstellt mit allen Daten die ich brauche:


$sql2 = " SELECT
rd.DruckID, rd.sysID ,d.DruckID, d.Freigname, d.Modell, d.Quelle, d.IP
FROM
rechner_drucker rd, drucker d
WHERE
rd.SysID= {$_POST['sysid']} AND d.DruckID = rd.DruckID;" ;

Mein Problem liegt jetzt darin das ganze geordnet auszugeben... Die Tabelle sollte wie folgt aussehen:

| DruckID | Modell | Quelle | IP | Freigabe Name |
----------------------------------------------------------
| ID 1 | Mod1 | Q1 | IP1 | FreigName 1 |
| ID 2 | Mod2 | Q2 | IP2 | FreigName 2 |

usw......

Eine SysID kann ja beliebig viele DruckIDs haben...manchmal nur eine, keine oder mal 15.


Ich habe es bis jtzt nur geschafft die Nummern nebeneinander auszugeben.

Nun hoffe ich dass einer von euch PHP Profis mir nen Tip bzw Denkansatz geben kann um das ganze zu realisieren! Bis jetzt habt ihr mich ja noch nie hängen lassen!:)

Danke schonmal für eure Mühe!

Raketenmann
30.08.2007, 11:43:35
Du brauchst zwei Schleifen. Die äußere durchläuft die Zeilen des Ergebnisses und gibt ein <tr> vor und ein </tr> nach der inneren Schleife aus. Die innere Schleife durchläuft die Spalten, der jeweiligen Zeile, des Ergebnisses und gibt die Inhalte in <td>s aus.

Vor der äußeren Schleife <table> ausgeben, und danach </table>...

...schon hast du deine Tabelle.

TaranTimo
03.09.2007, 12:16:04
Hi Raketenmann!

Danke für den Denkansatz! Nur besteht das Problem dass ich das ganze in der Vorgegebenen HTML Maske ausgeben soll! Und diese sieht leider wirklich so:


| DruckID | Modell | Quelle | IP | Freigabe Name |
----------------------------------------------------------
| ID 1 | Mod1 | Q1 | IP1 | FreigName 1 |
| ID 2 | Mod2 | Q2 | IP2 | FreigName 2 |


aus.

Ich habe jetzt als Notlösung erstmal folgendes gemacht:

<table bordercolor="#558488" bgcolor="#558488" border="3">
<tbody>
<tr>
<td><font face="Copperplate Gothic Bold" color="white" size="4">DruckID</font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4">Modell</font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4">Quelle</font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4">IP Adresse</font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4">Freigabe Name</font></td>
</tr>

<tr>
<td><font face="Copperplate Gothic Bold" color="white" size="4"><?PHP
$result2 = mysql_db_query ( 'telit', $sql2 );
while($spalte2 = mysql_fetch_assoc($result2)) {
echo $spalte2['DruckID']."<br><td>"; } ?></font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4"><?Php $result2 = mysql_db_query ( 'telit', $sql2 );
while($spalte2 = mysql_fetch_assoc($result2)) {
echo $spalte2['Modell']."<br>"; } ?></font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4"><?Php $result2 = mysql_db_query ( 'telit', $sql2 );
while($spalte2 = mysql_fetch_assoc($result2)) {
echo $spalte2['Quelle']."<br>"; } ?></font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4"><?Php $result2 = mysql_db_query ( 'telit', $sql2 );
while($spalte2 = mysql_fetch_assoc($result2)) {
echo $spalte2['IP']."<br>"; } ?></font></td>

<td><font face="Copperplate Gothic Bold" color="white" size="4"><?Php $result2 = mysql_db_query ( 'telit', $sql2 );
while($spalte2 = mysql_fetch_assoc($result2)) {
echo $spalte2['Freigname']."<br>"; } ?></font></td>
</tr>
</tbody>
</table>

Nur ist das Problem dass wenn der Modellname zu lang ist natürlich alles verschoben ist.
Mir fällt auch einfach nicht ein wie ich das Problem lösen kann! :(
Ja ich weiß PHP Anfänger sind nervig..;)

defabricator
03.09.2007, 12:33:26
Warum versuchst Du, jeweils alle Zeilen in ein Spaltenelement (td) zu quetschen? Ist das die Vorgabe? Das wäre bescheuert, aber mindestens eine Diskussion wert.

TaranTimo
03.09.2007, 12:42:42
Ja ich habe die HTML Seite als Vorlage, die Datenbank hab ich selber entwickelt und das PHP macht mich fertig..;)

Ich bin auch in dem Schleifendenken einfach noch nicht so drin!

Welche Lösung würdest du denn vorschlagen??

Raketenmann
03.09.2007, 12:44:11
Ja ich weiß PHP Anfänger sind nervig..;)

...aber nichts im Vergleich zu HTML Anfängern ;-)

Nur ist das Problem dass wenn der Modellname zu lang ist natürlich alles verschoben ist.


Du hast auch nicht das gemacht, was ich dir geraten hatte! ;-P

Es war keine Rede davon eine Tabellenzeile zu erzeugen und darin alle Inhalte untereinander zu schreiben. So wird das nix...

Die Änderungen:
1. Du versprichst, nie wieder das <font>-Tag zu verwenden.
2. Probiers mal mit dieser Struktur:



echo '
<table cellpadding="4" cellspacing="0" border="1">
<tr>
<td>DruckID</td>
<td>Modell</td>
<td>Quelle</td>
<td>IP Adresse</td>
<td>Freigabe Name</td>
</tr> ';

$sql=''; // Hier den Query nachtragen (der Inhalt von $sql2 aus deinem QT)

$result=mysql_query($sql);
while($spalten=mysql_fetch_array($result,MYSQL_NUM))
{
echo '<tr>';
for($z=0;$z<count($spalten);$z++)
{
echo '<td>'.$spalten[$z].'</td>';

}
echo '</tr>';
}

echo '</table>';



Deine Formatierungen sind in dem Bsp verschwunden, bzw. musst du selber reinbauen, aber lies erstmal was über CSS...

EDIT:
Ach, sehe ich jetzt erst. Du musst das so machen? Na dann schreib halt die <font>-Tags wieder rein... Aber gegen ein paar zusätzliche Tabellenzeilen wird dein Vorlagengeber ja wohl nichts haben.

defabricator
03.09.2007, 12:46:07
Welche Lösung würdest du denn vorschlagen??Die von Raketenmann gezeigte ;)

TaranTimo
03.09.2007, 12:54:11
Wow das ging schnell!:)

Seh ich genauso! Hauptsache das läuft! Werde mich einfach selber noch in Css und HTML einlesen und das ganze nochmal überarbeiten!

Aber ein dickes Danke nochmal an euch beide und ganz besonders an dich Raketenmann!:)

TaranTimo
03.09.2007, 13:13:22
Hat sich erledigt...war zu dumm..:)

defabricator
03.09.2007, 13:17:11
Was ist an den NULL Werten problematisch?
Brauchst Du an den Stellen in der Tabelle statt nichts ein &nbsp; ?