Gegevens uit database halen en tonen

Overzicht

Sponsored by: Vacatures door Monsterboard

Johhny Westra

Johhny Westra

21/11/2012 14:34:59
Anchor link
Hallo allemaal,

ik probeer een pagina te maken waarin contactgegevens uit een database worden gehaald en op deze pagina worden getoond. Niet zo heel lastig leek mij? Nu kom ik toch tegen een foutje aan. Weet misschien één van jullie zo op het eerste gezicht wat er fout aan is?

<script>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$user
= "root";
$pass = "usbw";
$db = "login";
$host = "localhost";

mysql_connect($host, $user, $pass) or die ("kan geen verbinding maken met de database.");
mysql_select_db($db) or DIE ("Kan database niet vinden.");

$sql = "SELECT naam FROM contactgegevens WHERE id = '1'";
$result = mysql_query($sql);
?>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<table>
<tr>
<td>Naam:</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $result ?>
</td>
</tr>
<tr>
</script>
 
PHP hulp

PHP hulp

23/12/2024 06:49:32
 
- Ariën  -
Beheerder

- Ariën -

21/11/2012 14:39:02
Anchor link
Je kan geen result van een query echo'en.

Je vergeet namelijk nog te fetchen met mysql_fetch_assoc().
Lees ook eens: http://www.phptuts.nl/view/41/
Gewijzigd op 21/11/2012 14:39:35 door - Ariën -
 
Johhny Westra

Johhny Westra

21/11/2012 14:52:40
Anchor link
Dank je wel voor je reactie. Tot nu toe heb ik het zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$user
= "root";
$pass = "usbw";
$db = "login";
$host = "localhost";

mysql_connect($host, $user, $pass) or die ("kan geen verbinding maken met de database.");
mysql_select_db($db) or DIE ("Kan database niet vinden.");

$sql = "SELECT naam FROM contactgegevens WHERE id = '1'";
$result = mysql_query($sql);
$naam = mysql_fetch_assoc($result);

echo $naam;
?>


Helaas is de output op mijn beeldscherm dan "array". Enig idee voor een oplossing?
 
Tim S

Tim S

21/11/2012 14:55:11
Anchor link
$naam['naam']
 
Johhny Westra

Johhny Westra

21/11/2012 15:06:27
Anchor link
Gelukt, voor de mensen die hetzelfde probleem hadden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$user
= "root";
$pass = "usbw";
$db = "login";
$host = "localhost";

mysql_connect($host, $user, $pass) or die ("kan geen verbinding maken met de database.");
mysql_select_db($db) or DIE ("Kan database niet vinden.");

$sql = "SELECT * FROM contactgegevens WHERE id = '1'";
$result = mysql_query($sql);
$naam = mysql_fetch_assoc($result);

echo $naam['naam']
?>


Nu nog een vraag, ik heb nog meer gegevens in de database zitten zoals telefoonnummer, adres etc. Kan ik deze ook dmv. "SELECT * FROM contactgegevens WHERE id='1'" in een array kunnen zetten en dan in een tabel apart de uitkomsten van deze array zetten? Dus zeg maar zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
<html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
title></title>
    <
/head>
    <
body>
        <
table>
            <
tr>
                <
td>Naam:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Telefoonnummer:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Telefoonnummer (2):</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>E-mailadres:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Fax nummer:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Adres:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Postcode:</td>
                <
td>//gegeven database</td>
            </tr>
            <
tr>
                <
td>Woonplaats:</td>
                <
td>//gegeven database</td>
            </tr>
        <
/table>
    <
/body>
<
/html>
?>


(PHP tekens voor wat overzichtelijkheid)
Gewijzigd op 21/11/2012 15:08:08 door Johhny Westra
 
- Ariën  -
Beheerder

- Ariën -

21/11/2012 15:08:36
Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $naam['naam']." - ". $naam['naam'] ." - ". $naam['telefoonnummer'];
?>


$naam is op zich al een array, waarin alle velden staan per element van de gekozen gebruiker.
Gewijzigd op 21/11/2012 15:09:15 door - Ariën -
 
- SanThe -

- SanThe -

21/11/2012 15:09:46
Anchor link
- Aar - op 21/11/2012 14:39:02:


Heb je deze tip al opgevolgd?
 
- Raoul -

- Raoul -

21/11/2012 16:07:17
Anchor link
Ik zie ook nergens foutafhandeling van je query. Lees die PHPtuts tutorial maar eens.
 
Matthias Devriendt

Matthias Devriendt

18/03/2013 14:10:21
Anchor link
Ik ben met iets gelijk bezig.
Alles werkt. Maar nu wil ik alleen de gegevens laten zien van de user die zich inlogt.
Dat zal dan met een post variabele zijn maar dat lukt mij niet.

php code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//---------------------------------
// Een database openen in MySQL
//---------------------------------
// variabelen initialiseren

$host="localhost";
$username="root";
$password = "usbw";

$dbnaam="users";
$fout = "FOUT: openen database mislukt";
$query="SELECT * FROM users";
// ---- einde initialisatie

