Je travaille sur un genre de «partage social» pour la musique, et j'ai juste rencontré un problème. Ma table d'amis est structuré comme suit:Requête MySQL compliquée?
| id | f1 | f2 | status |
----------------------------------------------
| 000001 | username1 |username2| 0 |
| 000002 | username4 |username7| 1 |
ma table de taux est structuré comme celui-ci:
| id | username | songname | songid | plus | minus |
----------------------------------------------------
|0001| username1| Songname | 000001 | 0001 | 00000 |
|0002| username3| Song2222 | 000002 | 0000 | 00001 |
Et ce que je suis en train de faire, est d'obtenir une liste aléatoire de 3 amis où le statut est 1, puis interroger la table des taux pour le taux le plus récent de chaque ami aléatoire où plus = 1. 'Récence' (si vous voulez) est basé sur l'ID qui est auto-incrémental.
Cette partie n'est pas vraiment difficile, lol. Le bit difficile, c'est que l'utilisateur peut être SOIT F1 OU f2, donc la requête doit contenir un OU, et si l'utilisateur est en f1, il devra obtenir le f2 correspondant, et vice versa.
Puis vérifiez s'il s'agit d'amis et de statut = 1, puis interrogez les taux pour les tarifs les plus récents par les 3 amis aléatoires. Ensuite, téléchargez les bits de données, puis d'écrire 3 chaînes semblables à l'exemple ci-dessous
<a href="profile.php?u=username3">username 3</a> +1'd <a href="song.php?id=2">Song2222</a>
Si quelqu'un veut savoir comment écrire un script/requête comme ceci en PHP/MySQL, je serais très reconnaissant! Haha
Merci! :)
Éditer 3 * En attendant les réponses, j'ai élaboré ce code, qui fonctionne en partie!
<? session_start();
$user = $_SESSION['username'];
mysql_connect("localhost", "xxxxx", "xxxx") or die(mysql_error());
mysql_select_db("xxxxxx") or die(mysql_error());
$q1data = mysql_query("SELECT * FROM friends WHERE (f1='$user') OR (f2='$user') AND status=1 ORDER BY RAND() LIMIT 1") ;
if(mysql_num_rows($q1data)===1)
{
$q1result = mysql_fetch_assoc($q1data);
$q1f1 = $q1result['f1'];
$q1f2 = $q1result['f2'];
if($q1f1==$user) {
$oq2un1 = $q1f2;
}
if($q1f2==$user) {
$oq2un1 = $q1f1;
}
}
$q2data = mysql_query("SELECT * FROM friends WHERE (f1='$user') OR (f2='$user') AND status=1 ORDER BY RAND() LIMIT 1") ;
if(mysql_num_rows($q2data)===1)
{
$q2result = mysql_fetch_assoc($q2data);
$q2f1 = $q2result['f1'];
$q2f2 = $q2result['f2'];
if($q2f1==$user) {
$oq2un2 = $q2f2;
}
if($q2f2==$user) {
$oq2un2 = $q2f1;
}
}
$q3data = mysql_query("SELECT * FROM friends WHERE (f1='$user') OR (f2='$user') AND status=1 ORDER BY RAND() LIMIT 1") ;
if(mysql_num_rows($q3data)===1)
{
$q3result = mysql_fetch_assoc($q3data);
$q3f1 = $q3result['f1'];
$q3f2 = $q3result['f2'];
if($q3f1==$user) {
$oq2un3 = $q3f2;
}
if($q3f2==$user) {
$oq2un3 = $q3f1;
}
}
/************************************* SECOND SET OF QUERIES ******************************************/
$q4data = mysql_query("SELECT * FROM rates WHERE username='$oq2un1' AND plus=1 ORDER BY id LIMIT 1");
if(mysql_num_rows($q4data)===1)
{
$q4result = mysql_fetch_assoc($q4data);
$finalusername1 = $q4result['username'];
$q4songid = $q4result['song_id'];
$q4songname = $q4result['songname'];
}
$q5data = mysql_query("SELECT * FROM rates WHERE username='$oq2un2' AND plus=1 ORDER BY id LIMIT 1");
if(mysql_num_rows($q5data)===1)
{
$q5result = mysql_fetch_assoc($q5data);
$finalusername2 = $q5result['username'];
$q5songid = $q5result['song_id'];
$q5songname = $q5result['songname'];
}
$q6data = mysql_query("SELECT * FROM rates WHERE username='$oq2un3' AND plus=1 ORDER BY id LIMIT 1");
if(mysql_num_rows($q6data)===1)
{
$q3result = mysql_fetch_assoc($q6data);
$finalusername3= $q6result['username'];
$q6songid = $q6result['song_id'];
$q6songname = $q6result['songname'];
}
$socialmuze_string1 = $finalusername1." recently <font color='#00FF00'>+1'd</font> <a href='song?id=".$q4songid."'>".$q4songname."</a><br>";
$socialmuze_string2 = $finalusername2." recently <font color='#00FF00'>+1'd</font> <a href='song?id=".$q5songid."'>".$q5songname."</a><br>";
$socialmuze_string3 = $finalusername3." recently <font color='#00FF00'>+1'd</font> <a href='song?id=".$q6songid."'>".$q6songname."</a><br>";
echo $finalusername1." ".$q4songname."<br>";
echo $finalusername2." ".$q5songname."<br>";
echo $finalusername3." ".$q6songname."<br>";
?>
Salut, @Karan, pourriez-vous s'il vous plaît poster ce que vous avez essayé jusqu'à présent et comment il a échoué? Nous préférons réparer les choses à SO et vous aider à être un meilleur programmeur, pas à construire des choses à partir de zéro. – rajah9
Très bien! Je n'en ai pas trop pour le moment: S Je n'arrive pas vraiment à savoir quoi faire après: S $ user étant f1 ou f2. Edit * En fait, je vais éditer cela à la question –
Nonobstant une solution finale, en construisant votre chaîne avec des chaînes intégrées de variables de session utilisateur pourrait vous laisser WIDE OPEN aux attaques par injection SQL ... regardez en utilisant des paramètres pour vos requêtes. – DRapp