ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
377
377
EMPFEHLEN
-
Problem gelöst...
Kurz zusammengefasst war das Problem, das Ergebnis einer SQL-Abfrage auf mehrere Spalten nebeneinander und Zeilen untereinander zu verteilen - Mini-Beispiel oben im Code zur Veranschaulichung
Nicht ganz so komfortable wie in ASP mit Recordset.Next und Recordset.Previous, aber was soll's
PHP-Code:<!-- --------------- begin MULTI-COLUMNS-TABLE --------------- -->
<?php
/*
Script zum erzeugen mehrer Spalten nebeneinander aus einer Abfrage
bzw. einem Recordset.
Bsp.:
| Spalte 1 | Spalte 2 | Spalte X
-------------------------|---------------|---------------
Zeile1 | Toyota<br> | Honda<br> | Fiat<br>
| 140 PS | 50 PS | 30 PS
| ... | ... | ...
-------------------------|---------------|---------------
Zeile2 | BMW<br> | Mercedes<br> | .....
| 100 PS | 10 PS |
| ... | ... |
-------------------------|---------------|---------------
Zeile3 | ... | ... | ....
*/
// SQL-Krams
$sql = "SELECT Stufen, PHP_Tauglichkeit FROM Planlos";
$mc_result = mysql_query($sql) or die("Couldn't execute query." );
$num_rows = mysql_num_rows($mc_result);
// Die wichtigen Sachen
$columns =3; // Anzahl gewünschter Spalten (außer 1... )
$i = 0; // Counter
// nächstgrößere Ganzzahl aus Division
$rows = ceil($num_rows / $columns);
// wieviel leere Zellen stehen am Ende?
$emptyCells = ($rows*$columns) - $num_rows;
// Wenn so wenig Datensätze da sind, dass sie alle in eine Reihe
// passen, dann brauchen wir keine leeren Zellen am Ende (um
// HTML-Konform gleich viele Zellen wie Spalten zu haben)
if ($rows = 1) {
$emptyCells = ($columns - $emptyCells);
}
// Unsere Tabelle
echo ("<table width=\"100%\">\n<tr>\n\t<th colspan=\"" . $emptyCells . "\">Server-Info</th>\n</tr>");
// Jeden Datensatz abklappern und Zeilen schreiben
while($row = mysql_fetch_array($mc_result)) {
// Wenn wir noch einen Datensatz haben und alle Spalten der
// Zeile "voll" sind: Neue Zeile starten
if($i != $rows && ($i%$columns == 0)) {
echo ("<tr>\n");
}
echo ("\t<td>");
// HIER FOLGT DER ZELLENINHALT
echo ("Deine Planlosigkeitsstufe: " .$row["Stufen"] . " ergibt deine PHP-tauglichkeit: " .$row["PHP_Tauglichkeit"]);
// ENDE ZELLENINHALT
echo ("\t</td>\n");
// Wenn wir nicht beim ersten Datensatz sind und die letzte
// Spalte durchhaben, dann Zeile schließen
if($i != 0 && $i%$columns == 0) {
echo ("</tr>\n");
// Nicht erster Datensatz UND es ist der letzter Datensatz UND
// leere Zellen >0<Spaltenzahl
// -> verbleibende Zellen schreiben und HTML-Konform sein...
} elseif ($i != 0 && $i+1 == $num_rows && $emptyCells != 0 && $emptyCells < $columns) {
echo ("\t<td colspan=\"" . ($emptyCells) . "\"></td>\n");
}
// Der i-te Datensatz ist durch... auf zum nächsten
$i++;
}
// Schließen der Tabelle
echo ("</tr>\n</table>\n");
?>
<!-- --------------- end MULTI-COLUMNS-TABLE --------------- -->Geändert von Elminster (04.09.05 um 11:36 Uhr)
-
holt Dir ja in jedem Durchgang nur eine Reihe, daher musst Du bis zum naechsten Durchgang warten.PHP-Code:
while ($row=mysql_fetch_array($MyQuery))
Hast Du immer 4 Reihen, oder koennen das auch mehr sein?
Wenn ja, wie geht es weiter?
So?
row1/col1 | row2/col1
row3/col2 | row4/col2
row5/col3 | row6/col3
row7/col4 | row8/col4
Oder wie?PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Genau das ist quasi das Problem - ich bräuchte in jedem Durchgang 2 Reihen (so einfach kann man's formulieren
Zitat von reptiler
).
Demnach ist deine Annahem auch richtig, dass die HTML-Zeilen unbestimmt fortgesetzt würden (also auch mehr als 4).
-
Also es wird nicht so fortgesetzt wie ich geschrieben hab?
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Doch würde es