$db=mysql_connect($host, $username, $password) or die ($fout);
mysql_select_db($dbnaam, $db) or die($fout);
$result = mysql_query($query);
?>



<html>
<head>
<title>test</title>
</head>

<body>
<table border="1" width="70%" align="center">
<tr>
<td colspan="10"><h2 align="center">Werknemers</h2></td>
</tr>
<tr>
<th>id</th>
<th>email</th>
<th>wachtwoord</th>
<th>admin</th>
<th>naam</th>
<th>adres</th>
<th>plaats</th>
<th>postcode</th>
<th>land</th>
<th>nieuwsbrief</th>
</tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php while ($rij = mysql_fetch_array($result)){
        echo ("<tr><td>". $rij['id'] . " </td> " .
            "<td>" . $rij['email'] . " </td>" .
            "<td>" . $rij['wachtwoord'] . " </td> " .
            "<td>" . $rij['admin'] . " </td> " .
            "<td>" . $rij['naam'] . " </td> " .
            "<td>" . $rij['adres'] . " </td> " .
            "<td>" . $rij['plaats'] . " </td> " .
            "<td>" . $rij['postcode'] . " </td> " .
            "<td>" . $rij['land'] . " </td> " .
            "<td>" . $rij['nieuwsbrief'] . " </td></tr>\n ");
    }

?>


</table>
<hr>


</body>
</html>
 
- SanThe -

- SanThe -

18/03/2013 15:22:52
Anchor link
SELECT * FROM users

Wordt dan iets als
SELECT * FROM users WHERE id = id_van_de_ingelogde_user
 
Matthias Devriendt

Matthias Devriendt

18/03/2013 17:24:24
Anchor link
heb nu deze in gebruik

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$host
="localhost";
$username="root";
$password = "usbw";

$dbnaam="users";
$fout = "FOUT: openen database mislukt";
$query= "SELECT * from users WHERE id=" .$_GET["id"];

<
input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">
// ---- einde initialisatie

$db=mysql_connect($host, $username, $password) or die ($fout);
mysql_select_db($dbnaam, $db) or die($fout);
$result = mysql_query($query);
?>



En op de beveiligde pagina na het inloggen
iets zoals dit

