Pagina terug met php en mysql
Nu wil ik een vacature cms je gaan maken waarbij ik met twee tabellen ben gaan werken. De eerste tabel heet vacatures en daar staat oa vac_ID in, nog een zooitje velden voor de rest van de vacature en een vakgeb_id veld.
Dit vakgeb_id veld komt overeen met het vakbeg_id veld in de tabel vakgebied waar naast dit vakgeb_id ook vakgeb_naam in staat.
In de eerste pagina (vacatures.php) staat oa het volgende:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//vacatures op vakgebied
//Verbinding met database
include("connect.inc.php");
//vakgebieden inlezen uit de database
$vakgeb_SQL="SELECT * FROM vakgebied ORDER BY vakgeb_id";
$vakgeb_result=mysql_query($vakgeb_SQL);
?>
<html>
<head>
</head>
<body>
<ul>
<?php
//Lijst met vakgebieden weergeven
while($vakgeb=mysql_fetch_array($vakgeb_result)){
echo "<li><a class=\"tekst\" href=vakgeb_list.php?vakgeb_id=" . $vakgeb['vakgeb_id'] . ">" . $vakgeb['vakgeb_naam'] . "</a></li>";
}
mysql_close();
?>
</ul>
</body>
</html>
//vacatures op vakgebied
//Verbinding met database
include("connect.inc.php");
//vakgebieden inlezen uit de database
$vakgeb_SQL="SELECT * FROM vakgebied ORDER BY vakgeb_id";
$vakgeb_result=mysql_query($vakgeb_SQL);
?>
<html>
<head>
</head>
<body>
<ul>
<?php
//Lijst met vakgebieden weergeven
while($vakgeb=mysql_fetch_array($vakgeb_result)){
echo "<li><a class=\"tekst\" href=vakgeb_list.php?vakgeb_id=" . $vakgeb['vakgeb_id'] . ">" . $vakgeb['vakgeb_naam'] . "</a></li>";
}
mysql_close();
?>
</ul>
</body>
</html>
Er verschijnt dus een lijst met vakgebieden en als je er een selecteerd wordt deze met het vac_ID doorgestuurd naar vakgeb_list.php.
In vakgeb_list.pgp krijg ik dan netjes een lijst met de vacatures van dat vakgebied.
Code als volgt:
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
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
<?php
//Verbinding met database maken
include("connect.inc.php");
//parameters inlezen
$vakgeb_id=$_GET['vakgeb_id'];
//Lijst met vacatures samenstellen
$vac_SQL="SELECT * FROM vacatures,vakgebied WHERE vacatures.vakgeb_id=vakgebied.vakgeb_id AND vacatures.vakgeb_id=$vakgeb_id ORDER BY vac_datetime DESC";
$vac_result=mysql_query($vac_SQL);
//Informatie over vakgebieden inlezen
$vakgeb_SQL="SELECT vakgeb_naam FROM vakgebied WHERE vakgeb_id=$vakgeb_id";
$vakgeb=mysql_fetch_array(mysql_query($vakgeb_SQL));
?>
<html>
<head>
</head>
<body>
<h1>Vacatures <?php echo $vakgeb['vakgeb_naam'] ?></h1>
<?php
//Hier worden de berichten weergegeven
while($vac=mysql_fetch_array($vac_result)){
//De datum opmaken
$unixtime = strtotime($vac['vac_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($vac['vac_fomschrijving'])>220){
$vac['vac_fomschrijving']=substr($vac['vac_fomschrijving'],0,180) . " ... <a href=vac_detail.php?vac_ID=" . $vac['vac_ID'] . ">meer</a>";
}
?>
<h3><?php echo date("d-m-Y",$unixtime) ?></h3>
<h2><?php echo $vac['vac_functie'] ?></h2>
<p class="p0"><?php echo $vac['vac_fomschrijving'] ?></p>
<?php
}
?>
<p><a class="tekst" href="vacatures.php">Terug naar Vakgebieden</a></p>
</body>
</html>
//Verbinding met database maken
include("connect.inc.php");
//parameters inlezen
$vakgeb_id=$_GET['vakgeb_id'];
//Lijst met vacatures samenstellen
$vac_SQL="SELECT * FROM vacatures,vakgebied WHERE vacatures.vakgeb_id=vakgebied.vakgeb_id AND vacatures.vakgeb_id=$vakgeb_id ORDER BY vac_datetime DESC";
$vac_result=mysql_query($vac_SQL);
//Informatie over vakgebieden inlezen
$vakgeb_SQL="SELECT vakgeb_naam FROM vakgebied WHERE vakgeb_id=$vakgeb_id";
$vakgeb=mysql_fetch_array(mysql_query($vakgeb_SQL));
?>
<html>
<head>
</head>
<body>
<h1>Vacatures <?php echo $vakgeb['vakgeb_naam'] ?></h1>
<?php
//Hier worden de berichten weergegeven
while($vac=mysql_fetch_array($vac_result)){
//De datum opmaken
$unixtime = strtotime($vac['vac_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($vac['vac_fomschrijving'])>220){
$vac['vac_fomschrijving']=substr($vac['vac_fomschrijving'],0,180) . " ... <a href=vac_detail.php?vac_ID=" . $vac['vac_ID'] . ">meer</a>";
}
?>
<h3><?php echo date("d-m-Y",$unixtime) ?></h3>
<h2><?php echo $vac['vac_functie'] ?></h2>
<p class="p0"><?php echo $vac['vac_fomschrijving'] ?></p>
<?php
}
?>
<p><a class="tekst" href="vacatures.php">Terug naar Vakgebieden</a></p>
</body>
</html>
Indien er op meer geklikt wordt je doorgestuurd met het vac_ID naar de vac_detail.php pagina.
Met deze code:
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
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
<?php
//Verbinding met database maken
include("connect.inc.php");
$vac_SQL="SELECT * FROM vacatures,vakgebied WHERE vacatures.vakgeb_id=vakgebied.vakgeb_id AND vac_ID=" . $vac_ID;
$vac_result=mysql_query($vac_SQL);
$vac=mysql_fetch_array($vac_result);
mysql_close();
?>
<html>
<head>
</head>
<body>
<?php
//Hier worden de berichten weergegeven
{
//De datum opmaken
$unixtime = strtotime($vac['vac_datetime']);
?>
<h1>Geselecteerde vacature <?php echo $vakgeb['vakgeb_naam'] ?></h1>
<h2><?php echo $vac['vac_functie'] ?></h2>
<h3>Locatie/standplaats:</h3>
<p class="p0"><?php echo $vac['vac_locatie'] ?></p>
<h3>Bedrijfsinformatie:</h3>
<p class="p0"><?php echo $vac['vac_bedrijfsinfo'] ?></p>
<h3>Functieomschrijving:</h3>
<p class="p0"><?php echo $vac['vac_fomschrijving'] ?></p>
<h3>Functie eisen:</h3>
<p class="p0"><?php echo $vac['vac_feisen'] ?></p>
<h3>Bijzonderheden:</h3>
<p class="p0"><?php echo $vac['vac_bijzonderheden'] ?></p>
<h3>Salarisindicatie:</h3>
<p class="p0"><?php echo $vac['vac_salaris'] ?></p>
<h3>Contractvorm:</h3>
<p class="p0"><?php echo $vac['vac_contract'] ?></p>
<?php
}
?>
<p><a class="tekst" href=vakgeb_list.php">Terug naar Vakgebieden</a></p>
</body>
</html>
//Verbinding met database maken
include("connect.inc.php");
$vac_SQL="SELECT * FROM vacatures,vakgebied WHERE vacatures.vakgeb_id=vakgebied.vakgeb_id AND vac_ID=" . $vac_ID;
$vac_result=mysql_query($vac_SQL);
$vac=mysql_fetch_array($vac_result);
mysql_close();
?>
<html>
<head>
</head>
<body>
<?php
//Hier worden de berichten weergegeven
{
//De datum opmaken
$unixtime = strtotime($vac['vac_datetime']);
?>
<h1>Geselecteerde vacature <?php echo $vakgeb['vakgeb_naam'] ?></h1>
<h2><?php echo $vac['vac_functie'] ?></h2>
<h3>Locatie/standplaats:</h3>
<p class="p0"><?php echo $vac['vac_locatie'] ?></p>
<h3>Bedrijfsinformatie:</h3>
<p class="p0"><?php echo $vac['vac_bedrijfsinfo'] ?></p>
<h3>Functieomschrijving:</h3>
<p class="p0"><?php echo $vac['vac_fomschrijving'] ?></p>
<h3>Functie eisen:</h3>
<p class="p0"><?php echo $vac['vac_feisen'] ?></p>
<h3>Bijzonderheden:</h3>
<p class="p0"><?php echo $vac['vac_bijzonderheden'] ?></p>
<h3>Salarisindicatie:</h3>
<p class="p0"><?php echo $vac['vac_salaris'] ?></p>
<h3>Contractvorm:</h3>
<p class="p0"><?php echo $vac['vac_contract'] ?></p>
<?php
}
?>
<p><a class="tekst" href=vakgeb_list.php">Terug naar Vakgebieden</a></p>
</body>
</html>
Hier krijg je dus alle gegevens te zien van de geselecteerde vacature.
En nu het probleem, aan het eind van deze laatste pagina wil ik terug kunnen keren naar de vakgeb_list.php pagina en dat lukt dan niet want dan krijg ik de volgende waarschuwing:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\home\.....\vakgeb_list.php on line 17
en:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\home\......\vakgeb_list.php on line 54
En dat slaat dan op deze:
$vakgeb_SQL="SELECT vakgeb_naam FROM vakgebied WHERE vakgeb_id=$vakgeb_id";
$vakgeb=mysql_fetch_array(mysql_query($vakgeb_SQL));
en op deze:
$vac_SQL="SELECT * FROM vacatures,vakgebied WHERE vacatures.vakgeb_id=vakgebied.vakgeb_id AND vacatures.vakgeb_id=$vakgeb_id ORDER BY vac_datetime DESC";
$vac_result=mysql_query($vac_SQL);
selectie queries.
Nou zit volgens mij het probleem dat ik van pagina 1 naar 2 het vakgeb_id meestuur en van 2 naar 3 het vac_id en dat als ik terug wil van 3 naar 2 ik dus weer het vakgeb_id moet hebben wat ik gebruikte van 1 naar 2.
Wie weet hoe ik dat moet doen?
Ik hoop dat ik duidelijk genoeg ben geweest, anders hoor ik het wel.
Alvast bedankt.
Gewijzigd op 01/01/1970 01:00:00 door Diederick van Eijsden
Dan is het leesbaar
Tips: Ga eens wat aan foutafhandeling doen. Jij neemt aan dat iedere query lukt en ik kan je garanderen dat iedere query vroeg of laat zal mislukken. Dat gaat voor jou dus een berg problemen opleveren.
Verder neem jij aan dat iedere variabele wel zal bestaan en de juiste inhoud heeft, maar ook hier krijg je de garantie dat ze niet altijd zullen bestaan en wanneer ze bestaan, er de grootst mogelijke onzin in zal staan. Kortom, nog vééél meer problemen om op te lossen.
Begin eens met de volgende regels in al jouw scripts:
Gebruik de functie isset() om te controleren of een variabele wel bestaat, zet toegestane waardes in een array, gebruik addslashes om SQL-injection te voorkomen, controleer of queries wel zijn gelukt, etc. etc.
Nu nog een pagina terug.
Gewijzigd op 01/01/1970 01:00:00 door Diederick van Eijsden