Hmm, also hier der Test-Server mit ner Beispiel-Seite: http://enterforest.dyndns.org/Tobis/...hp?ffMapID=576
Unter Server-Info soll halt in 2 Spalten nebeneinander 2 Server stehen (evtl. auch drei - dürfte an der Sache aber ja nicht viel ändern).
Derzeit gibt es 10 Server und an dieser Stelle soll dynamisch angzeigt werden, welche Server den jeweiligen Inhalt bereitstellen.
-
Dann koenntest Du vielleicht sowas nutzen:
Bin jetzt nicht sicher ob's laeuft. Ist spontan getippt, und das beim Telefonieren.PHP-Code:$x=1;
$col=1;
echo '<tr>';
while ($row=mysql_fetch_array($MyQuery))
{
echo '<td>'.$row['Spalte'.$col].'</td>';
if ($x%2==0)
{
$col++;
echo '</tr><tr>';
}
$x++;
}
echo '</tr>';
Geändert von Dennis Wronka (03.09.05 um 10:09 Uhr)
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
03.09.05 11:29 #7
Naja er will sicher auch wissen, wie das ganze funktioniert.
Mit if ($x%2==0) fragt er ab, ob $x geteilt durch 2 gleich den Restwert 0 ergibt, sprich: ob $x teilbar durch 2 ist.
Diese Bediengung wird also bei jedem 2. Schleifendurchlauf erfüllt.
Aber was soll das $col machen?
Wird nach jedem 2. mal eins erhöht. Für was?
-
Um eine solche Ausgabe zu erreichen:
row1/col1 | row2/col1
row3/col2 | row4/col2
row5/col3 | row6/col3
row7/col4 | row8/col4PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
03.09.05 11:40 #9
Achso

Naja dein Teil müsste eigentlich schon klappen.
-
Vielen Dank für eure Antworten

Nach ewiger Zeit und viel verlorenen Nerven hab ich's nu hingekriegt. Die Lösung hab ich an den Anfang des Beitrags gepackt - vielleicht kann's ja noch mal jemand brauchen (ich hab mich jedenfalls ziemlich totgesucht). Hab's auch etwas totkommentiert für den nächsten Laien meiner Gattung
Cool wäre es natürlich, wenn man einfach den ganzen Code auslagern könnte und dann per include an beliebiger Stelle einfügen könnte um solche Tabellen zu schreiben. Vorm inlcude müßte man dann nur $mc_result und $columns initiieren und dann losschreiben.
Also so:
aber leider ned, weil's mitten in nem While-Loop auseinandergerissen würde. Wenn da jemand noch nen simple Möglichkeit / "Trick" kennt...PHP-Code:$mc_result = mysql_query($sql);
$columns =3;
// (alles bis zum Kommentar HIER FOLGT DER ZELLENINHALT)
include multiCol_Top.inc
// Mein Zelleninhalt - also das was sich wirklich ändert
echo ("Deine Planlosigkeitsstufe: " .$row["Stufen"] . " ergibt deine PHP-tauglichkeit: " .$row["PHP_Tauglichkeit"]);
// (alles bis zum Kommentar ENDE ZELLENINHALT)
include multiCol_Bottom.inc

Wirklich geschnallt hab ich aber noch ned wie das mit dem mysql_fetch_array($result) . Wieso geht sowas nicht:
Funktioniert diese Zuweisung wie bei nem Pointer (ned das ich wirklich wüßte worüber ich hier rede - nur schemenhaft)?PHP-Code:$row1 = mysql_fetch_array($result)
$row2 = mysql_fetch_array($result)
@reptiler:
Deine Lösung würde , wenn man nur eine Zeile pro Recordset schreiben wollte - wahrscheinlich habe ich deine Nachfrage da mißverstanden. Wie's gedacht war siehst du oben im Code
@Irgendjemand_1:
Das nennt man Modulo, aber danke für die Mühe einer Erläuterung
Ähnliche Themen
-
ListIterator, next(), previous()
Von MS-Tech im Forum JavaAntworten: 1Letzter Beitrag: 14.11.08, 18:05 -
"previous declaration of" trotz #ifndef
Von dotti im Forum C/C++Antworten: 2Letzter Beitrag: 15.11.07, 12:33 -
Bildergalerie mit Next und Previous Button
Von Crushmeifyoucan im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 06.08.04, 21:39 -
seiten: previous - next
Von kaits im Forum PHPAntworten: 3Letzter Beitrag: 18.12.02, 13:57 -
morpheus previous : unable to connect
Von Cstar im Forum Audiotechnik, Recording & Audio-SoftwareAntworten: 2Letzter Beitrag: 10.04.02, 11:07





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren