Avatar billede stieper Nybegynder
12. oktober 2005 - 20:51 Der er 23 kommentarer og
2 løsninger

kæde værdier sammen fra mysql

Hej.

Jeg har 1 database i mysql med 2 tabeller.

En "user" tabel med information om brugerne i felterne:
ID
username
userfirst
userlast
description

og en "filer" tabel med billeder med felterne:
ID
bill_sti
descr
name
dimension
type
size
userid (som er det samme som ID under user tabellen).

Når jeg henter en liste over mine billeder i php, vil jeg gerne have et output af Brugerens navn (userfirst . userlast) - disse skal hentes via "userid" ved hvert billede og hente det tilsvarende navn for brugeren i "user" tabellen.

Kan dette lade sig gøre??

Håber mit spørgsmål er korrekt formuleret.
Avatar billede nielle Nybegynder
12. oktober 2005 - 20:57 #1
Følgende SQL burde kunne gøre det:

SELECT * FROM user AS u, filer AS f WHERE f.userid=u.id
Avatar billede jakobdo Ekspert
12. oktober 2005 - 20:58 #2
Du kunne jo lave 2 udtræk!
Et udtræk fra user-tabellen, og gemmer det.
Så laver du et udtræk af alle billeder knyttet til en bruger.
Så printer du de data du fik før.
Du kan også lave det i en SQL:

SELECT * FROM user INNER JOIN filer ON user.id = filer.userid WHERE user.id = 1

1 er det id du søger...
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:00 #3
Ok.. her er koden jeg gerne vil have det ind i..
Sådan at den sammen med hvert billede viser navnet i stedet for userid...

