Zoekmachine URL bij Simpel 'CMS' dmv TinyMCE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen

Jeroen

24/09/2007 17:31:00
Quote Anchor link
Hallo allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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?>

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
 
PHP hulp

PHP hulp

20/11/2024 13:30:10
 
Jeroen

Jeroen

01/10/2007 21:46:00
Quote Anchor link
Ik weet dat jullie het waarschijnlijk een n00b vraag vinden maar is er iemand die mij de juiste kant op wil wijzen?

Alvast bedankt voor een antwoord

Jeroen
 
Arjan Kapteijn

Arjan Kapteijn

01/10/2007 21:53:00
Quote Anchor link
Lekker wazig gescript heb je geschreven, eerst een while om alles in een array te stoppen, vervolgens een foreach om alles aan elkaar te plakken en dat echo je? Handig... Die while is toch al meer dan genoeg?

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 _.
 
Jeroen

Jeroen

03/10/2007 22:01:00
Quote Anchor link
Beste Arjan Kapteijn,

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
 
Nicoow Unknown

Nicoow Unknown

03/10/2007 22:12:00
Quote Anchor link
Het script is van de arjan die jij net aanspreekt,
Hij bedoelt gewoon het stukje wat jij zlef heb gescript (mag ik aannemen)
want Arjan script meestal wel goed
 
Arjan Kapteijn

Arjan Kapteijn

03/10/2007 22:42:00
Quote Anchor link
Kwestie van de QUERY die de content ophaalt aanpassen, in eerste instantie werk ik met een ID, nu moet dat dus met de TITEL. Hou er echter rekening mee, die ID is uniek... die TITEL hoeft dat niet te zijn.

Overigens, vergelijk mijn naam eens met die van de maker van dat script...
 
Jeroen

Jeroen

04/10/2007 11:28:00
Quote Anchor link
Ik zie het net ja. Ik heb het user gedeelte van kip gebruik.

Jouw reactie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
    }
}
    
?>


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
 
Arjan Kapteijn

Arjan Kapteijn

04/10/2007 11:41:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
}

?>
 
Jeroen

Jeroen

04/10/2007 20:49:00
Quote Anchor link
Dag Arjan,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Nogmaals bedankt voor de hulp!
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
 
PHP erik

PHP erik

04/10/2007 21:05:00
Quote Anchor link
Quote:
$query = "SELECT titel, content FROM content WHERE titel = ".mysql_real_escape_string($_GET['pagina'])
Zoek de beginnersfout. Beetje slordig Arjan ;)
 
Arjan Kapteijn

Arjan Kapteijn

05/10/2007 00:06:00
Quote Anchor link
Aah, het is een string, geen int. Moeten dus nog enkele quotes omheen ;).
 
Jeroen

Jeroen

05/10/2007 14:11:00
Quote Anchor link
Ik weet niet waarom maar ik heb ook een punt achter de tweede enkele quote gezet. Anders krijg je ook een error. Ik blijf echter "Sorry, deze pagina bestaat niet!" krijgen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
Arjan Kapteijn

Arjan Kapteijn

05/10/2007 14:26:00
Quote Anchor link
Quotes zitten op de verkeerde plek...
 
Jeroen

Jeroen

10/10/2007 14:26:00
Quote Anchor link
De quotes rondom de string:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php mysql_real_escape_string($_GET['actie']); php?>

gebruik je in het CMSscript toch ook zoals ik ze heb geprobeerd.
Geplakt uit jouw CMSscript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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?>


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
 
Arjan Kapteijn

Arjan Kapteijn

10/10/2007 15:15:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT blabla FROM tabel WHERE blabla = '".$blabla."'";
?>


^^ Zo hoort het , die enkele quotes gebruik je bij strings, niet bij integers (getallen)
 
PHP erik

PHP erik

10/10/2007 15:18:00
Quote Anchor link
En je mag je PHP niet afsluiten met: php?>
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?)
 
Jeroen

Jeroen

10/10/2007 15:32:00
Quote Anchor link
@PHPerik: Sorry voor de afsluiting. Gebruik dat is scripts niet.

@ Arjan Kapteijn:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in index-1.php on line 42

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>

Regel 42:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$resultaat = mysql_query($query);


Sorry maar blijft niet kloppen. Ik ben begonnen met een PHP-boekje maar het blijft nog wel abra cadabra voor mij
 
PHP erik

PHP erik

10/10/2007 15:35:00
Quote Anchor link
Je bent een puntje vergeten op regel 42, achter mysql_real_escape_string(...)
 
Jeroen

Jeroen

10/10/2007 15:44:00
Quote Anchor link
@ PHPerik: Bedankt!

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.
 
Arjan Kapteijn

Arjan Kapteijn

10/10/2007 15:44:00
Quote Anchor link
Grote kans dat je de _ nog niet omgezet hebt naar een spatie voordat je in de database gaat zoeken.
 
Jeroen

Jeroen

11/10/2007 22:12:00
Quote Anchor link
Het is gelukt! indien het sneller/gemakkelijker of veiliger kan hoor ik het graag. Wel graag met onderbouwing zodat ik het aan kan passen en een goed script heb.

@ PHPerik en Arjan Kapteijn Enorm bedankt!!!

Hier de complete code van het werkende gedeelte voor zoekenden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.