Hoe krijg ik een link naar het juiste record
De broncode van mijn scherm is:
----------------------------- Broncode ------------------------------
Code (php)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
/**
* @author George van Baasbank
* @copyright 2011
*/
// Variabelen declareren
$nTeller = 0; // Teller om witregel te likaliseren
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
$db=mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
mysql_select_db(mijn database);
mysql_set_charset('utf8');
$sql = 'SELECT `naam`, `adres`, `woonplaats`, `telefoon`, `email`, `roepnaam`, `tussenvoeg` ';
$sql .= 'FROM `vrijwilligers` ';
$sql .= "WHERE vrijwilliger = 'Ja' ";
$sql .= 'ORDER BY `naam` ASC ';
$result=mysql_query($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="nl" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overzicht vrijwilligers Sjouk.nl</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="../css/sjouk.css" />
</head>
<body style="margin-left: 0px; margin-top: 0px">
<table style="background-image: url('../Html/Background.jpg')" align="center" width="1000 px" border="0">
<tr>
<th width="17 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Toon:</th>
<th width="233 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Naam:</th>
<th width="250 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Adres:</th>
<th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Woonplaats</th>
<th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Telefoon:</th>
<th width="200 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Email:</th>
</tr>
<?php while($row=mysql_fetch_array($result)){ ?>
<tr>
<td align="center "width="17"><img alt="Raadplegen" longdesc="Raadplegen" src="../afbeeldingen/editbutton.png" width="16" height="16" style="float: left" /></td>
<td width="233 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['roepnaam']." ".$row['tussenvoeg']." ".$row['naam']; ?></td>
<td width="250 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['adres']; ?></td>
<td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['woonplaats']; ?></td>
<td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['telefoon']; ?></td>
<td width="200 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['email']; ?></td>
<?php $nTeller++; ?>
<?php if ($nTeller == 5) {; ?>
<tr>
<td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row[' ']; ?></td>
</tr>
<tr>
<td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row[' ']; ?></td>
</tr>
<?php $nTeller = 0; ?>
<?php } ?>
<?php } ?>
</tr>
</table>
</body>
</html>
/**
* @author George van Baasbank
* @copyright 2011
*/
// Variabelen declareren
$nTeller = 0; // Teller om witregel te likaliseren
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
$db=mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
mysql_select_db(mijn database);
mysql_set_charset('utf8');
$sql = 'SELECT `naam`, `adres`, `woonplaats`, `telefoon`, `email`, `roepnaam`, `tussenvoeg` ';
$sql .= 'FROM `vrijwilligers` ';
$sql .= "WHERE vrijwilliger = 'Ja' ";
$sql .= 'ORDER BY `naam` ASC ';
$result=mysql_query($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="nl" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overzicht vrijwilligers Sjouk.nl</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="../css/sjouk.css" />
</head>
<body style="margin-left: 0px; margin-top: 0px">
<table style="background-image: url('../Html/Background.jpg')" align="center" width="1000 px" border="0">
<tr>
<th width="17 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Toon:</th>
<th width="233 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Naam:</th>
<th width="250 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Adres:</th>
<th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Woonplaats</th>
<th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Telefoon:</th>
<th width="200 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Email:</th>
</tr>
<?php while($row=mysql_fetch_array($result)){ ?>
<tr>
<td align="center "width="17"><img alt="Raadplegen" longdesc="Raadplegen" src="../afbeeldingen/editbutton.png" width="16" height="16" style="float: left" /></td>
<td width="233 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['roepnaam']." ".$row['tussenvoeg']." ".$row['naam']; ?></td>
<td width="250 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['adres']; ?></td>
<td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['woonplaats']; ?></td>
<td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['telefoon']; ?></td>
<td width="200 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['email']; ?></td>
<?php $nTeller++; ?>
<?php if ($nTeller == 5) {; ?>
<tr>
<td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row[' ']; ?></td>
</tr>
<tr>
<td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row[' ']; ?></td>
</tr>
<?php $nTeller = 0; ?>
<?php } ?>
<?php } ?>
</tr>
</table>
</body>
</html>
Is er iemand die mij een suggestie kan doen?
Gewijzigd op 30/05/2011 11:44:54 door George van Baasbank
Gewijzigd op 30/05/2011 10:35:05 door Arjan -
George, pas aub even de titel "uitdaging" aan in een zinvolle titel. De titel "uitdaging" geeft niet aan waar het topic over gaat.
Ik ben nog niet geheel thuis in de PHP-materie dus ik heb nog wat hulp nodig.
Ik wil in eerste instantie het probleem oplossen zonder de SQL-Injection. Die probeer ik later wel in te bouwen.
Ik kan een (hyper)link aanbrengen aan plaatje, maar hoe geef ik het id van het bewuste record mee? Ik heb tenslotte alleen maar een schermuitdraai tot mijn beschikking. Moet ik dan het resultaat van mijn msql_fetch_array omzetten naar een nieuwe array? Of zie jij een andere, betere, methode?
Gewijzigd op 30/05/2011 11:58:10 door George van Baasbank
SELECT id, naam, adres enzovoorts (die aanhalingstekens om de veldnamen weghalen)
Het woordje id moet hetzelfde zijn als de naam in je tabel dus dat moet je even controleren.
in je while loop kun je dan een link om je plaatje zetten
Code (php)
1
<a href="edit.php?id=<?php echo $row['id']; ?>"><img alt="Raadplegen" longdesc="Raadplegen" src="../afbeeldingen/editbutton.png" width="16" height="16" style="float: left" /></a>
Ik wil je wel meegeven om basis css te gaan leren, want de manier waarop jij nu stijlementen toevoegt (lettertype, posities etc.) is helemaal fout. Dat hoor je te doen met een extern stylesheet.
Gewijzigd op 30/05/2011 12:07:30 door Ozzie PHP
Ik maak gebruik van css maar ben nog niet zover dat ik deze stijl kan gebruiken in mijn PHP. Volgend leermoment dus
Dat heeft helemaal niks met PHP te maken. Je moet dat denk ik echt wel even meepakken want je bent nu enorm je code aan het vervuilen. Je zit nu in iedere regel van een tabel stijlelementen te plakken. Da's echt niet de bedoeling hoor. Je code wordt veel te zwaar en je behoort code en stijl gescheiden te houden. Dus verdiep je echt even in css. Is in jouw geval heel erg de moeite waard.
ja ik raad je ook aan in classes te werken. vooral als je gaat werken met php dan kom je behoorlijk in de knel.
Zoals jullie in mijn originele bronbestand kunnen zien had/heb ik in het html-gedeelte al reeds mijn bestaande css-bestand gelinkt. Dit bestand gebruik ik in mijn hele website. Ik kan/moet het dus ook hier gaan gebruiken. Bedankt voor de tip.
De hyperlink rondom het plaatje heb ik aangebracht en als in ik het genoemde bestand (dat ik al wel heb aangemaakt) aankom is het nu nog leeg. Het commando $_GET ken ik nog niet genoeg. Laat ik even omschrijven wat ik denk te moeten gaan doen:
In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'. Als ik de oplossing van Ozzie goed lees geef ik de waarde van de variabele 'id' mee met de hyperlink en is dus voor het volgende bestand te gebruiken.
Je maakt een query met een WHERE er in. Denk daarbij wel aan sql-injection.
Doe het liever in 1x goed dan telkens je code te moeten corrigeren. Kost je heel veel (extra) tijd.
Obelix en Idefix op 30/05/2011 20:56:29:
Niet met een while.
Je maakt een query met een WHERE er in. Denk daarbij wel aan sql-injection.
Doe het liever in 1x goed dan telkens je code te moeten corrigeren. Kost je heel veel (extra) tijd.
Je maakt een query met een WHERE er in. Denk daarbij wel aan sql-injection.
Doe het liever in 1x goed dan telkens je code te moeten corrigeren. Kost je heel veel (extra) tijd.
Hoezo geen while als je een where in je query hebt zitten? Als je meer dan 1 resultaat verwacht dan zal je toch echt een loop moeten gebruiken om de gegevens uit te lezen. Wanneer je op id selecteert en het veld id heeft een uniek nummer dan is een while inderdaad overbodig.
George van Baasbank op 30/05/2011 20:28:54:
In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'. Als ik de oplossing van Ozzie goed lees geef ik de waarde van de variabele 'id' mee met de hyperlink en is dus voor het volgende bestand te gebruiken.
Klopt. Je geeft de id van de gegevens mee die je wilt tonen, waarna je op de volgende pagina de waarde van $_GET['id'] gebruikt om de gegevens op te halen.
Dus:
pagina.php?id=23
Pagina.php:
Code (php)
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
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
<?php
if(isset($_GET['id']) AND ctype_digit($_GET['id'])) {
$sql = mysql_query("SELECT id, titel FROM tabel WHERE id = ".$_GET['id']." LIMIT 1");
if($sql) {
if(mysql_num_rows($sql) > 0) {
$f = mysql_fetch_assoc($sql);
print_r($f);
} else {
echo 'Geen resultaat gevonden!';
}
} else {
echo 'Er ging iets mis!';
}
}
?>
if(isset($_GET['id']) AND ctype_digit($_GET['id'])) {
$sql = mysql_query("SELECT id, titel FROM tabel WHERE id = ".$_GET['id']." LIMIT 1");
if($sql) {
if(mysql_num_rows($sql) > 0) {
$f = mysql_fetch_assoc($sql);
print_r($f);
} else {
echo 'Geen resultaat gevonden!';
}
} else {
echo 'Er ging iets mis!';
}
}
?>
Gewijzigd op 30/05/2011 21:11:52 door Arjan -
Arjan - op 30/05/2011 21:06:24:
Hoezo geen while als je een where in je query hebt zitten? Als je meer dan 1 resultaat verwacht dan zal je toch echt een loop moeten gebruiken om de gegevens uit te lezen. Wanneer je op id selecteert en het veld id heeft een uniek nummer dan is een while inderdaad overbodig.
Als je meer dan 1 resultaat verwacht, zul je idd een while lus moeten gebruiken. Gezien onderstaande twee citaten, verwacht ik echter dat TS op zoek is naar een resultaat van de link waarop is geklikt en dat voor elke link een uniek id beschikbaar is:
George van Baasbank op 30/05/2011 10:31:01:
Ik heb een tabel gevuld met gegevens die ik keurig netjes op mijn scherm krijg. Elke regel heb ik voorzien van een plaatje waarop de gebruiker moet gaan klikken om meer informatie over het getoonde record te krijgen. Ik heb hiervoor o.m. een veld met een uniek id beschikbaar.
George van Baasbank op 30/05/2011 20:28:54:
In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'.
Vandaar mijn opmerking om where te gebruiken.
De routine die jij mij ter hand hebt gedaan werkt goed. Nu rijst bij mij de vraag: Hoe krijg ik de waardes uit de assoc-array op mijn scherm (netjes). Ik kan natuurlijk een tabel maken maar met welke opdracht zet ik nu de inhoud van bijv. de roepnaam of het adres op het scherm. Zelf denk ik om de inhoud van de array in een variabele te zetten. Echter, ik weet (nog) niet hoe.
Wie geeft mij een suggestie?
Zie o.a. www.phptuts.nl
Bedankt voor de tip. Ik ben nu bezig met het doorlezen van het artikel over array's. Wat kan het leven toch eenvoudig zijn.