<div id="content">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (!isset($_SESSION["username"])){
$tekst = "<h2>U bent nog niet aangemeld.</h2>
    U kunt <a href=\"login1.php\">hier inloggen</a> of<br>
    U kunt zich <a href=\"registreer.php\">hier registreren</a>"
;
echo($tekst);
}
else{?>


<h3>Welkom op deze beveiligde pagina</h3>

U bent aangemeld als :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($_SESSION["username"]);?>
<br>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$query
= "SELECT * FROM users WHERE email='$email';";
$resbew = mysql_query($query);
$email = $_SESSION["email"];
?>

"Uw gegevens aanpassen? Dit kan <a href=\"test.php?id=['id'].">hier</a>
</div>

Maar nu werkt de link niet. Doe ik iets fout? Ik werk nog niet zolang met php...
 
- SanThe -

- SanThe -

18/03/2013 17:34:32
Anchor link
Zeer vaag allemaal.

Dit is lek => Zie sql-injection.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * from users WHERE id=" .$_GET["id"];
?>


Hier kan de hele layout mee worden vernaggeld.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">


Ik zie nergens een session starten en ook niet dat je $_SESSION["username"] vult.

Hiermee kijk je of een willekeurig emailadres in je database zit.
Heeft niks met de ingelogde persoon te maken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM users WHERE email='$email';";
?>
Gewijzigd op 18/03/2013 17:35:14 door - SanThe -
 
Matthias Devriendt

Matthias Devriendt

18/03/2013 18:23:44
Anchor link
Alvast bedankt voor de info. Hier de volledige bestanden

Dit is volledige file(beveiligd.php). Dit krijgt men na het inloggen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php session_start(); ?>

<html>
<head>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<title>Beveiligde pagina</title>
</head>

<body>
<div id="container" style="width:960px;height:500px;">
<div id="menu" style="background-color:#888888;width:960px;text-align:center;">
<!-- <a href="index.html">Home</a>
&#8195 &#8195
<a href="verkooppunten/verkooppunten.html">Verkooppunten</a>
&#8195 &#8195
<a href="contact/contact.html">Contact</a>
&#8195 &#8195 -->
<a href="logout1.php">Uitloggen</a>
</div>

<div id="content">

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (!isset($_SESSION["username"])){
$tekst = "<h2>U bent nog niet aangemeld.</h2>
U kunt <a href=\"login1.php\">hier inloggen</a> of<br>
U kunt zich <a href=\"registreer.php\">hier registreren</a>"
;
echo($tekst);
}
else{?>

<h2>Welkom op deze beveiligde pagina</h2>
U bent aangemeld als :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($_SESSION["username"]);?>
<br>
Uw wachtwoord is :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($_SESSION["wachtwoord"]);?>
<br>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>

</div>
</div>
</body>
</html>



Dan is het de bedoeling dat ze hun gegevens kunnen opvragen/wijzigen
dat is dan deze file (opvragen)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$host
="localhost";
$username="root";
$password = "usbw";

$dbnaam="users";
$fout = "FOUT: openen database mislukt";
$query= "SELECT * from users WHERE id=" .$_GET["id"];

<
input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">
// ---- einde initialisatie

$db=mysql_connect($host, $username, $password) or die ($fout);
mysql_select_db($dbnaam, $db) or die($fout);
$result = mysql_query($query);
?>


<html>
<head>
<title>gegevens</title>
</head>

<body>
<!--kolomkoppen voor de tabel in plain HTML schrijven -->
<table border="0" width="70%" align="center">
<tr>
<td colspan="10"><h2 align="center">Werknemers</h2></td>
</tr>
<tr>
<th>id</th>
<th>email</th>
<th>wachtwoord</th>
<th>admin</th>
<th>naam</th>
<th>adres</th>
<th>plaats</th>
<th>postcode</th>
<th>land</th>
<th>nieuwsbrief</th>
</tr>
<!-- Vanaf hier de PHP while()-lus. Elke lusdoorgang schrijft
een tabelrij naar het scherm -->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php while ($rij = mysql_fetch_array($result)){
        echo ("<tr><td>". $rij['id'] . " </td> " .
            "<td>" . $rij['email'] . " </td>" .
            "<td>" . $rij['wachtwoord'] . " </td> " .
            "<td>" . $rij['admin'] . " </td> " .
            "<td>" . $rij['naam'] . " </td> " .
            "<td>" . $rij['adres'] . " </td> " .
            "<td>" . $rij['plaats'] . " </td> " .
            "<td>" . $rij['postcode'] . " </td> " .
            "<td>" . $rij['land'] . " </td> " .
            "<td>" . $rij['nieuwsbrief'] . " </td></tr>\n ");
    }

?>

<!-- Einde van de lus, tabel afsluiten -->
</table>
<hr>
<!-- Eventueel rest van de pagina -->

</body>
</html>
 
- SanThe -

- SanThe -

18/03/2013 18:41:43
Anchor link
Nooit een wachtwoord in een session zetten en al helemaal nooit in een cookie. Als je aan beveiliging doet dan sla je het wachtwoord gecrypt op in de database, dan is die dus niet meer leesbaar.

Waarom een (onnodige) variabele aanmaken? Kost alleen maar geheugen.
Om de html-quotes niet steeds te hoeven escapen gebruik je enkele quotes voor php.
Dus niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$tekst
= "<h2>U bent nog niet aangemeld.</h2>
U kunt <a href=\"login1.php\">hier inloggen</a> of<br>
U kunt zich <a href=\"registreer.php\">hier registreren</a>"
;
echo($tekst);
?>

Maar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<h2>U bent nog niet aangemeld.</h2>
U kunt <a href="login1.php">hier inloggen</a> of<br>
U kunt zich <a href="registreer.php">hier registreren</a>'
;
?>


Deze regel gaat daar waar die nu staat een fout geven.
Verder hoort die niet vóór je html code maar er in.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">


Met deze code kan je dus de gegevens van elke willekeurige gebruiker opvragen. Als je dit dus op je 'beveiligde' pagina hebt staan ben je zeer hackbaar.
- SanThe - op 18/03/2013 17:34:32:
Dit is lek => Zie sql-injection.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * from users WHERE id=" .$_GET["id"];
?>


Ga eerst wat doen aan beveiliging en logica.
Gewijzigd op 18/03/2013 18:42:20 door - SanThe -
 
Filip G

Filip G

21/03/2013 23:25:45
Anchor link
Ik heb net zelf ook een pagina gemaakt waar de persoon die ingelogd is zijn/haar eigen gegevens kan bekijken en aanpassen.
Sommige van de velden kunnen niet aangepast worden. Deze bevatten dan gegevens die in principe ook nooit hoeven veranderd te worden, bv geboortedatum, geboorteplaats, ...

http://www.plaatscode.be/142138/

Kijk gerust of je er iets van kan gebruiken.
Opmerkingen om dit nog te verbeteren zijn steeds welkom.

Verder zou ik alleen de gegevens voor verbinding met de db in een config bestandje steken en deze includen. Dan hoef je al deze gegevens niet op elke pagina te plaatsen. In mijn voorbeeld heb ik al die gegevens in db_connect.php gestoken
 
Lowie Dewit

Lowie Dewit

31/03/2020 10:10:07
Anchor link
Beste, mysql is verouderd, gebruik het veilige mysqli en lees ook wat omtrent beveiliging rond sql-injection zodat gegevens niet zomaar te grabbel vallen.
Gewijzigd op 31/03/2020 10:15:11 door Lowie Dewit
 
- Ariën  -
Beheerder

- Ariën -

31/03/2020 10:20:12
Anchor link
En dat na 7 jaar even melden?
Let voortaan even op de datum van het laatste bericht ;-)

Anyway, toen in 2013 was mysql nog gewoon.

Dit topic gaat dicht.
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.