XML genereren met PHP
ik kan niet anders dan heel de code plakken want ik weet niet of ik juist bezigben of totaal fout, het werkt alvast niet.
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
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
<?php
$action = $_GET['action'];
// als men op verzenden drukt moet men xml-file genereren
if($action = 'zoeken')
{
// zeggen dat het xml file is
header("Content-type: text/xml");
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<?php
include('config.php');
mysql_connect("$dbhost", "$dbuser", "$passwd") or die ("Het verbinden met de server is mislukt");
mysql_select_db("$dbname") or die ("Het verbinden met de database is mislukt");
$zkterm = $_POST['zoekterm'];
echo '<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
if(!empty($zkterm))
{
// als er op submit geklikt wordt
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$zoekterm = mysql_real_escape_string($zkterm);
$sql = "SELECT PostUser, PostTitle, PostMsg, UserName FROM ".$prefix."posts, ".$prefix."users
WHERE PostTitle LIKE '%$zoekterm%'";
$resultaat = mysql_query($sql) or die (mysql_error());
$aantal = mysql_num_rows($resultaat);
while ($line = mysql_fetch_array($resultaat))
{
$PostUserId = $line[0];
$PostTitle = $line[1];
$PostMsg = $line[2];
// naam van poster selecteren
$sql2 = "SELECT UserName FROM ".$prefix."users WHERE UserId = $PostUserId";
$resultaat2 = mysql_query($sql2) or die(mysql_error());
while ($line2 = mysql_fetch_array($resultaat2))
{
$UserName = $line2[0];
echo '<channel>
<item>
<username>'.$line2[0].'</username>
<title>'.$line[1].'</title>
<msg>'.$line[2].'</msg>
</item>
</channel>';
}// afsluiten while ($line2 = mysql_fetch_array($resultaat2))
} // afsluiten van while ($line = mysql_fetch_array($resultaat))
}// afsluiten van if($_SERVER['REQUEST_METHOD'] == "POST")
} // afsluiten if(!empty($zkterm))
echo '
</rss>';
}// afsluiten if($action = 'zoeken')<br />
// als men niet op verzenden drukt gewoon HTML formulier laten zien
else{
?>
<form id="zoek" action="?action=zoeken" method="post">
<h1> Zoekopdracht </h1>
</br>
Geef een zoekterm in
</br>
<table>
<tr>
<td width="10%">
<input type="text" name="zoekterm" />
</td>
<td>
<input type="submit" value="search" />
</td>
</tr>
</table>
</form>
<?
} // afsluiten van else
?>
$action = $_GET['action'];
// als men op verzenden drukt moet men xml-file genereren
if($action = 'zoeken')
{
// zeggen dat het xml file is
header("Content-type: text/xml");
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<?php
include('config.php');
mysql_connect("$dbhost", "$dbuser", "$passwd") or die ("Het verbinden met de server is mislukt");
mysql_select_db("$dbname") or die ("Het verbinden met de database is mislukt");
$zkterm = $_POST['zoekterm'];
echo '<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
if(!empty($zkterm))
{
// als er op submit geklikt wordt
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$zoekterm = mysql_real_escape_string($zkterm);
$sql = "SELECT PostUser, PostTitle, PostMsg, UserName FROM ".$prefix."posts, ".$prefix."users
WHERE PostTitle LIKE '%$zoekterm%'";
$resultaat = mysql_query($sql) or die (mysql_error());
$aantal = mysql_num_rows($resultaat);
while ($line = mysql_fetch_array($resultaat))
{
$PostUserId = $line[0];
$PostTitle = $line[1];
$PostMsg = $line[2];
// naam van poster selecteren
$sql2 = "SELECT UserName FROM ".$prefix."users WHERE UserId = $PostUserId";
$resultaat2 = mysql_query($sql2) or die(mysql_error());
while ($line2 = mysql_fetch_array($resultaat2))
{
$UserName = $line2[0];
echo '<channel>
<item>
<username>'.$line2[0].'</username>
<title>'.$line[1].'</title>
<msg>'.$line[2].'</msg>
</item>
</channel>';
}// afsluiten while ($line2 = mysql_fetch_array($resultaat2))
} // afsluiten van while ($line = mysql_fetch_array($resultaat))
}// afsluiten van if($_SERVER['REQUEST_METHOD'] == "POST")
} // afsluiten if(!empty($zkterm))
echo '
</rss>';
}// afsluiten if($action = 'zoeken')<br />
// als men niet op verzenden drukt gewoon HTML formulier laten zien
else{
?>
<form id="zoek" action="?action=zoeken" method="post">
<h1> Zoekopdracht </h1>
</br>
Geef een zoekterm in
</br>
<table>
<tr>
<td width="10%">
<input type="text" name="zoekterm" />
</td>
<td>
<input type="submit" value="search" />
</td>
</tr>
</table>
</form>
<?
} // afsluiten van else
?>
Hij geeft mijn formulier niet weer. Er komt enkel 1 regel XML en dat is het dan. Ik weet niet waarom want ik check in de URL naar de action variabele.
Iemand een idee ?
Die = moet een == zijn of zelfs een === wanneer je ook op het type wilt controleren.
$action = $_GET['action']; slaat nergens op, gebruik dan gewoon $_GET['action'] in je vergelijking. Vergeet niet te controleren of deze variabele wel bestaat.
ach domme fout, bedankt !!
PHPerik en Webmakerij, bedankt voor de tips. Maar voor deze opdracht gebruik ik men eigen script om die rede dat we het van school uit op deze manier moeten doen. Ik ga jullie links zeker eens bestuderen want ze lijken me erg nuttig. Nogmaals harterlijk bedankt.