unterschiedliche Darstellung in einer Schleife
andreas
- php
Hallo
ich habe ein DB Select aus dem ich aus einer Tabelle Daten per select und
per
$themen = mysql_query("SELECT titel,themen from $table");
while ($zeile = mysql_fetch_array($themen))
{
echo $zeile["datensatz"].<br>";
}
ausgebe
kann ich ohne eine weiteren Select,
die Daten unterschiedlich darstellen lassen.
z.B. die ersten 3 Datesätze sollen noch den dazugehörigen Inhalt mit
angeiget bekommen
nich nächsten 6 Datensätze soll nur der Titel zu sehen sein
geht das und wenn ja wie und womit?
Andreas
Hallo Andreas,
$themen = mysql_query("SELECT titel,themen from $table");
while ($zeile = mysql_fetch_array($themen))
{
echo $zeile["datensatz"].<br>";
}
Das kann so sowieso nicht funktionieren, Du rufst ein Feld auf, daß im select nicht drin ist ("datensatz").
Wenn Du die ersten Einträge anders darstellen willst:
$currentrownum=0;
while ($zeile = mysql_fetch_array($themen))
{
if($currentrownum<4)
{
}else
echo $zeile["datensatz"].<br>";
$currentownum++;
}
Hallo Andreas,
sorry, ich habe aus Versehen die "Enter"-Taste berührt:
$themen = mysql_query("SELECT titel,themen from $table");
while ($zeile = mysql_fetch_array($themen))
{
echo $zeile["datensatz"].<br>";
}
Das kann so sowieso nicht funktionieren, Du rufst ein Feld auf, daß im select nicht drin ist ("datensatz").
Wenn Du die ersten Einträge anders darstellen willst:
$currentrownum=0;
while ($zeile = mysql_fetch_array($themen))
{
if($currentrownum<4)
{
echo $zeile["titel"]."<br>".$zeile["themen"];
}else
{
echo $zeile["titel"]."<br>";
}
$currentrownum++;
}
Viele Grüße
Stephan
Hallo Stephan,
Du hast es ja schon ausformuliert. Da würde ich aber noch eine kleine Anmerkung loswerden. Die Zählerincrementierung steht rein formal an der falschen Stelle.
Das kann so sowieso nicht funktionieren, Du rufst ein Feld auf, daß im select nicht drin ist ("datensatz").
Wenn Du die ersten Einträge anders darstellen willst:
$currentrownum=0;
while ($zeile = mysql_fetch_array($themen))
{
$currentrownum++;
if($currentrownum<=3) // Das war die Aufgabenstellung
{
echo $zeile["titel"]."<br>".$zeile["themen"];
}else
{
echo $zeile["titel"]."<br>";
}
// $currentrownum++;
/*
hier ist es zu spät, den Zähler zu erhöhen, da dann die zugehörige Zeile schon ausgegeben wurde. Man würde das bei dieser Aufgabe zwar nicht merken, aber durch Ungenauigkeit in der Programmierung sind schon Raketen abgestürzt.
*/
}
Viele Grüße
Tom
Hallo Thomas,
Du hast es ja schon ausformuliert. Da würde ich aber noch eine kleine Anmerkung loswerden. Die Zählerincrementierung steht rein formal an der falschen Stelle.
In diesem Fall gibt es keine "falsche Stelle", die Inkrementierung der Zählers am Ende der Schleife vorzunehmen, ist Usus. Notfalls muß man das if-Statement halt um 1 dekrementieren, aber praktisch macht das keinen Unterschied (beide Möglichkeiten sind zumindest turing-äquivalent). Oder warum denkst Du (genau & begründet ;-)), daß es die falsche Stelle ist?
Viele Grüße
Stephan
Hallo Thomas,
In diesem Fall gibt es keine "falsche Stelle", die Inkrementierung der Zählers am Ende der Schleife vorzunehmen, ist Usus. Notfalls muß man das if-Statement halt um 1 dekrementieren, aber praktisch macht das keinen Unterschied (beide Möglichkeiten sind zumindest turing-äquivalent). Oder warum denkst Du (genau & begründet ;-)), daß es die falsche Stelle ist?
Hi Stephan,
ist doch klar:
Stell Dir vor, die Würdest die Ausgabe als Prozedur oder Funktion auslagern und den Schleifenzähler als Parameter übergeben. Dann würde die Funktion die falsche Zeilennummer ausgeben.
Darum habe ich gemeint, wehret den Anfängen...
Hier ist das Ganze ja noch überschaubar, aber in größeren Konstrukten kommt es schon darauf an, die _richtige_ Reihenfolge einzuhalten.
Gruß
Tom
Hallo Thomas,
Hier ist das Ganze ja noch überschaubar, aber in größeren Konstrukten kommt es schon darauf an, die _richtige_ Reihenfolge einzuhalten.
Wenn ich sie ausgeben würde, würde ich halt echo $currentrownum+1 hinschreiben. Nach Deiner Argumentation wäre ja eine for-Schleife (for($i=0;$i<10;$i++) falsch konstruiert, daß $i++ wird ja auch am Ende ausgeführt.
Man zählt üblicherweise in Programmiersprachen von 0 bis x-1, nicht von 1 bis x (z.B. auch bei Arrays).
Viele Grüße
Stephan
Hallo Stephan,
[mir fehlen da die Worte]
Gruß
Tom
PS:Ich hoffe nur, dass Du keine Programme für die raumfahrt oder die Atomtechnik schreibst, wo es auf Echtzeitverhalten ankommt. Du könntest aber gut ins Verwicklungsteam von Windows passen. Da wird auch an der einen Stelle mühevoll "repariert", was an anderer Stelle fahrlässig oder dickköpfig als Fehler eingebaut wurde. Siehe Visual Basic. Das ist für mich das schlimmste Beispiel.
Hallo Thomas,
[mir fehlen da die Worte]
... und anscheinend auch die Argumente ...
PS:Ich hoffe nur, dass Du keine Programme für die raumfahrt oder die Atomtechnik schreibst, wo es auf Echtzeitverhalten ankommt.
Ich habe mal für die Medizintechnik geschrieben, insofern solltest Du spätestens dann, wenn Dich nächstes mal irgendwas abtastet / durchleuchtet, hoffen, daß da nicht mein Code drinsteckt, oder Du unrecht hast ...
Viele Grüße
Stephan
Danke
datensatz war so eine Schreibweise
Danke
$currentrownum=0;
while ($zeile = mysql_fetch_array($themen))
{
if($currentrownum<4)
{
}else
echo $zeile["datensatz"].<br>";
$currentownum++;
}
z.B. die ersten 3 Datesätze sollen noch den dazugehörigen
Inhalt mit angeiget bekommen
nich nächsten 6 Datensätze soll nur der Titel zu sehen sein
hmm... quick & dirty fällt mir z.B. das ein:
$themen=mysql_query('SELECT titel,themen FROM '.$table);
$i=1;
while($zeile=mysql_fetch_assoc($themen)) {
if($i<=3) {
echo [datensätze mit inhalt];
} elseif($i<=9) {
echo [nur titel];
} else {
echo [sonstwas];
}
$i++;
}
Hallo Andreas,
es ist zwar unökonomisch, Daten zu holen, die man dann wegschmeißt, aber erzähl doch Deinem Computer GENAU das, was Du uns geschrieben hast :-))
Ich würde da einfach mal über die Einführung eines Schleifenzählers und das Wörtchen IF nachdenken.
Und noch was: Mal Dir ein Bild, was nachher dabei herauskommen soll.
Ich habs so verstanden:
$rcount=0
+----------------------+
| Titel | $rcount=1
| Inhalt |
+----------------------+
| Titel | $rcount=2
| Inhalt |
+----------------------+
| Titel | $rcount=3
| Inhalt |
+----------------------+
| Titel | $rcount=4
+----------------------+
| Titel | $rcount=5
+----------------------+
| Titel | $rcount=6
+----------------------+
...
usw.
Vom Zähler in der Schleife machst Du dann abhängig, was ausgegeben wird.
Viel Erfolg
Tom
Großes D A N K E an alle