while($row_user = mysql_fetch_array($resultat_user)){
$id_user = $row_user["id"];
$name_user = '$row_user["userfirst"] .$row_user["userlast"]';
}
while($row = mysql_fetch_array($resultat)){
$id = $row["userid"];    <---- Det er denne jeg gerne vil have lavet om..
$name = $row["name"];
$descr = $row["descr"];
$type = $row["type"];
$dimension = $row["dimension"];
$image_dir = $row["bill_sti"];
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:02 #4
vrøvl...

$sql = "SELECT * FROM filer order by userid";
$sql_user = "select id, userfirst, userlast from user";
$resultat = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($resultat)){
// do some thing here
//$size = $row["size"];
$id = $row["userid"];
$name = $row["name"];
$descr = $row["descr"];
$type = $row["type"];
$dimension = $row["dimension"];
$image_dir = $row["bill_sti"];


sådan ser det ud..
Avatar billede nielle Nybegynder
12. oktober 2005 - 21:03 #5
Er der altid et billede pr. bruger? Kan der være mere end et billede pr. bruger?
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:05 #6
Der er flere billeder pr. bruger...
det var derfor jeg lavede order by userid - men det skal jo så være order by userfirst - eller noget i den stil..
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:06 #7
Men er der altid et billede som nielle spørger?
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:08 #8
Ja, der er altid minimum 1 billede pr. bruger. Det er når de uploader billedet, at de bliver registreret i databasen..
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:10 #9
Men vil du vise billeder for en bruger, f.eks. brugeren med id = 1.
Eller vil du vise samtlige billeder og hvem som så er ejer af det billede?
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:12 #10
Jeg skal sådan set bruge begge dele - men dette spørgsmål var nu mere ment til listen over alle billeder.
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:17 #11
Test dette:
$sql = "
SELECT
    u.userfirst,
    u.userlast,
    f.*
FROM
    user AS u
INNER JOIN
    filer AS f
ON
    u.id = f.userid
ORDER BY
    userid";
   
$resultat = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($resultat))
{
    // do some thing here
    //$size = $row["size"];
    $id = $row["userid"];
    $name = $row["name"];
    $descr = $row["descr"];
    $type = $row["type"];
    $dimension = $row["dimension"];
    $image_dir = $row["bill_sti"];

Du afslutter selv koden antager jeg, hvor du også printer noget til browseren!

Når du så vil have det på en specifik bruger, tilføjer du "bare" WHERE u.id = 1
Mellem:

ON
    u.id = f.userid
WHERE
    u.id = 1
ORDER BY
    userid";
Avatar billede nielle Nybegynder
12. oktober 2005 - 21:18 #12
Jeg ville lave noget i denne stil:

$sql1 = "SELECT * FROM user ORDER BY userlast ASC, userfirst ASC";
$query1 = mysql_query($sql1) or die(mysql_error());

while ($row1 = mysql_fetch_assoc($query1))
{
    $userid = $row1["id"];
    $username = $row1["username"];
    // ... og resten

    $sql2 = "SELECT * FROM filer WHERE userid=" . $userid;
    $query2 = mysql_query($sql2) or die(mysql_error());

    while ($row2 = mysql_fetch_assoc($query2))
    {
        $bill_sti = $row2["bill_sti"];
        $bill_name = $row2["name"];
    }
}
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:19 #13
Nu fik jeg den til at skrive fornavnet ud på billederne - men den finder ikke userlast:

aabn_forbindelse_og_vaelgdb();
$sql = "SELECT * FROM user AS u, filer AS f WHERE f.userid=u.id";
$resultat = mysql_query($sql) or die(mysql_error());
luk_forbindelse();

while($row = mysql_fetch_array($resultat)){
$firstname = $row["userfirst"];
$lastname = $row["userlast"];
$id = $row["userid"];
$name = $row["name"];
$descr = $row["descr"];
$type = $row["type"];
$dimension = $row["dimension"];
$image_dir = $row["bill_sti"];



print "Kunstner : $firstname <br />";
print "Efternavn : $userlast <br />";
print "Navn : $name <br />";
print "Description : $descr <br />";
print "Type : $type<br />";
print "Billedets mål : $dimension <br />";
print "image is <img src='../upload".$image_dir."/tn_".$name."'> <br /><br />";

}
Avatar billede nielle Nybegynder
12. oktober 2005 - 21:21 #14
print "Efternavn : $lastname <br />";
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:24 #15
Doh... har ikke styr på hvad jeg selv kalder mine variabler... haha.. tak for hjælpen!!! vil i dele point - kan bruge begge svar! :-D
Avatar billede nielle Nybegynder
12. oktober 2005 - 21:25 #16
Svar :^)
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:28 #17
Lige en hurtig.. hvordan får jeg billedet til at blive et link i min

print "image is <img src='../upload".$image_dir."/tn_".$name."'> <br /><br />";
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:29 #18
Svar!
Nielle: Er der en grund til du ikke bruger join?
Er det ikke pænest at bruge join og ikke select * from tabel1, tabel2 eller flere sql'er?
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:30 #19
print "image is <a href='../upload".$image_dir."/tn_".$name."'>$name</a> <br /><br />";
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:32 #20
Hov - nu viser den ikke selve billedet, men bare et "link" til billedet.. selve billedet skulle gerne være et link - undskyld at jeg bruger dette emne..
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:34 #21
Hvis du viser hele billedet, hvad skal det så linke til?
Så ville det vel være smartest at have et thumbnail, eller det har du måske allerede?
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:35 #22
Men sådan uden noget thumb, så er der link til samme pic som allerede vises.
print "image is <a href='../upload".$image_dir."/tn_".$name."'><img src='../upload".$image_dir."/tn_".$name."'></a> <br /><br />";

Og takker for point!
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:35 #23
Jeps.. src='../upload".$image_dir."/tn_".$name

tn_".$name

tn_ er "fornavnet til mine thumbnails" som laves automatisk..
så linket skal være til
src='../upload".$image_dir."/".$name
Avatar billede stieper Nybegynder
12. oktober 2005 - 21:37 #24
Det virker.. 1000 tak!
Avatar billede jakobdo Ekspert
13. oktober 2005 - 08:10 #25
Selv tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester