webForumDet fria alternativet

Hur gör jag?

21 svar · 556 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

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
#2

Har variablerna något värde, för det första? Hur skickar du dem till sidan? Har du register_globals satt till on?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

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
#4

Mha SQL-frågan:

SELECT User.Namn FROM User, Kompisar WHERE User.ID = Kompisar.KompisID
streetrobbanMedlem sedan jan. 20011 140 inlägg
#5

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
#6

ändra raden
echo("".$userRow['friends.Friend']."<br>");

till
echo("".$userRow['Friend']."<br>");

ThACRoWMedlem sedan dec. 2001314 inlägg
#7

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".

streetrobbanMedlem sedan jan. 20011 140 inlägg
#8

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
#9

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
#10

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
#11

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
streetrobbanMedlem sedan jan. 20011 140 inlägg
#12

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 )) {
streetrobbanMedlem sedan jan. 20011 140 inlägg
#13

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
#14

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
#15

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.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#16

Okay, så här ser det ut, jag bifogar en bild.

R: Men så glömde jag skicka med bilden :(

streetrobbanMedlem sedan jan. 20011 140 inlägg
#17

Här.

ThACRoWMedlem sedan dec. 2001314 inlägg
#18

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);
?>
streetrobbanMedlem sedan jan. 20011 140 inlägg
#19

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
#20

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

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)