CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
05.06.2003, 09:24:57
|
Anfänger
|
|
Registriert seit: May 2003
Ort: nähe Stuttgart
Beiträge: 16
|
|
Daten aus SQL auslesen und in 2 Spalten verteilen
Hallo, ich hab mal wieder ein kleines Problemchen :D.
Und zwar, ich lese aus SQL Daten aus und bekomm die auch sauber aufgelistet. Nur, hätte ich eben alle Einträge auf einer Seite, also nebeneinander und nicht wie jetzt, fortlaufend untereinander.
Hatt einer von euch ne idee, wie ich zb sagen kann, dass nach x Zeilen auf der rechten Seite (zB 2. Tabellen Spalte) weitermachen soll.
__________________
by
Lars alias Cobra.C!O
|
05.06.2003, 10:14:19
|
Senior Member
|
|
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
|
|
Hi cobracio,
das kannste mit dem Modulo Operator % lösen...
z.B.:
PHP-Code:
<?php
$anzahl_spalte = 3;
$num = 10; // Anzahl Datensätze
echo "<table border='1'>n";
for($i = 0; $i < $num; $i++)
{
if($i % $anzahl_spalte == 0)
{
echo "<tr>n";
}
echo "<td>Wert ".$i."</td>n";
if( ($i % $anzahl_spalte == $anzahl_spalte - 1) || ($i == $num - 1) )
{
echo "</tr>n";
}
}
echo "</table>";
?>
Geändert von chris17 (05.06.2003 um 10:40:10 Uhr)
|
05.06.2003, 11:31:58
|
Anfänger
|
|
Registriert seit: May 2003
Ort: nähe Stuttgart
Beiträge: 16
|
|
irgendwie funzt des ned so richtig :D.
Hier mal der Code:
PHP-Code:
echo '<table border="1" cellpadding="2">';
echo '<tr><td width="20"><b>Name:</b></td>
<td width="20"><b>Vorname:</b></td>
<td width="20"><b>Anwesend:</b></td>
<td width="20"><b>Bemerkung:</b></td></tr>';
$anzahl_spalte = 2;
$num = 10; // Anzahl Datensätze
for($i = 0; $i < $num; $i++)
{
if($i % $anzahl_spalte == 0)
{
echo "<tr>n";
}
while($row = mysql_fetch_assoc($result))
{
if($row['Anwesend'] == 'Ja') {
echo '<td>'.$row['Name'].'</td>
<td>'.$row['Vorname'].'</td>
<td align="center">'.$row['Anwesend'].'</td>
<td>'.$row['Bemerkung'].'</td>';
}
else
{
echo '<td><font color="#FFFFFF">'.$row['Name'].'</font></td>
<td><font color="#FFFFFF">'.$row['Vorname'].'</font></td>
<td align="center"><font color="#FFFFFF">'.$row['Anwesend'].'</font></td>
<td><font color="#FFFFFF">'.$row['Bemerkung'].'</font></td>';
}
if( ($i % $anzahl_spalte == $anzahl_spalte - 1) || ($i == $num - 1) )
{
echo "</tr>n";
}
}
}
echo '</table>';
Wollte es hald so, dass erst links herunter geschrieben wird, und dann nach der hälfte der zeilen ($num_rows) es rechts weiter geht.
__________________
by
Lars alias Cobra.C!O
Geändert von cobracio (05.06.2003 um 11:40:49 Uhr)
|
05.06.2003, 12:59:16
|
Senior Member
|
|
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
|
|
Ok,
dann sieht die Sache ein bissl anders aus.
Bei meinem Bsp. sollte mit der For-Schleife die Datensätze durgegangen werden, Du hast dann jetzt noch die While-Schleife reingepackt...
Wenn dann eher so, und da Du ja wirklich nur 2 Spalten haben willst kann man sich auch das mit der $anzahl_spalte schenken.
PHP-Code:
$i = 0;
echo '<table border="1" cellpadding="2">';
echo '<tr><td width="20"><b>Name:</b></td>
<td width="20"><b>Vorname:</b></td>
<td width="20"><b>Anwesend:</b></td>
<td width="20"><b>Bemerkung:</b></td>
<td width="20"><b>Name:</b></td>
<td width="20"><b>Vorname:</b></td>
<td width="20"><b>Anwesend:</b></td>
<td width="20"><b>Bemerkung:</b></td>
</tr>';
while($row = mysql_fetch_assoc($result))
{
if($i % 2 == 0)
{
echo "<tr>n";
}
if($row['Anwesend'] == 'Ja') {
echo '<td>'.$row['Name'].'</td>
<td>'.$row['Vorname'].'</td>
<td align="center">'.$row['Anwesend'].'</td>
<td>'.$row['Bemerkung'].'</td>';
}
else
{
echo '<td><font color="red">'.$row['Name'].'</font></td>
<td><font color="red">'.$row['Vorname'].'</font></td>
<td align="center"><font color="red">'.$row['Anwesend'].'</font></td>
<td><font color="red">'.$row['Bemerkung'].'</font></td>';
}
if ($i % 2 == 1)
{
echo "</tr>n";
}
$i++;
}
echo '</table>';
Das löst aber noch nicht das Problem, dass Du "zuerst" die Linke dann die Rechte Spalte ausgefüllt haben willst. Da wird es ein wenig kniffliger. Denk daran, dass die Seiten von "oben nach unten" aufgebaut werden...
Lösungsansatz: Daten in Array packen (..hatten wir doch schon mal :-) ) umsortieren, dann ausgeben...
Bsp.: array_vorher("1","2","3","4","5")
array_nachher("1","4","2","5","3")
War das verständlich?!? *leise zweifel* Geh am Besten das Ganze mal auf Papier durch...
Gruss chris17
P.S.: Immer nur fertigen Code abzuliefern, wird hier glaub ich nicht so gerne gesehen.
Geändert von chris17 (05.06.2003 um 13:06:52 Uhr)
|
05.06.2003, 13:28:15
|
Anfänger
|
|
Registriert seit: May 2003
Ort: nähe Stuttgart
Beiträge: 16
|
|
Danke schon mal, ist echt gut soweit.
Nur was genau macht den diese Funktion?? Was wird hier abgefragt??
Zitat:
Original geschrieben von chris17
PHP-Code:
if ($i % 2 == 0)
|
__________________
by
Lars alias Cobra.C!O
|
05.06.2003, 13:50:07
|
Senior Member
|
|
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
|
|
Modulo liefert den Restwert einer Division
Bsp.: 10 % 6 = 4
d.h. die 6 "passt" einmal in die 10, und 4 bleibt übrig.
In Deinem Fall soll ja der <tr>-Tag alle 2 Datensätze geschrieben werden.
%2 wird auch gerne benutzt um gerade und ungerade Zahlen zu ermitteln.
PHP-Code:
<?php
echo (10 % 6)."<br>";
for($i = 0; $i < 10; $i++)
{
echo $i." - ".($i % 2)."<br>";
}
?>
|
05.06.2003, 13:52:25
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi,
das %- Zeichen bedeutet Modulo. Dies ist, soweit ich weiß, ein mathematischer Ausdruck und bedeutet nichts anderes als den Rest, der bei der Division von zwei Zahlen übrig bleibt.
Z.B.: 4 : 2 = 2 Rest 0 ==> Modulo = 0
3 : 2 = 1 Rest 1 ==> Modulo = 1
Sinnvolle Verwendungen von Modulo sind also immer Überprüfungen, ob eine Zahl durch eine andere teilbar ist (Modulo = 0) oder nicht (Modulo > 0).
HTH,
Andy
|
05.06.2003, 13:56:57
|
Anfänger
|
|
Registriert seit: May 2003
Ort: nähe Stuttgart
Beiträge: 16
|
|
Aja, okay, schon wieder was gelernt :D.
Zu dem Problem, wo noch besteht.
Dein Lösungsansatz funktioniert so nicht. Um die Daten so zu bekommen wie ich will, müsste es praktisch so aussehen, ausgehend von 50 Datensätzen:
Zeile 1: 1 | 26
Zeile 2: 2 | 27
Zeile 3: 3 | 28
.
.
Dein Beispiel würde die Daten auch falsch liefern. Denk ich mal :D.
Hast du für obigen Ansatz nen kleinen Tipp, wie ich das angehen könnte??
__________________
by
Lars alias Cobra.C!O
|
05.06.2003, 14:09:05
|
Senior Member
|
|
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
|
|
Probier doch mal aus :-)
PHP-Code:
<?php
$array_vorher = array("1","2","3","4","5");
echo "<table border='1'>";
for($i = 0; $i < count($array_vorher); $i++)
{
if($i % 2 == 0)
{
echo "<tr>n";
}
echo "<td>".$array_vorher[$i]."</td>n";
if( ($i % 2 == 1) || ($i == count($array_vorher)-1) ) // Damit beim letzten Durchlauf auch </tr> geschrieben wird
{
echo "</tr>n";
}
}
echo "</table>";
//--------------------------------------------------------------------------------
$array_nachher = array("1","4","2","5","3");
echo "<table border='1'>";
for($i = 0; $i < count($array_nachher); $i++)
{
if($i % 2 == 0)
{
echo "<tr>n";
}
echo "<td>".$array_nachher[$i]."</td>n";
if( ($i % 2 == 1) || ($i == count($array_nachher)-1) )
{
echo "</tr>n";
}
}
echo "</table>";
?>
Geändert von chris17 (05.06.2003 um 14:17:33 Uhr)
|
05.06.2003, 14:16:51
|
Anfänger
|
|
Registriert seit: May 2003
Ort: nähe Stuttgart
Beiträge: 16
|
|
Okay, hast ja gewonnen :D.
Nur wie kann ich jetzt die Daten so hindrehen??
Ich hab schon versucht, aber ich kann ja nur sagen, welche spalte (Name, Vorname, ...) er nehmen soll, dass er das so macht wie in deinem Beispiel hab ich noch ned hinbekommen.
__________________
by
Lars alias Cobra.C!O
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:29:21 Uhr.
|