Stel dat ik een tabel "gebruikers" heb met daarin een aantal user gegevens (voornaam, achternaam, leeftijd en woonplaats, inlognaam en wachtwoord), hoe kan ik er voor zorgen dat een gebruiker zich kan inloggen maar ook op een bepaalde pagina (userinfo.php) hun eigen informatie wordt laten zien die zij ook kunnen aanpassen?

Ik heb van alles geprobeerd maar ik krijg alleen maar vreemde resultaten. :(

mvg
Dan doe je toch iets fout, laat eens wat zien wat je hebt geprobeerd.
Het is zeer moeilijk om hierop te reageren. Wat men in principe hier probeert, is concrete antwoorden geven op concrete problemen.

Daarvoor moeten we een beetje een inzicht hebben in het niveau van de vragensteller.

Ik heb geen idee of je iets van php weet, of je weet hoe je een mySQL kan openen, ...

Je spreekt niet eens over mySQL, zelfs niet over een database.

Als ik het een beetje kan inschatten, zou ik het volgende aanraden:
- lees een tutorial over SESSIONS
- lees een tutorial over inlogscripts
- lees een tutorial over gastenboeken

Die kan je allemaal op deze site vinden. Indien je daar iets van kent, zullen je vragen waarschijnlijk al opgelost zijn.
Emmanuel Delay schreef op 04.07.2008 19:19
Je spreekt niet eens over mySQL, zelfs niet over een database.
Ok, ben het met je eens dat de TS geen 'database' in zijn bericht heeft staan, maar uit zijn bericht kan je wel degelijk halen dat het om een DB gaat:
M schreef op 04.07.2008 18:03
Stel dat ik een tabel "gebruikers" heb met daarin een aantal user gegevens (voornaam, achternaam, leeftijd en woonplaats, inlognaam en wachtwoord)
En er is meer dan MySQL, dus dat dat niet in het bericht staat is niet eens raar.

Verder heb je gelijk.
M schreef op 04.07.2008 18:03
Stel dat ik een tabel "gebruikers" heb met daarin een aantal user gegevens (voornaam, achternaam, leeftijd en woonplaats, inlognaam en wachtwoord), hoe kan ik er voor zorgen dat een gebruiker zich kan inloggen maar ook op een bepaalde pagina (userinfo.php) hun eigen informatie wordt laten zien die zij ook kunnen aanpassen?

Ik heb van alles geprobeerd maar ik krijg alleen maar vreemde resultaten. :(

mvg


Je moet iets meer gegevens vertellen. Gebruik je sessies of cookies? En staat er in je sessie/cookie een id (onveilig) of een uniek gegenereerde hash die in de tabel gebruikers staat (veiliger)?
Ok, ik zal het proberen wat beter uit te leggen. :)
Ik heb een site waar je op kan registreren (gegevens worden opgeslagen in phpmyadmin tabel: gebruikers). Dit zijn dus gegevens zoals "inlognaam, wachtwoord, voornaam, achternaam, leeftijd, etc".

Een gebruiker kan zich op dit moment al inloggen dmv sessies. Dan heb ik ook nog een aparte pagina die "userinfo.php" heet. Als een gebruiker is ingelogd en naar de userinfo pagina gaat wil ik dat zijn gegevens daar worden uitgelezen.

Het probleem wat ik dus nu heb, is dat als ik met pietje inlog (voorbeeld) dan krijg ik ook de gegevens van pietje te zien. MAAR, als ik met een ander account inlog dan zie ik OOK de gegevens van pietje. Het maakt niet uit met welk account ik inlog. Ik heb waarschijnlijk iets fouts gedaan bij het uitlezen van gegevens. Ik heb al enorm veel geprobeerd maar ik kom er niet meer uit. Ik wil gewoon dat als een gebruiker ingelogd is EN naar die pagina toe gaat alleen zijn gegevens daar staan. En niet die van andere.
@M

Jou fout komt waarschijnlijk omdat je een query hebt zonder een (goede) WHERE daarin, er worden dus geen voorwaarden gesteld aan welke rij wordt geselecteerd.
vb:

SELECT
  *
FROM
  gebruikers

Als je in deze situatie geen while()/for() lus (in PHP) gebruikt om de resultaten te lezen geeft die inderdaad altijd het laatst gevonden resultaat terug... (in jou geval pietje) Dit is op te lossen door de query een WHERE mee te geven.

Op de userinfo.php moet je query er (ongeveer) zo uit zien wanneer je in je sessie het id van de gebruiker opslaat:


$sql = "SELECT
  inlognaam,
  voornaam,
  achternaam,
  leeftijd
FROM
  gebruikers
WHERE
   id = ".$_SESSION['userid'];


Sla je de inlognaam op (is minder snel, eigenlijk een mindere oplossing, maar goed) dan ziet dat er zo uit:

$sql = "SELECT
  inlognaam,
  voornaam,
  achternaam,
  leeftijd
FROM
  gebruikers
WHERE
   inlognaam = '".$_SESSION['userid']."' ";
ik heb hier een kant en klaar scriptje die je nog een beetje moet aanpassen
maar je het wel kan gebruiken;




<?php
// verbinding met database invoegen
include("inc_connect.php");

// controleren of pagina zichzelf heeft aangeroepen
// via hidden-field uit het formulier
if (isset($_POST["bevestiging"])){
// query samenstellen
$query="UPDATE werknemers SET
voornaam = '". $_POST["voornaam"] ."',
achternaam = '". $_POST["achternaam"] . "',
kamer = '". $_POST["kamer"] ."',
toestel = '". $_POST["toestel"] . "'
WHERE id='" .$_POST["id"] ."'";
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
echo("De volgende opdracht is uitgevoerd: <b>$query</b><br>\n");
if ($result){
echo ("Record nummer " .$_POST["id"] . " is bijgewerkt<br>\n");
echo ("<a href=\"oef_1104.php\">Terug naar het overzicht</a>");
}
}else{
// pagina heeft zichzelf nog niet aangeroepen,
// formulier tonen om gegevens te bewerken
$query="SELECT * FROM werknemers WHERE id='" . $_GET["id"] ."'";
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
?>
<html>
<head>
<title>Bewerken: wijzig de gegevens</title>
</head>
<body>
<h2>Wijzig deze gegevens:</h2>
<?php
while (list($id, $voornaam, $achternaam, $kamer, $toestel) = mysql_fetch_row($result)){
$vn=$voornaam;
$an=$achternaam;
$kmr=$kamer;
$tsl=$toestel;
}?>
<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">
Voornaam: <input type="text" name="voornaam" value="<?php echo($vn);?>" size="30"><br>
Achternaam: <input type="text" name="achternaam" value="<?php echo($an);?>" size="30"><br>
Kamernummer: <input type="text" name="kamer" value="<?php echo($kmr);?>" size="5"><br>
Toestelnummer: <input type="text" name="toestel" value="<?php echo($tsl);?>" size="5""><br>
<hr>
<input type="Submit" value="Bijwerken">
<input type="Button" value="Terug" onclick="javascript:history.back();">
</form>
<?php
// else-blok correct afsluiten
}
?>
</body>
</html>
Pas je script even aan en gebruik [ignore]
 en 
[/ignore] tags om je code heen. Gebruik je knop om dit te doen.

SanThe.

Reageren