2010-12-10 10 views
0

Ich muss eine Datenbank für eine Klasse erstellen und ich habe Probleme mit einer Sache. In der Datenbank kann ein Benutzer nach anderen Benutzern suchen und wählen, sie zu befreunden (genau wie Facebook). In meinen PHP-Skripten suche ich meine "user" -Tabelle (in MySQL) nach allen Benutzern, die mit einer Zeichenkette übereinstimmen, die vom angemeldeten Benutzer eingegeben wurde und eine Liste von Namen, die mit der Zeichenkette übereinstimmen. Der angemeldete Benutzer kann dann auf den Namen klicken, den er als Freund haben möchte, und eine Anfrage wird an diese Person gesendet. Ich bin mir nicht sicher, wie ich den Benutzernamen und die ID des Namens, auf den geklickt wurde, abrufen kann. wenn die Liste der Namen zum Beispiel, die angezeigt werden, ist:

Sally
Kevin
Mike

und der Benutzer klickt auf Sally, wie kann ich den Benutzernamen und ID abrufen? In der SQL-Abfrage, die ich benutze, ist die letzte Person an der Spitze des Arrays, so dass sie eingeloggt Benutzer immer versucht, Freund Mike. Irgendwelche Vorschläge wären großartig !!

Die $ _SESSION-Werte übernehmen den letzten Namen im Array. Wie bekomme ich den Namen, auf den der angemeldete Benutzer klickt?

Oder gibt es einen besseren Weg, dies zu tun?

Hier ist mein Code so weit:

$sql="SELECT uid, name FROM user WHERE name LIKE '%" . $name . "%'"; 

//run the query against the mysql query function 
$result=mysql_query($sql); 

//create while loop and loop through result set 
while($row=mysql_fetch_array($result)){ 
     $name=$row[name]; 
     $uid=$row[uid]; 

     //display the result of the array 
     echo "<ul>\n"; 
     echo "<a href=\"friend_request.php\">" .$name. "</a>"; 
     echo "</ul>"; 
     $_SESSION['friend_name'] = $name; 
     $_SESSION['friend_id'] = $uid; 
} 
+1

Warum verwenden Sie Sitzung dafür? Warum nicht gerade eine GET-Anfrage machen? –

+0

Wie würde ich das tun (die Namen anzeigen und eine GET-Anfrage zulassen?) Können Sie ein Beispiel geben? – user457666

Antwort

3

Ich sehe, dass Sie die URL mit einem Namen generieren, der in Ihrem Fall kein Schlüssel in der Datenbank ist. Warum senden Sie die UID nicht selbst an die Datei friend_request.php und verwenden diese UID dann, um die Anfrage an diese Person zu senden.

echo "<a href=\"friend_request.php?uid=".$uid."&name=".$name.">" .$name. "</a>"; 

Entfernen Sie die $_SESSION Variable, Sie brauchen es nicht.

Im friend_request.php, ändern $_SESSION['uid'] und $_SESSION['name'] zu $_GET['uid'] und $_GET['name']

+0

Vielen Dank so sehr! Daran habe ich fast den ganzen Tag gearbeitet! – user457666

+1

Gern geschehen! Auch ich sehe, dass Sie die Daten von den Benutzern direkt in Ihren Abfragen verwenden. Ich empfehle Ihnen, die Daten zu bereinigen, bevor Sie sie einer Abfrage hinzufügen. – tHeSiD

0

Sie sollten den Wert des Freundes auf die Anforderung übergeben ausgewählt ist, dass es die Auswahl, anstatt zu versuchen, sie in der Sitzung zu speichern. Etwas wie folgt aus:

echo "<a href=\"friend_request.php?name=" .$name. "\">" .$name. "</a>"; 

Auf diese Weise wird der Wert gewählt wird dem friend_request.php Skript als $_GET['name'] verfügbar sein.

0

es hängt davon ab, wie Sie erzeugen die Personen Liste der Benutzer aus, so dass die Liste wählen möchten wie:

<a href="http://..../makefriend.php?name=sally">sally</a> 

und in Ihrem PHP-Code alias makefriend.php können Sie die Benutzeridentifikation und -name von der DB wie erhalten:

$result = mysql_query("SELECT uid, name FROM user WHERE name LIKE '%" . $_get['name'] . "%' 

ich hoffe, das kann helfen.

Verwandte Themen