Webdesign in Siegen

fortlaufende Nummerierung bei einem Profilgästebuch

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

fortlaufende Nummerierung bei einem Profilgästebuch

Beitragvon xero am 30.06.2005, 23:45

Hi!

Da ich zur Zeit einen komplett neuen Code für meine Seite schreibe, brauche ich mal eine kleine Hilfe. Es ist ein kleines Problem und eigentlich frag ich mich, warum ich es nicht selbst schaffe ^^

Ich möchte, dass jeder registrierter User ein persönliches Gästebuch hat. Zu realisieren ist dies ja wie eine Kommentarfunktion. Das Script ist auch kein Problem und man kann auch bei jeden User ein Kommentar hinterlassen, aber mit der richtigen fortlaufenden Nummerierung klappt es nicht.

Hier erstmal der Code zum auslesen des Usergbs (vereinfachte Version):

Code: Alles auswählen
$query = @mysql_query("SELECT * FROM usergb WHERE usergb_id2='$id' ORDER BY usergb_id DESC");
$number = 0;
$number++;
while($result = @mysql_fetch_array($query)) {
$time = date("d.m.Y - H:i", $result[usergb_date]);
echo"
<br>
<table width='100%'>
<tr>
<th colspan='2'>$number von $result[usergb_nickname] // $time</th>
</tr>
<tr>
<td colspan='2'>$result[usergb_entry]</td>
</tr>
</table>";
}


Dort wo jetzt $number zu finden ist, soll dann die entsprechende Nummer des Eintrags hin. Ich hatte schon verschiedene Varianten benutzt (mysql_num_rows; for-Schleife), bin aber nie zum Ziel oder eher zum falschen Ziel gekommen.

Hoffe auf baldige Antwort (dürfte ja kein Problem für euch sein ;) )
Achte auf Deine Gedanken!
Sie sind der Anfang Deiner Taten.
Chinesische Weisheit
xero
Mitglied
 
Beiträge: 54
Registriert: 13.05.2005, 17:14
Wohnort: Bernau

Beitragvon Manuel am 01.07.2005, 00:22

Hi Xero!

Wo genau liest du die User denn aus? Hast du ein Forum, wo sich die User registrieren oder hast du dafür ein eigenes Script?
Du kannst ja bei MySQL sonst einfach eine Spalte mit einer fortlaufenden Nummer machen oder du schreibst einfach eine Zahl in ein Feld, ruft diese Zahl bei der nächsten Registrierung auf und überschreibst diese mit

i += 1;

Oder hab ich deine Frage da vielleicht falsch verstanden? :)

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9205
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Beitragvon xero am 01.07.2005, 12:21

Huhu!

Ich glaub du hast mich da falsch verstanden ;)
Ich versuchs nochmal zu erklären. Also ich arbeite zur Zeit an einem komplett neuen Code für meine Seite. Es soll ein CMS sein, wo man sich auch registrieren kann. Nach erfolgreichem Login (Registrierung natürlich vorrausgesetzt) findet man sich im Profil-Bereich wieder. Hier kann man seine Profil-Daten ändern, sein eigenes Gästebuch einsehen, Bilder in seiner Gallerie verändern/hochladen und sich mit anderen Benutzern via PM unterhalten.

Das Gästebuch gleicht im Prinzip ein Kommentar-Script:

Meine mysql-Tabelle (Guestbook)

id (vom gästebucheintrag) > auto_increment
id2 (vom profil)
name (name des eintragenden)
zeit (zeit des eintrages)
eintrag (der gästebucheintrag)

Zum Vergleich in Kommentar-Script

id - vom kommentar > auto_increment
id2 - zb von den news
name - benutzername
eintrag - kommentar

Das Userguestbook funktioniert auch so wie es soll. Zusätzlich will ich aber jetzt, dass bei jedem Benutze in seinem Guestbook angezeigt wird, welche Nummer der Eintrag hat -> fortlaufende Nummerierung und die ist ja nicht bei jedem Benutzer gleich (wegen unterschiedlicher Anzahl von Einträgen), was es unmöglich macht die ID aus der mysql-Tabelle auszulesen, da sonst die ID bei jedem gleich wäre und bei löschung eines Eintrages die Nummerierung nicht korrekt ist (nach 1 kommt beispielsweise 3 als id, da die 2 gelöscht wurde).

Wie gesagt hab ich schon verschiedenes ausprobiert:

