Ik ben bezig met een social media site te maken.
Nu wil ik de vrienden van een specifieke gebruiker kunnen opslaan en kunnen weergeven op de site, waarbij de gebruiker zelf ook dmv een button een bepaalde andere gebruiker kan toevoegen als vriend.

Wat is de beste manier om vrienden van een gebruiker op te slaan, bv. in Phpmyadmin?
PHPmyadmin is een tool (website) om de MySQL database te beheren.
Je slaat dus alles op in MySQL en niet PHPmyadmin.

Maar het maakt niet uit waar je het opslaat, kan ook MongoDB zijn, deze is gebaseerd op NO-SQL.
Dus hebt h
geen relaties e.d met tabellen.. Volgens mij heb je helemaal geen tabellen.
Opslaan kan prima in MySQL. Ik denk dan aan een tabel friendships, met daarin 3 velden:
- UserID (jijzelf)
- UserID_friend
- Status (bijv. een E_NUM met 'pending', 'accepted', 'blocked')
Je zou een tabel kunnen maken met daarin 2 kolommen. In de eerste kolom de naam van degene die de vrienden heeft, en in de tweede kolom de naam met wie die een vriend is.
An tje op 04/09/2015 16:01:40

Je zou een tabel kunnen maken met daarin 2 kolommen. In de eerste kolom de naam van degene die de vrienden heeft, en in de tweede kolom de naam met wie die een vriend is.

Dat kan, maar een vriendschap moet ook wederzijds kunnen zijn.
Dit is de pagina voor het weergeven van alle vrienden van de gebruiker:
<?php
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}
// set database server access variables: 
$host = "localhost"; 
$user = "root"; 
$pass = "superbart"; 
$db = "sfriends";
// open connection 
$con=mysqli_connect($host, $user, $pass) or die ("Unable to connect!"); 
// select database 
mysqli_select_db($con, 'sfriends') or die ("Unable to select database!"); 
// Create query 
$query = "SELECT * FROM sfriends WHERE Userid=$id";
// execute query
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error()); 
// see if any rows were returned 
if (mysqli_num_rows($result) > 0) {  
    echo "<table border=2 height=80px width=300px>";  
    while($row = mysqli_fetch_array($result))      {
echo "<tr>";
echo "<td style='background-color:#1975FF'><h4><b><center>Naam:</center></b></h4></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#6685A3'><h4><b><center>" . $row['Userid_friend'] . "</center></b></h4</td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#1975FF'><h4><b><center>Emailadres:</center></b></h4></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#6685A3'><h4><b><center>" . $row['email'] . "</center></b></h4</td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#1975FF'><h4><b><center>Favoriete game:</center></b></h4></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#6685A3'><h4><b><center>" . $row['game'] . "</center></b></h4></td>";
echo "</tr>";
}
echo "</table>";
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
}

// free result set memory 
mysqli_free_result($result); 
mysqli_close($con);
?>


In de database heb ik nu een database genaamd sfriend met een tabel met daarin
Userid
Userid_friend

Ten eerste: De select query geeft een fout.
Ten 2e: kan je verduidelijken hoe ik kan zorgen dat als Gebruiker A (userid 1), gebruiker B (userid 2) wilt toevoege, ik het via een Sql-query voor elkaar krijg dat bij userid 1, userid 2 als userid_friend staat.

[size=xsmall]Toevoeging op 04/09/2015 18:14:49:[/size]

De tabel in de code moet je niet helemaal op letten, die is gepakt van andere eigen pagina, dat hij Email & Game niet vind is niet de SQL query fout die ik bedoel.

[size=xsmall]Toevoeging op 04/09/2015 18:29:41:[/size]

de Sql error is
"Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\.... on line 19

Error in query: SELECT FROM sfriends WHERE Userid = '3'."

[size=xsmall]Toevoeging op 04/09/2015 18:32:28:[/size]

De tabelnaam is de naam vd gebruiker, al heb ik inmiddels zelf twijfels of dat wel handig is.
"Warning: mysqli_error() expects exactly 1 parameter, 0


Punt.
Even een aantal tips:

- Een foutafhandeling met die() is niet netjes. Zie ook deze tutorial.
- Op lijn 17 raad ik aan om je variabele buiten quotes te halen.
- Inline-CSS is niet aan te bevelen. Gebruik een CSS-stijlblad.
- Voor elke regel een echo openen is niet echt efficiënt.Je kan grote blokken HTML prima buiten je PHP-blok uitvoeren.
- Aar - op 04/09/2015 18:48:12

- Voor elke regel een echo openen is niet echt efficiënt.Je kan grote blokken HTML prima buiten je PHP-blok uitvoeren.


Daarbij zou ik willen voorstellen dat je je code in twee delen gaat hakken:

Deel 1 - PHP programma
<?php

// variabelen declareren
// hier een query
// en een if - else
?>

Deel 2 - de output:

<html>
	<body>
		<h1><?php echo $title; ?></h1>
		<p>
			<?php 
			foreach($rows as $row) {
				echo $row['id'] . '<br>';
			?>
		</p>
	</body>
</html>


[size=xsmall]Toevoeging op 04/09/2015 19:17:58:[/size]

- Zet je hostname, database-naam, username en password in een apart configuratie bestand. (Dan voorkom je tevens dat je het per ongeluk online zet :p)
- Het connect-en met de database zou je beter in een custom function kunnen zetten die ook weer in een apart bestand staat.
De mysql error is weg. Dat in ieder geval.

Nu lukt het nog niet om ervoor te zorgen dat hij de vrienden van gebruiker A in een tabel weergeeft zonder A zelf te weergeven. Daarnaast Frank, zou je je code kunnen uitleggen?
Het gaat nog altijd om dit deel, en dan vooral om de sql query.

 // select database 
mysqli_select_db($con, 'sfriends') or die ("Unable to select database!"); 
// Create query 
$query = "SELECT DISTINCT a.Userid, a.Userid_friend, b.username FROM bert AS a
INNER JOIN users AS b
WHERE Userid = '$id'";
// execute query
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error()); 
// see if any rows were returned 
if (mysqli_num_rows($result) > 0) {  
    echo "<table border=2 height=80px width=300px>";  
    while($row = mysqli_fetch_array($result))      {
echo "<tr>";
echo "<td style='background-color:#1975FF'><h4><b><center>Naam:</center></b></h4></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#6685A3'><h4><b><center><a href='friendss.php?id=" . $row['Userid_friend'] . "'>" . $row['username'] . "</a></center></b></h4</td>";
echo "</tr>";
}
echo "</table>";
} 



De twee databases die genoemd worden in de Sql query

[size=xsmall]Toevoeging op 05/09/2015 17:05:32:[/size]




De databases

[size=xsmall]Toevoeging op 05/09/2015 17:06:41:[/size]




[size=xsmall]Toevoeging op 05/09/2015 17:07:07:[/size]

AFbeeldingen van de database doen het niet.

Reageren