Unbekannter Fehler in Freundesliste

Wieso übergibst du die id als SESSION['id'] ?

Tabellenstruktur beispiel:

id, wid, cid, accept

wid = writterid
cid = contactid

du überprüfst vom eingeloggten user ob irgendeiner ihn einen antrag geschickt hat. Wenn es der fall ist, dann wird ein link angezeigt ?id=XY und in der anderen seite überprüfst du einfach ob wenn der eingeloggte user über get nen paramater id übergibt und wenn diese id mit der cid übereinstimmt, dann wird der antrag angenommen, praktisch gesehen wird dann accept auf 1 gesetzt, anstatt 0, und wenn es auf 0 gesetzt wird (also antrag abgelehnt) dann zeile löschen ;)
 
Es geht um die Freundesliste... NICHT ums Postfach...
Um Daten in den Freundeslisten oder Postfächern zu manipulieren, brauchste ne UserID in der SESSION, da du sonst auf keine Tabelle zugreifen kannst, weil keine entsprechende existiert ^^

Im Prinzip mach ich ja genau das was du sagst ^^
Über die $_SESSION['UserID'] gebe ich die ID des aktuell eingeloggten Users weiter, der ja den Antrag stellt...
Das is dann auch die ID in dem Link zum akzeptieren oder ablehnen...
Aber statt der ID von dem User, der den Antrag stellt, taucht da die ID von dem User auf, der den Antrag bekommt...

Von der Prinzipiellen Struktur her, macht der Skript genau das was er tun soll...
Nur benutzt er die falschen IDs dazu...

Kann es sein, dass die Nachricht von dem Antrag in dem Postfach landet ohne fest gesetzte ID, sondern mit der Variable, die dann durch die des Empfängers ersetzt wird?

[EDIT]
Ich hab das mal grad in der DB kontrolliert udn tatsache...
Obwohl cih die Nachricht mit der $_SESSION['UserID'] == 1 versende, taucht sie in der DB mit der UserID == 16 auf...

Wie kommt das, dass der mir die IDs so durcheinander wirft?
 
Zuletzt bearbeitet:
Nunja eine Freundesliste ist mit einem Postfach schon einbisschen vergleichbar :) Du gibst im script ein wer es geschickt hat(SESSION['userid']) und den empfänger dessen namen du vll von einer id aus get bekommen hast. Wenn einer in deiner Seite in ein anderes profil geht, dann wird ja normal erst überprüft ob der user den du gerade besuchst, nicht in der freundesliste ist, wenn das der fall ist, dann wird die möglichkeit offen, einen antrag zu schicken. Wie üblich bekommst du dann die id von dem besuchten user über get oder? friend.php?addfriend=1337 und wenn diese erfolgt, dann wird direkt ins formular geschrieben an wen geschrieben werden soll und der benutzer muss dann kein usernamen "manuell" eingeben :) Versuch mal alle von der freundesliste vom user in ein array zuladen, also alle die ihn in seiner freundesliste haben und alle die er in der freundesliste hat und am ende einfach mit array_unique drüber :D Zu deinen kleinen Fehler: Ich denke mal er nimmt die id der zeile :D Ich bin in deiner seite registriert, bin "tester", hab einbisschen rumgeguckt :)
 
Hab ich schon gesehn, dass du dich gereggt hast xD

Soweit korrekt... Beim aufrufen des Profils prüfe ich, ob der User in der FL ist, wenn ja, dann steht der Link zum entfernen, wenn nicht, dann der Link zum hinzufügen...

Manuelle Eingaben verwende ich in der Funktion garnicht, da ich immer von nem dummen User ausgehe, der keine korrekten Eingaben hinbekommt xD

Beim hinzufügen eines Users übergebe ich die ID des Users, der hinzugefügt werden soll per $_GET... Mit der $_SESSION['UserID'] identifiziere ich den User, der hinzufügen will...
Damit ist der $_GET-Parameter dann die ID des Users, der den Antrag gestellt hat, in der PN, die der User erhält, der eingetragen werden soll...
Demnach müsste die ID in dem Link in der PN, dann die ID des Antragstellenden sein...
Statt dessen ist aber die von dem drin, der den Antrag bekommt, wodurch der Rest des Skripts nicht richtig arbeiten kann...

