![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
Hallo Forum, ich hab hier ein Problem an dem ich schon tagelang sitze und nicht weiterkomme. Ich hoffe mir ist noch zu helfen. 8o Problemschilderung: Eine bestimmte Integeranzahl (Primarykeys) soll aus DB eingelesen werden. Aufgelisten möchte ich diese in einer Tabelle die wie folgt aussieht: integer 11 integer 8 integer 5 integer 12 integer 9 integer 6 integer 13 integer 10 integer 7 integer 4 Ich lese die PK's aus DB von hinten nach vorne ein und nur 10 Stück sollen in einer Tabelle angezeigt werden. Die darstellung nicht zeilenweise hintereinander sonder wie oben in Dreierpacks nebeneinander. Aber der letzte INT nicht an erster Stelle eines Dreierpacks in der HTML-TAB sondern die Position mit dem letzten INT des Dreierpacks, in diesem Falle 11, vertauscht. Provisorisch habe ich die Tabellen darstellung mit switch case hingekriegt, aber nicht befriedigend <TABLE> <TR> <TD> <TABLE> <TR> <TD> <?php $db=mysql_connect mysql_select_db $anfrage="SELECT * FROM tabelle"; $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); for ($a=$anz-1;$a>$anz-10;$a--) mysql_data_seek($ergebnis, $a); $zeile=mysql_fetch_row($ergebnis); print("<a href='readfrm.php?_id="); print($zeile[0]); print("'>"); print($zeile[0]); print(" - "); print($zeile[5]); print("</a>"); print("</TD>"); $b = 0+$a; switch ($b) { case "6": print(" "); print("</TR></TABLE>"); print("<TD><TABLE border=1><TR><TD>"); break; case "3": print(" "); print("</TR></TABLE>"); print("<TD><TABLE border=1><TR><TD>"); break; case "0": print(" "); print("</TR>"); print("</TABLE>"); break; default: print(""); print("</TR>"); print("<TR><TD>"); } er soll ja OBJEKTIV 10 Stück nehmen die da sind und sich nicht nach $a richten. Da er ja im For alles einliest und runterrattert dachte ich mir, dass man das so sicherlich nicht ordnen kann. In Erwägung gezogen habe ich Arrays ...dass er mir die PK's Arrays zuweist, zwischenspeichert, diese dann sortiert und richtig ausgibt nur for ($a=$anz-1;$a>$anz-10;$a--) $zwischen[$i] = $zeile[] $i = $i + 1; geht auch nicht. Hat jemand Anstöße oder Hinweise wie dieses Problem zu bewältigen ist?? DANKE FÜR EUER HILFE! |
|
|
|
Nach oben #2 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
wo genau liegt denn dein Problem?
Bei der Auswahl der 10 Einträge, oder bei der Darstellung?
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #3 |
|
Gast
Beiträge: n/a
|
sowohl als auch....
Meine Überlegung ist folgende: 1. die letzten 12 datensätze aus DB von hinten nach vorne einlesen und einen gewissen String aus dem Satz extrahieren $line[2] z.B. Code:
$db=mysql_connect mysql_select_db $anfrage="SELECT * FROM tabelle"; $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); for ($a=$anz-1;$a>$anz-10;$a--) mysql_data_seek($ergebnis, $a); $zeile=mysql_fetch_row($ergebnis); 2. Diese mit schleife in Arrays zwischenspeichern Code:
$i = 0;
do {
$dsatz[$i] = $zeile[2];
$i = $i++;
}
while ($i=$anz);
oder so
$db=mysql_connect("localhost","root","");
mysql_select_db("dbGoon");
$anfrage="SELECT * FROM tabelle";
$ergebnis=mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
for ($a=$anz-1;$a>-1;$a--) {
while($row = mysql_fetch_assoc($ergebnis, $a)) {
$entries[] = $row['art_id'];
print($entries."<br />");
}
}
3. in dreier Blöcke teilen (oder dieser Punkt höchstwahrscheinlich auch schon während dem Einlesen.) 4. Die mit den Strings gefüllten Arrays nach unten dargestelltem Schema sortieren Code:
$dsatz[1] INT 15 <------ $dsatz[2] INT 14 | vertauschen $dsatz[3] INT 13 <------ $dsatz[4] INT 12 <------ $dsatz[5] INT 11 | vertauschen $dsatz[6] INT 10 <------ $dsatz[7] INT 9 <------ $dsatz[8] INT 8 | vertauschen $dsatz[9] INT 7 <------ $dsatz[10] INT 6 <------ $dsatz[11] INT 5 | vertauschen $dsatz[12] INT 4 <------ 5. die blöcke mit Schleife in HTML Tabelle setzen. die so aussieht Code:
---------------------------------------- | INT 11 | INT 8 | INT 5 | INT 2 | ---------------------------------------- | INT 12 | INT 9 | INT 6 | INT 3 | ---------------------------------------- | INT 13 | INT 10 | INT 7 | INT 4 | --------------------------------------- [/code] Ist meine Überlegung überhaupt korrekt oder hab ich etwas nicht beachtet? |
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
ok, fangen wir mit dem auslesen aus der db an!
du solltest dir dazu mal im MySQL-Handbuch die Zeilen über LIMIT und ORDER BY anschauen! mit LIMIT kannst du die Anzahl der Ausgabe begrenzen mit ORDER BY kannst du das dann sortieren btw: auch in den Tutorials hier im Forum findest du Beispiele dazu. wenn das geklärt ist, dann erst werden wir versuchen das auch dem Browser mitzuteilen... Ok?
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #5 |
|
Gast
Beiträge: n/a
|
Hallo Jann Hendrik,
das hört sich sogar besser an, als die for schleife die ich hatte. $db=mysql_connect("localhost","root",""); mysql_select_db("dbGoon"); $anfrage="SELECT title, forum_id FROM forum ORDER BY forum_id DESC LIMIT 0,12;"; aber wenn der offset 0 ist bezieht er ORDER BY mit ein und legt da den Offset an? |
|
|
|
Nach oben #6 | |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
Zitat:
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
|
Nach oben #7 |
|
Gast
Beiträge: n/a
|
Auto increment wird ja von 0 bis gezählt
wenn ich jetzt ORDER BY forum_id DESC(ending) sortiere dann fängt er doch bei der höchsten Zahl (offset 0) zwölf runter zu zählen? mit DESC ist doch absteigend gemeint oder? |
|
|
|
Nach oben #8 | ||
|
Cäptn
Registriert seit: 15.12.2004
Ort: Stockholm
Beiträge: 116
|
Zitat:
ASC impliziert aufsteigende Reihenfolge Zitat:
begrenzt wird damit nicht die ausgabe, sondern die anzahl der auszuwählenden datensätze auf die die WHERE-klauses passt! die regelung der ausgabe erfolgt ja auch erst später.
__________________
"Wer nicht mit der Zeit geht, wird mit der Zeit gehen." ___________________________ |
||
|
|
|
|
|
Nach oben #9 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
@Orolhawion: ja, da hast du natürlich recht - da habe ich das schlurig formuliert!
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #11 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
ja
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #12 |
|
Gast
Beiträge: n/a
|
Hallo,
ne geht doch nicht musste diesen Teil beibehalten aber verändern $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); for ($a=0;$a<4;$a++) mysql_data_seek($ergebnis, $a); $zeile=mysql_fetch_row($ergebnis); wie bekomme ich jetzt diese Strings, am besten nur die Forumsüberschrift und das datum extrahiert und in Arrays zwischengespeichert, um sie zu sortieren? Mit einer schleife? Aber eine Schleife in dieser For Schleife und das primitive hochzählen der Arrays hat nicht geklappt.. Sollte ich die zwölf Arrays mit Stringinformation mit folgender Definition sortieren vertausche position ($dsatz) 12 mit Position 10 vertausche position ($dsatz) 9 mit Position 7 vertausche position ($dsatz) 6 mit Position 4 vertausche position ($dsatz) 3 mit Position 1 oder irgendwie ähnlich wie explode 12 positionen und jeweils in einem Packet letzte und erste Position vertauschen? Ich bitte um Beistand .. |
|
|
|
Nach oben #14 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
die aus der db selektierten Werte kannst du nun mit PHP-Mitteln ausgeben.
Wie du auch im Tutorial auf http://www.developers-guide.net/foru...tion-mit-mysql nachlesen kannst: PHP-Code:
ich rate dir nicht zu einem echo - sondern zum befüllen eines array(). Die Sortierung musst du dann noch vornehmen - wie du das nun genau haben willst weiß ich nicht, weil ich ja auch nicht weiß, in welcher Reihenfolge die Daten kommen.... Dann die Ausgabe - fertig.
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! Geändert von Jann Hendrik (05.06.2007 um 08:21 Uhr). Grund: php-info.org - link entfernt. |
|
|
|
|
|
Nach oben #15 |
|
Gast
Beiträge: n/a
|
Hallo,
aber mit welcher (Schleifen?)Methode befülle ich arrays? oder befehl? mein $i=0; do{ $dsatz[$i] = $zeile $i=++; } while ($i>11) will nicht funktionieren bei Überprüfung der Werte in einem dsatz array mit print ($dsatz[2]); zeigt es nichts an, höchstens ne Fehlermeldung |
|
|
|
Nach oben #16 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
sry, aber aus dem was du versuchst zu sagen werde ich einfach nicht schlau...
versuch mal das array so zu befüllen: PHP-Code:
Du solltest zu Beginn des Skriptes folgendes stehen haben: PHP-Code:
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #17 |
|
Gast
Beiträge: n/a
|
Hallo,
Zu erst einmal: Wer hat den vorigen Beitrag verfasst? developers-guide.net zeigt mir nämlich fälschlicherweise MICH an??!?!? Denn Du meine Güte! endlich klappts. die version mit $dsatz und [] damit er automatisch hochzählt hatte ich auch schon versucht.. aber wie mir schein hat $dsatz = array(); gefehlt!! vor der While schleife.. und wenn ich es jetzt betrachte, muss ich gar nicht mehr sortieren sondern nur richtig positionieren... Danke für deine Hilfe!! Geändert von Jann Hendrik (05.06.2007 um 08:22 Uhr). Grund: php-info.org - link entfernt. |
|
|
|
Nach oben #18 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
ähm... komisch.. das ist mir gar nicht aufgefallen!
Ich hatte den Beitrag verfasst. Ich werde mal in der db wühlen und das ändern. Nein - ich weiß nicht, warum das passiert ist! // manuell in der db geändert - nun kommt der post auch offiziell von mir...
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|