Avatar billede sayn Nybegynder
26. maj 2012 - 14:29 Der er 29 kommentarer og
1 løsning

Brugerliste med link til profil

Jeg er ved at lave en brugerliste, og når jeg trækker listen ud, og man klikker på en anden bruger på listen, så er det informationerne fra ens egen bruger den henter. Hvordan kan jeg ændre det, så det er hver enkelte bruger informationer man får, når man klikker på deres navn i brugerlisten?

Sådan ser min kode ud:

<?

$nr=0;

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {

$load = mysql_query("SELECT * FROM brugere WHERE user = '$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($load);

$nr++;

echo "$nr. <a href='profil.php?user=$s[user]'>$s[user]</a><br>";

}
?>

På forhånd  tak.
Avatar billede claes57 Ekspert
26. maj 2012 - 18:52 #1
$load = mysql_query("SELECT * FROM brugere WHERE user = '$_SESSION[user]'") or die(mysql_error());
der henter du den samme post hver gang ($_SESSION[user]) - det skal også være ham der $s[user]
Avatar billede sayn Nybegynder
26. maj 2012 - 19:30 #2
Tak for dit indlæg. Vil det sige, at det skal være sådan her:

<?

$nr=0;

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {

$load = mysql_query("SELECT * FROM brugere WHERE user = '$s[user] '") or die(mysql_error());
$show = mysql_fetch_array($load);

$nr++;

echo "$nr. <a href='profil.php?user=$s[user]'>$s[user]</a><br>";

}
?>

For det virker desværre ikke, men det er nok mig der misforstår noget.
Avatar billede detziaw Nybegynder
26. maj 2012 - 19:52 #3
I din første kode bruger du session til at udskrive bruger, og så er det klart den gør som du beskriver, da den så bare tager brugernavnet som er logget ind med session.

Når du udskriver en brugerliste, så skal du ikke bruge session, men blot helt almindelig sql-udskrift, som du gør det i #2.
Avatar billede detziaw Nybegynder
26. maj 2012 - 20:00 #4
Fik måske kommenteret for hurtigt. Når du siger det ikke virker, hvad er det så helt præcist? Kan desværre ikke lige teste dine koder pt.

Jeg ville have skrevet noget alá dette:

echo .$s['nr'].
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
Avatar billede claes57 Ekspert
26. maj 2012 - 20:20 #5
jeg kan ikke lige gennemskue det fornuftige i at lave et udtræk
$c = mysql_query("SELECT * FROM brugere...
og så derefter for hver bruger i dette lave en ny læsning af brugerens data - dem har du jo allerede.

<?php

$nr=0;
$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
$nr++;
echo "$nr. <a href='profil.php?user=$s[user]'>$s[user]</a><br>";
}
?>

jeg tror, det er rigeligt...
Avatar billede sayn Nybegynder
26. maj 2012 - 21:09 #6
Det har du vidst ret i #5.. Kan problemet ligge i min profil.php fil? For den linker stadig til den profil, man er logged ind på, når jeg trykker på de andre brugernavne.

Der trækker jeg oplysninger ud for at lave en profil:

Har forsøgt at ændre $_SESSION[user]til $s[user], men så viser den ingen oplysninger.. Det skal lige siges, at jeg ikke er så hård til PHP, så jeg forsøger mig frem.. :)

<?
$connect = mysql_query("SELECT * FROM brugere WHERE user='$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($connect);
?>

<table border="0" width="100%">

    <tr>
        <td width="163">Navn:</td>
        <td width="812"><? echo $show[navn]; ?></td>
    </tr>
    <tr>
        <td width="163">Alder:</td>
        <td width="812"><? echo $show[alder]; ?></td>
        <tr>
        <td width="163">K&oslash;n:</td>
        <td width="812"><? echo $show[kon]; ?></td>
    </tr>

    <tr>
        <td width="163">Bosted:</td>
        <td width="812"><? echo $show[bosted]; ?></td>
    </tr>

    <tr>
        <td width="163">Sidste log in:</td>
        <td width="812"><? echo $show[loginet]; ?></td>
    </tr>
        <tr>
        <td width="163">Oprettet:</td>
        <td width="812"><? echo $show[dato]; ?></td>
    </tr>
    <tr>
        <td width="163">Bruger nr: </td>
        <td width="812"><? echo $show[id]; ?></td>
    </tr>
        <tr>
        <td width="163">Aktiveret: </td>
        <td width="812"><? echo $show[aktiveret]; ?></td>
    </tr>
    </tr>
    <tr>
        <td width="163">Beskrivelse: </td>
        <td width="812"><? echo $show[message]; ?> </td>
    </tr>
    </tr>
   
</table>
Avatar billede sayn Nybegynder
26. maj 2012 - 21:24 #7
Så listen kommer fint frem, men lige meget hvilket brugernavn man trykker på, er det stadig den bruger der er logged in, oplysningerne tages fra og vises i profil.php

Men tusind tak fordi i forsøger at hjælpe :) Vi finder vel ud af det engang hehe :)
Avatar billede detziaw Nybegynder
26. maj 2012 - 21:27 #8
Men jeg forstår ikke hvorfor du har en "WHERE" i din query? Jeg går ud fra, at du skal udskrive alle brugere, så skal du ikke bruge en WHERE.
Avatar billede claes57 Ekspert
26. maj 2012 - 21:37 #9
det er noget skrammel-gammelt kode - men også her tager du ikke den parameter, som siden kaldes med, men bruger session
<?
$connect = mysql_query("SELECT * FROM brugere WHERE user='$_SESSION[user]'")