Code: Alles auswählen
$query = @mysql_query("SELECT * FROM usergb WHERE usergb_id='$id' ORDER BY usergb_id DESC");
$number = 0; // Eintragsnummer 0 setzten
$number++; // Eintragsnummer ausgeben und dann ausgeben und um 1 erhöhen
// auslesen
while($result = @mysql_fetch_array($query)) {
echo "
Eintragsnummer: $number "; // Ausgabe ist immer 1 ?!?
}


oder:

while($result = @mysql_fetch_array($query)) {
$num = mysql_num_rows($query);
for($i=0; $i<$num; $i++) {
$number = $i+1;
echo "
Eintragsnummer: # $i+1";
}
}

oder:


while($result = @mysql_fetch_array($query)) {
$num = mysql_num_rows($query);
$number = $num +1;
echo "
Eintragsnummer: $number "; //Ausgabe = richtig, aber bei jedem Neueintrag haben dann alle bisherigen Einträge die gleiche Nummer ?!?
}


Ich hoffe es war verständlicher erklärt ;)

mfg xero
Achte auf Deine Gedanken!
Sie sind der Anfang Deiner Taten.
Chinesische Weisheit
xero
Mitglied
 
Beiträge: 54
Registriert: 13.05.2005, 17:14
Wohnort: Bernau

Beitragvon Rene am 01.07.2005, 13:39

Hallo,
habe deinen letzen Post gar nicht gelesen *g*
Manu schwaffelt mal weider Zeugs ;)

Wenn ich dich richtig verstanden habe, willst du vor jedem Eintrag ne Nummer:
1 Rene
2 Manu
....

Also, dein Code war richtig:

Code: Alles auswählen
$query = @mysql_query("SELECT * FROM usergb WHERE usergb_id2='$id' ORDER BY usergb_id DESC");
$number = 0;
while($result = @mysql_fetch_array($query)) {
$time = date("d.m.Y - H:i", $result[usergb_date]);
echo"
<br>
<table width='100%'>
<tr>
<th colspan='2'>$number von $result[usergb_nickname] // $time</th>
</tr>
<tr>
<td colspan='2'>$result[usergb_entry]</td>
</tr>
</table>";
$number++;
}


So stimmt er:
Du musst $number++; in die While schleife setzen.
Ist logisch oder ?
$number ist = 0
Bei jedem Schleifen durchgang wird sie um eins erhöht.

Mal noch was anderes. Man sollte den echo tag anderst schreiben.
Siehe:

Code: Alles auswählen
$query = @mysql_query("select * from usergb where `usergb_id2` ='$id' order by usergb_id desc");
$number = 0;
while($result = @mysql_fetch_array($query)) {
$time = date("d.m.Y - H:i", $result[usergb_date]);
echo'
<br>
<table width="100%">
<tr>
<th colspan="2">'.$number.' von '.$result[usergb_nickname].' // '.$time.'</th>
</tr>
<tr>
<td colspan="2">'.$result[usergb_entry].'</td>
</tr>
</table>';
$number++;
}


So ist es besser.
Wenn du jetzt das ganze mit den zahlen anderstrum haben willst, also
20
19
18

Was ja geschickter meineserachtens ist, liest du deine gesamt Zahl der Einträge mit mysql_num_rows() aus und verringerst die Zahl der Einträge einfach mit $number--;

Hoffe ich konnte dir soweit helfen.

LG
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon xero am 01.07.2005, 14:13

Hey, danke Rene! jetzt funktioniert es so, wie es haben wollte :)
Und danke nochmal für den Tip mit dem echo-Befehl, werde ihn demnächst benutzen!
Achte auf Deine Gedanken!
Sie sind der Anfang Deiner Taten.
Chinesische Weisheit
xero
Mitglied
 
Beiträge: 54
Registriert: 13.05.2005, 17:14
Wohnort: Bernau

Beitragvon Rene am 01.07.2005, 15:48

Bitte habe ich gern gemacht.

Wenn du Probleme hast einfach nach fragen.


LG
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Manuel am 01.07.2005, 17:38

Rene hat geschrieben:Manu schwaffelt mal weider Zeugs ;)


Ich hätte ja auch gerne etwas sinnvolleres geschwafelt, aber es war schon nach 12 und ich hab die Frage irgendwie gar nicht verstanden gehabt...warum auch immer?!

Außerdem bist du hier der PHP-Profi, nich ich *g*




Edit: Nach dem 2ten Post hab ich die Frage nun auch verstanden :) Also war das mit dem Increment doch gar nicht so falsch... :roll:
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9205
Registriert: 10.12.2004, 19:29
Wohnort: Asbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste