Ingewikkelde database handling
Om mijzelf php en MySQL eigen te maken probeer ik een voorbeeld-internetshop in elkaar te knutselen. Ik heb nu een test-MySQL-database van 8 kolommen en 4 rijen. De eerste kolom betreft product IDs, de tweede de titel van een boek, de derde de schrijver, etc.
Mijn php-code print de rijen afzonderlijk op het scherm. Is het ook mogelijk om iedere 'cel' apart op het scherm te printen? Ik wil nl. een href-link maken op een van de cellen van de kolom die correspondeert met het ID (kolom 1) en dit ID in meestuurt naar een volgende pagina. Misschien is dit wel voor super-gevorderden, maar is over dit onderwerp (MySQL database-gebruik voor shops) misschien een goed boek geschreven?? Misschien kan een van jullie mij een klein zetje in de goede richting geven....
Hier is mijn code tot nu toe (opmaak van de website met menu's etc. in html, javascript laat ik achterwege)
<html>
<head></head>
<body>
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
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
<?php
// open connection to MySQL server
$dbcnx = @mysql_connect('localhost', 'root', '#');
if (!$dbcnx) { echo( '<P>Unable to connect to the database server at this time!</P>' ); exit();}
// select database
mysql_select_db('book') or die ('Unable to select database!');
// create and execute query
$query = 'SELECT * FROM data';
$result = mysql_query($query)
or die ('Error in query: ' . mysql_error());
// check if records were returned
if (mysql_num_rows($result) > 0)
{
// print HTML table
echo '<table width=100% cellpadding=10 cellspacing=0 border=1>';
echo
'<tr><td><b>ID</b></td><td><b>Title</b></td><td><b>Author</b></td><td><b>Publisher</b></td><td><b>Year</b></td><td><b>Pages</b></td><td><b>Price</b></td><td><b>Comment</b></td>';
while($row = mysql_fetch_row($result))
{
echo '<tr>';
echo '<td>' . $row[0] . '</td>';
echo '<td>' . $row[1] . '</td>';
echo '<td>' . $row[2] . '</td>';
echo '<td>' . $row[3] . '</td>';
echo '<td>' . $row[4] . '</td>';
echo '<td>' . $row[5] . '</td>';
echo '<td>' . $row[6] . '</td>';
echo '<td>' . $row[7] . '</td>';
echo '</tr>';
}
echo '</table>';
}
else
{
echo 'No rows found!';
}
// processing complete; free result set
mysql_free_result($result);
// close connection
if ($connection)
{
mysql_close($connection);
}
?>
// open connection to MySQL server
$dbcnx = @mysql_connect('localhost', 'root', '#');
if (!$dbcnx) { echo( '<P>Unable to connect to the database server at this time!</P>' ); exit();}
// select database
mysql_select_db('book') or die ('Unable to select database!');
// create and execute query
$query = 'SELECT * FROM data';
$result = mysql_query($query)
or die ('Error in query: ' . mysql_error());
// check if records were returned
if (mysql_num_rows($result) > 0)
{
// print HTML table
echo '<table width=100% cellpadding=10 cellspacing=0 border=1>';
echo
'<tr><td><b>ID</b></td><td><b>Title</b></td><td><b>Author</b></td><td><b>Publisher</b></td><td><b>Year</b></td><td><b>Pages</b></td><td><b>Price</b></td><td><b>Comment</b></td>';
while($row = mysql_fetch_row($result))
{
echo '<tr>';
echo '<td>' . $row[0] . '</td>';
echo '<td>' . $row[1] . '</td>';
echo '<td>' . $row[2] . '</td>';
echo '<td>' . $row[3] . '</td>';
echo '<td>' . $row[4] . '</td>';
echo '<td>' . $row[5] . '</td>';
echo '<td>' . $row[6] . '</td>';
echo '<td>' . $row[7] . '</td>';
echo '</tr>';
}
echo '</table>';
}
else
{
echo 'No rows found!';
}
// processing complete; free result set
mysql_free_result($result);
// close connection
if ($connection)
{
mysql_close($connection);
}
?>
</body>
</html>
Zie http://www.phphulp.nl/php/tutorials/3/150/
Tabel boeken:
id
titel
Tabel schrijvers:
id
naam
Koppeltabel:
id_boeken (foreign key met 'boeken')
id_schrijvers (foreign key met 'schrijvers')
En gebruik zo veel mogelijk de innoDB-engine van MySQL en dus niet de MyISAM-engine die default in PHPmyAdmin wordt gekozen. Anders kun je geen foreign keys gebruiken en hangen de tabellen als los zand aan elkaar.
Edit: Of gebruik PostgreSQL wanneer je met een 'echte' database wilt leren werken... (Kom maar op met het commentaar!)
Gewijzigd op 01/01/1970 01:00:00 door Frank -
En stel ik wil er twee uit 1 rij, dan doe ik gewoon:
Piece of cake, maar ik wil graag een query waarbij kolom 1 en kolom 2 naast elkaar komt, maar waarbij ik bij kolom 2 nog een href-je kan plaatsen. Eigenlijk een query in twee delen dus... Is dat mogelijk??