alle
<?
skal være
<?php

og så skal du have fat i den rigtige bruger i stedet for
user='$_SESSION[user]'"
(som du dog kan bruge hvis profil.php kaldes uden parameter).
Avatar billede sayn Nybegynder
26. maj 2012 - 21:39 #10
I profil.php bruger jeg WHERE for at trække oplysninger ud på den bruger der er logged ind, sådan at når man trykker på "Vis profil", at så kommer ens oplysninger frem.. Jeg kan måske ikke kombinere denne fil med brugerlisten, som jeg har forsøgt?

Skal jeg have 2 profil.php? En til når man skal hente sine egne oplysninger via. et link i menuen hvor der står "Vis profil" og så en anden fil, hvor jeg IKKE bruger WHERE, hvor den så henter oplysningerne til det brugernavn, som man trykkede ind på via. bruger listen?

Jeg har ikke selv lavet systemet, jeg forsøger blot at bygge videre på det.
Avatar billede sayn Nybegynder
26. maj 2012 - 21:41 #11
#9 jeg skrev i #6 at jeg har forsøgt med user='$_SESSION[user]'".. som dog ikke er udskiftet i koden jeg indsatte. Jeg kan bare ikke få det til at virke.. :)
Avatar billede detziaw Nybegynder
26. maj 2012 - 21:46 #12
Du kan godt lave det i samme fil, men du kan ikke bruge samme query. Når du sætter en WHERE ind som peger på en bestemt bruger (som du gør i dette tilfælde med session), så kan den kun udskrive det brugernavn, som er gemt i session.

Du skal lave en query som er magen til, bare med den forskel, at du sletter din WHERE.
Avatar billede sayn Nybegynder
26. maj 2012 - 22:00 #13
Så hvis jeg skriver dette i brugerlisten:
<?php

$nr=0;
$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
$nr++;
echo "$nr. <a href='profil.php?user=$s[user]'>$s[user]</a><br>";
}
?>

Og sådan i profil.php :

<?
$connect = mysql_query("SELECT * FROM brugere user='$s[user]") or die(mysql_error());
$show = mysql_fetch_array($connect);
?>

<table border="0" width="100%">

    <tr>
        <td width="163">Navn:</td>
        <td width="812"><? echo $show[navn]; ?></td>
    </tr>
    <tr>
        <td width="163">Alder:</td>
        <td width="812"><? echo $show[alder]; ?></td>
        <tr>
        <td width="163">K&oslash;n:</td>
        <td width="812"><? echo $show[kon]; ?></td>
    </tr>

    <tr>
        <td width="163">Bosted:</td>
        <td width="812"><? echo $show[bosted]; ?></td>
    </tr>

    <tr>
        <td width="163">Sidste log in:</td>
        <td width="812"><? echo $show[loginet]; ?></td>
    </tr>
        <tr>
        <td width="163">Oprettet:</td>
        <td width="812"><? echo $show[dato]; ?></td>
    </tr>
    <tr>
        <td width="163">Bruger nr: </td>
        <td width="812"><? echo $show[id]; ?></td>
    </tr>
        <tr>
        <td width="163">Aktiveret: </td>
        <td width="812"><? echo $show[aktiveret]; ?></td>
    </tr>
    </tr>
    <tr>
        <td width="163">Beskrivelse: </td>
        <td width="812"><? echo $show[message]; ?> </td>
    </tr>
    </tr>
   
</table>

Er det rigtigt forstået? Eller roder jeg bare rundt i det hele? I må meget gerne skrive den rigtige kodning, nogle gange er det lidt nemmere at forstå, ved at se løsningen helt præcist..
Avatar billede detziaw Nybegynder
26. maj 2012 - 22:13 #14
Til at starte med, så ret din query i profil.php til:

