2010-12-10 4 views
0

Je dois créer une base de données pour une classe et j'ai des problèmes avec une chose. Dans la base de données, un utilisateur peut rechercher d'autres utilisateurs et choisir de les lier (tout comme Facebook). Dans mes scripts php, je suis à la recherche de ma table « utilisateur » (MySQL) pour tous les utilisateurs qui correspondent à une chaîne saisie par l'utilisateur connecté et fournir une liste de noms qui correspondent à la chaîne. L'utilisateur connecté peut alors cliquer sur le nom qu'il souhaite donner à un ami, et une demande lui est envoyée. Je ne suis pas sûr de savoir comment récupérer le nom d'utilisateur et l'identifiant du nom sur lequel on clique. Par exemple, si la liste des noms qui sont affichés est:

Sally
Kevin
Mike

et l'utilisateur clique sur Sally, comment puis-je récupérer son nom d'utilisateur et id? Dans la requête sql que j'utilise, la dernière personne est en haut du tableau, donc l'utilisateur connecté essaie toujours d'avoir un ami Mike. Toute suggestion sera appréciée!!

$ _SESSION valeurs prennent le nom du tableau. Comment puis-je l'obtenir pour prendre le nom sur lequel clique l'utilisateur connecté?

Ou y a-t-il une meilleure façon de faire cela?

Voici mon code à ce jour:

$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

pourquoi utilisez-vous pour cette séance? Pourquoi ne pas faire juste une demande GET? –

+0

Comment ferais-je cela (afficher les noms et permettre une requête GET?) Pouvez-vous donner un exemple? – user457666

Répondre

3

Je te vois générez l'URL avec un nom qui, dans votre cas est une clé dans la base de données. Pourquoi ne pas envoyer l'UID lui-même à friend_request.php, puis utiliser cet UID pour envoyer la demande à cette personne.

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

Supprimez la variable $_SESSION, vous n'en avez pas besoin.

Dans le friend_request.php, changer $_SESSION['uid'] et $_SESSION['name'] à $_GET['uid'] et $_GET['name']

+0

Merci beaucoup! J'ai travaillé dessus presque toute la journée! – user457666

+1

Vous êtes les bienvenus! Aussi, je vois que vous utilisez les données des utilisateurs directement dans vos requêtes. Je vous suggère de nettoyer les données avant de les ajouter à une requête. – tHeSiD

0

Vous devez passer la valeur de l'ami étant sélectionné à la demande qui est la sélection, plutôt que d'essayer de le stocker en session. Quelque chose comme ceci:

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

De cette façon, la valeur sélectionnée sera disponible pour le script friend_request.php comme $_GET['name'].

0

cela dépend de la façon dont vous créez la liste des personnes que l'utilisateur veut choisir de sorte que la liste peut être comme:

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

et dans votre code php makefriend.php alias vous pouvez obtenir l'ID utilisateur et le nom de la db comme:

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

J'espère que cela peut aider.

Questions connexes