Zoekmachine URL bij Simpel 'CMS' dmv TinyMCE
Ik ben nieuw met PHP en ben bezig met een goed CMS-systeem van deze site.
Ik kom niet uit het script. Het gaat om Simpel 'CMS' dmv TinyMCE en ik wil hiermee Zoekmachine vriendelijke URL produceren dmv de titel in de URL op te nemen.
Ik kan het nu al maar dan moet ik wel het id meezenden en daarna de titel. Hier wil ik eigenlijk vanaf en alleen maar de titel gebruiken en hiermee dan ook de spaties scheiden door het koppelteken zoals Arjan (maker van het script) zelf ook doet in één van zijn posts.
Het gaat bij mij om de volgende 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
else
{
if (mysql_num_rows($res_menu) > 0)
{
$menu_items = array();
while ($rij_menu = mysql_fetch_assoc($res_menu))
{
$menu_items[] = $rij_menu;
}
$menu = '';
foreach ($menu_items as $item)
{
$menu .= '<a href="?id=' . $item['paginaid'] . '&' . $item['titel'] . '">' . $item['titel'] . '</a><br /><br />' . "\r\n";
}
$menu .= '';
}
else
{
$menu = '<em>Nog geen titels toegevoegd. </em>';
}
}
php?>
else
{
if (mysql_num_rows($res_menu) > 0)
{
$menu_items = array();
while ($rij_menu = mysql_fetch_assoc($res_menu))
{
$menu_items[] = $rij_menu;
}
$menu = '';
foreach ($menu_items as $item)
{
$menu .= '<a href="?id=' . $item['paginaid'] . '&' . $item['titel'] . '">' . $item['titel'] . '</a><br /><br />' . "\r\n";
}
$menu .= '';
}
else
{
$menu = '<em>Nog geen titels toegevoegd. </em>';
}
}
php?>
van dit script: http://www.phphulp.nl/php/scripts/1/885/.
Wie kan mij helpen de id's weg te halen en alleen de titel weer te geven in de adresbalk?
Alvast bedankt iedereen die antwoord.
Jeroen
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
Alvast bedankt voor een antwoord
Jeroen
Maargoed, in plaats van die $item['paginaid'] echo je de $item['titel'] als een href= link. Eventueel gooi je er een str_replace() overheen om de spatie te vervangen door een _.
Het gescript is niet van mij maar kopt rechtstreeks uit het script dat hier te downloaden is: http://www.phphulp.nl/php/scripts/1/885/
De wijziging van paginaid in titel werkt niet. De inhoud wordt dan niet weergegeven. Ik heb jouw aanpassing geprobeerd. Dit werkt uitstekend qua links! Ook de adresbalk (het adres met de streepjes) werkt prima. Maar het werkt ook weer niet met de content in de database. Of de links werken prima, of de contet werkt prima. Graag heb ik beide maar weet niet hoe. Mijn PHP kennis reikt nog niet zo ver.
Ik hoop dat je mij kunt helpen. Het bovenste stukje script heb ik dus niet gemaakt.
Iedereen bedankt voor een reactie!
Jeroen
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
Hij bedoelt gewoon het stukje wat jij zlef heb gescript (mag ik aannemen)
want Arjan script meestal wel goed
Overigens, vergelijk mijn naam eens met die van de maker van dat script...
Jouw reactie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$titel = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$titel = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
Het menu wordt hiermee goed weergegeven ook met -'s alleen de content niet. Ik krijg de content niet weergegeven i.c.m. het andere (wat jij zegt wazig gescript) script van kip.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
De links werken echt prima. Onderstaand zie je het huidige script. Het zal wel heel simpel zijn maar ik zie het niet. Ik heb paginanaam al veranderd in titel of andere varianten.
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
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
<?php
$username = 'username';
$password = 'password';
$host = 'localhost';
$database = 'database_name';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
$username = 'username';
$password = 'password';
$host = 'localhost';
$database = 'database_name';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
Nogmaals bedankt voor de hulp!
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
Quote:
Zoek de beginnersfout. Beetje slordig Arjan ;)$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina'])
Aah, het is een string, geen int. Moeten dus nog enkele quotes omheen ;).
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
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
<?php
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = ".'mysql_real_escape_string'.($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = ".'mysql_real_escape_string'.($_GET['pagina']);
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
Quotes zitten op de verkeerde plek...
gebruik je in het CMSscript toch ook zoals ik ze heb geprobeerd.
Geplakt uit jouw CMSscript:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(in_array($_GET['actie'],$acties))
{
$actie = mysql_real_escape_string($_GET['actie']);
switch($actie)
{
case 'toevoegen':
if(isset($_GET['volgordeid']) && !empty($_GET['volgordeid']))
{
if(is_numeric($_GET['volgordeid']))
{
$volgordeid = mysql_real_escape_string($_GET['volgordeid']);
$query = "INSERT INTO content (volgordeid, titel, content) VALUES (".$volgordeid.",'voorbeeld titel','voorbeeld content')";
$resultaat = mysql_query($query);
if($resultaat && mysql_affected_rows() == 1)
{
$paginaid = mysql_insert_id();
echo '<p>De pagina is succesvol toegevoegd! Hieronder kunt u hem aanpassen.</p>'.BR;
php?>
if(in_array($_GET['actie'],$acties))
{
$actie = mysql_real_escape_string($_GET['actie']);
switch($actie)
{
case 'toevoegen':
if(isset($_GET['volgordeid']) && !empty($_GET['volgordeid']))
{
if(is_numeric($_GET['volgordeid']))
{
$volgordeid = mysql_real_escape_string($_GET['volgordeid']);
$query = "INSERT INTO content (volgordeid, titel, content) VALUES (".$volgordeid.",'voorbeeld titel','voorbeeld content')";
$resultaat = mysql_query($query);
if($resultaat && mysql_affected_rows() == 1)
{
$paginaid = mysql_insert_id();
echo '<p>De pagina is succesvol toegevoegd! Hieronder kunt u hem aanpassen.</p>'.BR;
php?>
Ik kom er in mijn post van 05.10.2007 niet uit waar ik nou enkele quotes moet gebruiken. Moet het wel op die ene regel. Waar ik ze ook plaats ik krijg altijd een error of Sorry, deze pagina bestaat niet!.
Zou je a.u.b. kunnen helpen?
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
^^ Zo hoort het , die enkele quotes gebruik je bij strings, niet bij integers (getallen)
Dan krijg je een dikke error.
(of is het een niet-gedocumenteerde alternatieve syntax die ik in al die jaren nog niet 1 keer heb gezien?)
@ Arjan Kapteijn:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in index-1.php on line 42
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
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
<?php
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = '".mysql_real_escape_string($_GET['pagina'])"'";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?>
</td>
<td>
<?php
$query = "SELECT titel, content FROM content WHERE titel = '".mysql_real_escape_string($_GET['pagina'])"'";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?>
</td>
</tr>
</table>
Regel 42:
Sorry maar blijft niet kloppen. Ik ben begonnen met een PHP-boekje maar het blijft nog wel abra cadabra voor mij
Je bent een puntje vergeten op regel 42, achter mysql_real_escape_string(...)
Het functioneert nu alleen nog maar bij pagina's die maar één woord als titel hebben. Bij bijvoorbeeld:
index-1.php?pagina=dit_is_een_mooie_pagina
functioneert het niet en wordt "Sorry, deze pagina bestaat niet!" weergegeven.
Grote kans dat je de _ nog niet omgezet hebt naar een spatie voordat je in de database gaat zoeken.
@ PHPerik en Arjan Kapteijn Enorm bedankt!!!
Hier de complete code van het werkende gedeelte voor zoekenden:
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
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
<?php
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top">
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?> </td>
<td align="left" valign="top">
<?php
$pagina = $_GET['pagina'];
$pagina = str_replace("_", " ", $pagina);
$query = "SELECT titel, content FROM content WHERE titel = '".mysql_real_escape_string($pagina)."'";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?></td>
</tr>
</table>
$username = '';
$password = '';
$host = 'localhost';
$database = '';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}
else
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top">
<?php
$query = "SELECT titel FROM content ORDER BY volgordeid";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) >= 1)
{
while($rij = mysql_fetch_array($resultaat))
{
$menunaam = $rij['titel'];
$gestript = str_replace(' ', '_', $menunaam);
echo '<li><a href="?pagina='.$gestript.'">'.ucfirst($menunaam).'</a></li>';
}
}
?> </td>
<td align="left" valign="top">
<?php
$pagina = $_GET['pagina'];
$pagina = str_replace("_", " ", $pagina);
$query = "SELECT titel, content FROM content WHERE titel = '".mysql_real_escape_string($pagina)."'";
$resultaat = mysql_query($query);
if($resultaat && mysql_num_rows($resultaat) == 1)
{
$rij = mysql_fetch_array($resultaat);
$titel = $rij['titel'];
$content = $rij['content'];
echo '<h1>'.$titel.'</h1>';
echo $content;
}else{
echo '<p>Sorry, deze pagina bestaat niet!</p>';
}
?></td>
</tr>
</table>