$connect = mysql_query("SELECT * FROM brugere WHERE user='$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($connect);

Der bruger du din WHERE, som vælger den bruger der er logget ind, og dermed får du kun informationer for den indloggede bruger til profilen.

Brugerlisten kan du rette til:

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo .$s['nr'].
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";

Hvor du så retter .$s['nr']. til hvad nr-kolonnen hedder i din database.
Avatar billede sayn Nybegynder
27. maj 2012 - 00:36 #15
#14

Har gjort som du skriver, men den siger fejl på linjen med echo .$s['nr'].

Min nr. kolonne hedder bare id, så jeg har ændret det til følgende:

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo .$s['id'].
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
Avatar billede detziaw Nybegynder
27. maj 2012 - 00:43 #16
Det skrev jeg også til sidst i #14 du skulle rette jo ;-)

Hvad er status så? Virker det?
Avatar billede sayn Nybegynder
27. maj 2012 - 00:46 #17
Status er at den siger fejl på linjen med echo .$s['id'].


Udtrykte mig vidst lidt forkert, for havde skam set at jeg skulle ændre det, men det virkede desværre ikke :)
Avatar billede detziaw Nybegynder
27. maj 2012 - 00:55 #18
Kan du ikke copy/paste fejlen den udskriver?
Udskriver den brugernavnet?

Prøv med:
echo $s[id];
Avatar billede sayn Nybegynder
27. maj 2012 - 01:05 #19
Den siger: Parse error:
syntax error, unexpected '.' in /customers/f/6/5/burnout.dk/httpd.www/login2/user_list.php on line 23

hvis jeg retter det til echo $s[id]; så siger den:
Parse error: syntax error, unexpected T_ELSE in /customers/f/6/5/burnout.dk/httpd.www/login2/user_list.php on line 33

og det er nede i bunden af filen hvor jeg sender en person til en side, hvis ikke personen er logged in, som jeg har på alle mine filer.

Dvs. først i mine filer har jeg:

<?php
session_start();
if(isset($_SESSION['user']) AND isset($_SESSION['pass'])) {

include("cfg.php");

$load = mysql_query("SELECT * FROM brugere WHERE user = '$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($load);
?>

og til sidst har jeg:

<?php
mysql_close();
} else {
    include("no_access.php"); // sender brugeren som ikke er logget ind videre til filen no_access.php
}
?>

og det er så på } else { den melder fejl åbenbart, men det virker da på mine andre filer.

Kan du følge med hehe? :)
Avatar billede detziaw Nybegynder
27. maj 2012 - 01:15 #20
Kan du ikke prøve at poste hele koden for hele siden? ;-) For hvis den siger fejl i den linje med else, så er der en fejl et andet sted tidl. i koden.
Avatar billede sayn Nybegynder
27. maj 2012 - 09:12 #21
Den er her:

<?php
session_start();
if(isset($_SESSION['user']) AND isset($_SESSION['pass'])) {

include("cfg.php");

$load = mysql_query("SELECT * FROM brugere WHERE user = '$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($load);
?>
<p></p>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>brugerliste</title>

</head>

<body>




<?php

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo $s[id];
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
?>


</body>

</html>
<?php
mysql_close();
} else {
    include("no_access.php");
}
?>
Avatar billede detziaw Nybegynder
27. maj 2012 - 11:11 #22
<?php

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo $s[id];
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
?>

Skal ændres til:

<?php

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo $s[id];
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
}
?>
Avatar billede sayn Nybegynder
27. maj 2012 - 13:37 #23
Okay.. Nu kommer listen så frem igen, men linket virker ikke når man klikker på navnene.. Skal vi ikke have indsat profil.php? i linket?

<?php

$c = mysql_query("SELECT * FROM brugere ORDER BY user ASC") or die(mysql_error());
while($s = mysql_fetch_array($c)) {
echo $s[id];
echo "<a href='".$s['user']."'>".$s['user']."</a><br>";
}
?>
Avatar billede detziaw Nybegynder
27. maj 2012 - 13:51 #24
Jo du skal lave linket om så det passer til din opbygning. Ved ikke lige hvordan du har lavet det? Kan du ikke copy/paste et direkte link til en tilfældig profil, så kan vi rette det til så det masser med din mysql.
Avatar billede sayn Nybegynder
27. maj 2012 - 13:59 #25
Jeg har kun min profil.php til at vise profiler.. sådan at man kan se sin egen ved at linke til profil.php. Og vi kan vel ikke bruge den til at vise andres profiler via. brugerlisten når man klikker på en andens navn, når vi bruger session i profil.php? Det er det eneste jeg har lavet, til at vise profiler.

<?php
session_start();
if(isset($_SESSION['user']) AND isset($_SESSION['pass'])) {

include("cfg.php");

$load = mysql_query("SELECT * FROM brugere WHERE user = '$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($load); // henter info fra brugeren som er logget ind
?>


<p></p>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>min profil</title>

</head>

<body>

<?php
$connect = mysql_query("SELECT * FROM brugere WHERE user='$_SESSION[user]'") or die(mysql_error());
$show = mysql_fetch_array($connect);

?>

<table border="0" width="100%">

    <tr>
        <td width="163">Navn:</td>
        <td width="812"><? echo $show[navn]; ?></td>
    </tr>
    <tr>
        <td width="163">Alder:</td>
        <td width="812"><? echo $show[alder]; ?></td>
        <tr>
        <td width="163">K&oslash;n:</td>
        <td width="812"><? echo $show[kon]; ?></td>
    </tr>

    <tr>
        <td width="163">Bosted:</td>
        <td width="812"><? echo $show[bosted]; ?></td>
    </tr>

    <tr>
        <td width="163">Sidste log in:</td>
        <td width="812"><? echo $show[loginet]; ?></td>
    </tr>
        <tr>
        <td width="163">Oprettet:</td>
        <td width="812"><? echo $show[dato]; ?></td>
    </tr>
    <tr>
        <td width="163">Bruger nr: </td>
        <td width="812"><? echo $show[id]; ?></td>
    </tr>
        <tr>
        <td width="163">Aktiveret: </td>
        <td width="812"><? echo $show[aktiveret]; ?></td>
    </tr>
    </tr>
    <tr>
        <td width="163">Beskrivelse: </td>
        <td width="812"><? echo $show[message]; ?> </td>
    </tr>
    </tr>
   
</table>

</body>

</html>

<?php
mysql_close();
} else {
    include("no_access.php");
}
?>
Avatar billede detziaw Nybegynder
27. maj 2012 - 14:09 #26
Jeg forstår ikke helt din opbygning af din side. Du vil lave en brugerliste som udskriver alle brugernavne, men som du beskriver det, så vil man, uanset hvilket brugernavn man klikker på, blive sendt til profil.php, som så viser informationer om den bruger der er logget ind. Så kan du jo i realiteten bare skrive <a href="profil.php">Brugernavn</a>, og så ville det give samme resultat.
Avatar billede sayn Nybegynder
27. maj 2012 - 14:12 #27
Ja som jeg skrev i første indlæg:

Jeg er ved at lave en brugerliste, og når jeg trækker listen ud, og man klikker på en anden bruger på listen, så er det informationerne fra ens egen bruger den henter. Hvordan kan jeg ændre det, så det er hver enkelte bruger informationer man får, når man klikker på deres navn i brugerlisten?

Problemet er, at jeg ikke ved hvordan jeg skal lave det anderledes, sådan at man ser en andens profil. Det er det jeg hele tiden har efterspurgt..

Jeg vil bare gerne have, at når man klikker på et brugernavn på brugerlisten, at så er det den bruger man kommer ind på.. Men hvordan? :)
Avatar billede detziaw Nybegynder
27. maj 2012 - 14:27 #28
Ahhh så er det mig der har misforstået spørgsmålet fra starten af, beklager.

Jamen i din profil.php har du en linje hvor der står følgende:

$connect = mysql_query("SELECT * FROM brugere WHERE user='$_SESSION[user]'") or

Når du skriver "WHERE user='$_SESSION[user]'" så tager den kun informationer fra den bruger der er logget ind, og det er altså der fejlen ligger. I stedet skal du linke til de forskellige brugere vha. php-links, som du kan læse om her: http://www.idigitalemotion.com/tutorials/php/link_system/link_system.html

Kan desværre ikke lige finde en god dansk artikel, så håber denne engelske giver bare lidt mening :-) Den viser den basale funktion du skal bruge, det skal så bygges videre på, for at passe til dine koder :-)
Avatar billede sayn Nybegynder
27. maj 2012 - 14:30 #29
Ah okay, jeg må til at læse og prøve mig lidt frem så :) Kan du ikke skrive et "svar" så jeg kan godkendte og give point, er det ikke sådan, at det fungerer? :)
Avatar billede detziaw Nybegynder
27. maj 2012 - 14:37 #30
Ja det er meget mere lærerigt hvis du selv læser og forstår - derfor kun et link ;-)

Jo det er sådan det fungerer, og jeg takker :-)
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