Jag har två olika sidor varpå sessions med användarnas ID'n sparas. Sedan ska jag lägga in allt i databasen med den här koden:
<?php
include("includes/top.php");
?>
<tr>
<td width="400px" valign="top" bgcolor="white">
<br>
<?php
include("includes/connection.php");
// Uppdatera informationen
$catch = mysql_query("INSERT INTO friends(id,UserID,Friend) VALUES ('$id','$UserMyID','$UserFriendID')");
echo("Ännu en polare till polarelistan!");
echo("<br><br>");
echo("<a href=javascript:history.go(-1)><b>< Tillbaka</b></a>");
// Stäng databasen
mysql_close($db);
?>
</td>
</tr>
<?php
include("includes/bottom.php");
?>
Det fungerar att lägga till en ny post. Men Några värden i "Friend" eller "UserID" blir det inte, och det är där mitt och polarens ID'n ska ligga.
SPiNMedlem sedan mars 20007 896 inlägg Har variablerna något värde, för det första? Hur skickar du dem till sidan? Har du register_globals satt till on?
Puh, har suttit större delen av kvällen. Och nu funkar det.
Men grejjen kommer sedan till när jag ska skriva ut vilka kompisar jag har på min lista. För att i kompis-tabellen sparar jag mitt användarnamn och kompisarnas ID'n. Och då skrivs ju bara deras ID nummer ut, ser inte så skoj ut liksom.
Dina kompisar!
22
15
24
Hur fixar man det? Jag kan skriva in deras namn istället, MEN, om man väljer att kalla sig för "Bert Gregor" så kommer bara "Bert" in i databasen när man lägger till honom som polare. Kanske lättare att hitta en lösning på det?
SPiNMedlem sedan mars 20007 896 inlägg Mha SQL-frågan:
SELECT User.Namn FROM User, Kompisar WHERE User.ID = Kompisar.KompisID
Det fungerar inte för mig riktigt. Jag får inget felmeddelande, men inget skrivs ut. Och det finns poster i databasen som borde skrivas ut...
<?php
include("includes/connection.php");
$catch = mysql_db_query("rob","SELECT * FROM users, friends WHERE users.uUsername = friends.User");
while ($userRow = mysql_fetch_array ( $catch )) {
echo("".$userRow['friends.Friend']."<br>");
}
mysql_close($db);
?>
Jag förstår dock inte hur den här koden ska kunna hämta mina kompisars användarnamn eftersom att dom bara finns som namn i users databasen och bara som ID nummer i friends databasen.
ThACRoWMedlem sedan dec. 2001314 inlägg ändra raden
echo("".$userRow['friends.Friend']."<br>");
till
echo("".$userRow['Friend']."<br>");
ThACRoWMedlem sedan dec. 2001314 inlägg
Jag förstår dock inte hur den här koden ska kunna hämta mina kompisars användarnamn eftersom att dom bara finns som namn i users databasen och bara som ID nummer i friends databasen.
Självklart så måste du ha Id nummer i "users" också... eller användarnamn i "friends".
Men om jag skriver "Friend" istället för "friends.Friend" så hämtar den alla från friends oavsett vem som är inloggad :(
ThACRoWMedlem sedan dec. 2001314 inlägg Ja, det är väl logiskt? I så fall så måste du ju ha ett fält som står för om man är inloggad eller ej, så att du sen kan göra en AND loggedIn = 1, typ... ?
eller jag kanske missuppfattade dig nu
ThACRoWMedlem sedan dec. 2001314 inlägg Vänta strunt i det jag skrev ovan... jag tror jag fattar vad du menar. Hade inte riktigt läst ovan ;)
Först å främst måste du ju ha 2 lika dana fält i båda tabellerna, alltså ett användarnamn eller ID som finns i båda tabellerna.
Sen är det bara att göra en sån här sql:
SELECT users.UserName FROM users, friends WHERE users.UserID = friends.UserID
ThACRoWMedlem sedan dec. 2001314 inlägg Haha... okej, jag kan inte tänka riktigt klart i den här värmen *svettas som f#!¤*... har jag fel även nu så får jag nog gå och lägga mig eller nått
Så här ska SQL-frågan se ut:
SELECT users.userName from users, friends WHERE users.userID = friends.friendID AND friends.userID = 1
Jag blir fan helt galen alltså! Jag får det inte att funka hur jag än gör!
Nu har jag skapat en session som sparar mitt ID nummer. Sedan jämför jag sessionens innehåll med kompisarnas fält "FriendID" där mitt ID nummer sparas. Koden ser ut så här:
<?php
include("includes/connection.php");
$catch = mysql_db_query("rob","SELECT users.id FROM users, friends WHERE $UserMyOwnID = friends.FriendID");
while ($userRow = mysql_fetch_array ( $catch )) {
echo("".$userRow['friends.Friend']."<br>");
}
mysql_close($db);
?>
Den gnäller på rad 16, som ser ut så här:
while ($userRow = mysql_fetch_array ( $catch )) {
JA ÄNTLIGEN! :P
Jag fick det att fungera! Jag fick göra om koden lite. Men ska nu testa om det går på ett annat sätt, vill ju inte öppna databasen två gånger. Skulle vara smidigare att lösa det med en session.
<?php
include("includes/connection.php");
// Skriv ut på sidan
$catch = mysql_db_query("rob","SELECT * FROM users WHERE uUsername = '$UserName'");
$userRow = mysql_fetch_array($catch);
$UserMyOwnID = "".$userRow['id']."";
mysql_close($db);
include("includes/connection.php");
$catch = mysql_db_query("rob","SELECT * FROM friends WHERE $UserMyOwnID = friends.FriendID");
while ($userRow = mysql_fetch_array($catch)) {
echo("".$userRow['Friend']."<br>");
}
mysql_close($db);
?>
ThACRoWMedlem sedan dec. 2001314 inlägg Om du gör som jag sa senast så fixa du allt med en query-fråga, om du ger mig alla fältnamn och tabellnamn så kan jag fixa koden åt dig.
Jag förstår dock inte varför du stänger databasen, och sen öppnar den igen :q
SPiNMedlem sedan mars 20007 896 inlägg Du bör undvika att hämta med * om du inte ska använda alla fält... Som ThACRoW säger bör du också lägga in all hämtning i en fråga.
Okay, så här ser det ut, jag bifogar en bild.
R: Men så glömde jag skicka med bilden :(
ThACRoWMedlem sedan dec. 2001314 inlägg Du har visst krånglat till det lite väl mycket för dig...
Eftersom du sparar användarnamn i "friends" så är det ju ingen mening att ha ett ID-nummer...
Så du behöver ju bara göra så här:
<?php
include("includes/connection.php");
$catch = mysql_db_query("rob","SELECT Friend FROM friends WHERE User = '$UserName'");
while ($userRow = mysql_fetch_row($catch)) {
echo("".$userRow[0]."<br>");
}
mysql_close($db);
?>
Hmm, okay. Det ser lite smidigare ut :) Men varför har du skrivit
echo("".$userRow[0]."<br>");
Vad gör 0:an?
Patrik81Medlem sedan okt. 2001538 inlägg Vet inte om jag är något bra på att förklara men jag kan väl göra ett försök :)
PHP börjar inte räkna vid 1, utan vid 0, så den kodraden du undrar över säger helt enkelt att skriva ut innehållet som ligger i den första cellen i den rad du hämtat från databasen.
MVH Patrik