webForumDet fria alternativet

Hur gör jag?

PHPur PHP

21 svar · 556 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#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.

Medlem 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?

Medlem 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?

Medlem sedan mars 20007 896 inlägg
#4

Mha SQL-frågan:

SELECT User.Namn FROM User, Kompisar WHERE User.ID = Kompisar.KompisID
Medlem 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.

Medlem sedan dec. 2001314 inlägg
#6

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

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

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

Medlem 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 :(

Medlem 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

Medlem 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
Medlem 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
Medlem 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 )) {
Medlem 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);
?>
Medlem 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

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

Medlem 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 :(

Medlem sedan jan. 20011 140 inlägg
#17

Här.

Medlem 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);
?>
Medlem 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?

Medlem 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

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