Die nötigen Parameter in der URL werden ja immer entsprechend gesetzt... In der URL is also ausser in der PN immer die ID, die da drin sein soll...

Wie ich ja schon sagte, es sieht aus, als würde der Skript die PN mit der Variable speichern und dann die $_SESSION['UserID'] von dem Empfänger benutzen, anstatt wie es geplant ist, die Variable durch die ID des Anfragenden Users zu nehmen...

[EDIT]
Is so an sich doch eigentlich ganz hübsch die Site, oder?
Naja, ich designe noch ziemlich spartanisch, aber dafür is die Site entsprechend schnell xD
Die Grafiken hat ne gute Freundin für mich gemacht ^^
 
Zum Abrufen des Datensatzes wird vom User die ID des Datensatzes und die noch ein paramter für das akzeptieren oder ablehnen des Antrags benötigt.

Der folgende Datensatz ist ein beispiel von einer vorigen Abfrage die vor der Ausgabe schon ausgeführt werden muss, damit das script weiß, ob der eingeloggte user auch wirklich der empfänger ist und kein anderer ist.

<a href="lookatfriend.php?id=31337&accepting=1">Akzeptieren</a>
<a href="lookatfriend.php?id=31337&accepting=0">Ablehnen</a>

Wenn diese links aufgerufen werden, müssen alle davorigen abfragen inkl. dem neuen paramter accepting aufjedenfall überprüft werden, wenn das der fall ist, dass die id mit dem datensatz in der db übereinstimmt, der empfänger gerade alles abgeschickt hat, dann wird in eine andere tabelle die userids der beiden eingetragen und von der anderen tabelle gelöscht.

MfG
KD3
 
So hab das Skript nochmal überarbeitet...
Hab nu den Block mit dem allow einfach seperat gesetzt ohne das Element action, damit die einfacher und direkter angesprochen werden können...
Die Links hab ich natürlich auch entsprechend geändert und scheinbar t es nu ^^

Dafür harkt es an anderer Stelle ^^
Unzwar bei der Anzeige der Freundesliste links... Also bei dem Drop-Down-Menü...
Hab das mit dem verlinken aus der Liste ja mit nem ganz einfachen JavaScript gelöst...
Das is ja auch nich das Problem ^^ Ich hatte die Liste zwischenzeitlich am laufen, aber mir viel auf, dass da nen Fehler drin war mit dem anzeigen von online-Freunden...

So überarbeitet, nu t nimma^^ Obwohl die Syntax jetzt korrekt gebaut sein müsste, dass ich auch die richtigen Ergebnisse aus der DB bekomme und so...

Hier is ma die FIle zu schaun: http://gabriel86.ga.funpic.de/testClasses/friendlist.phps
 
Eigentlich musst die id's in das value attribute einfügen, ein OnChange-Handler starten mit Funktion und einfach auf das profil weiterleiten, mehr ist da nicht. Wer Online ist kannst du wie folgt lösen:

Du nimmst die Freundesliste und vergleichst einfach die Onlineliste mit der Freundesliste und erstellst einfach eine neue liste mit denen die online sind ( achtung, in die liste kommen nur id's rein die online sind und die die offline sind werden erstmal gelöscht) und ganz zum schluss überprüfst du wer nicht in der liste ist.. und fügst die hintendran. Man könnte noch ne andere Lösung vorschlagen :) Du behälst einfach alle id's im array und gibst zu jeder id noch ein subarray an array('Gabriel' => array('isonline' => 1)) und sortierst einfach ;)
 
Ich hab ma dieses kleine Snippet gefundn, wegen dem Menü:
Code:
<script type="text/javascript">
function Go (select) {
  var wert = select.options[select.options.selectedIndex].value;
  if (wert == "leer") {
    select.form.reset();
    return;
  } else {
    if (wert == "ende") {
      top.location.href = parent.location.href;
    } else {
      parent.location.href = wert;
      select.form.reset();
      parent.focus();
    }
  }
}
</script>

Das mit dem verlinken aus dem Menü herraus klappt damit auch bestens...

Nur wird nix mehr angezeigt ^^
 
Ok, das is noch tausendfach einfach und zweckmäßiger...
Gut das änder ich dann schonmal...

Dann nochmal die Statements überarbeiten und dann drück ma die Daumen, dass es dann klappt xD
Sonst sehn wa uns heir wida xDDD
 
Zurück