26. maj 2012 - 14:29Der 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);
$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]
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.
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>"; } ?>
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); ?>
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 :)
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).
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.
#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.. :)
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.
$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); ?>
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..
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.
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>";
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.
<?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>"; ?>
$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>"; } ?>
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>"; } ?>
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.
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 ?>
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.
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? :)
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 :-)
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? :)
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 :-)
Synes godt om
Ny brugerNybegynder
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.