Krijg geen data uit db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Haddi Vries

Haddi Vries

05/04/2014 16:21:59
Quote Anchor link
Hallo,
Ik ben al bijna de hele dag bezig om iets wat simpels lijkt er uit te vissen.
Ik heb een htaccess file wat heel raar doet. Heb eerder een topic gemaakt maar dat gaat om iets anders.]
Ben totaal niet bekend met htaccess,
ik heb op mijn site paar categorien waar ik artikelen in heb staan. Echter moeten deze urls wel friendly zijn niemand wilt een link opnoemen dat lang is en met = tekens ectra.

Mijn categorie link is dan ook
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
site.om/category.php?nameID=Test
dit heb ik veranderd naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
site.com/c/Test
dit doet het in ieder geval.
Alleen heb ik artikelen in die categorieen staan en dan wil ik naar bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
site.com/c/Test/artikel
echter werkt dit niet want hij laat niks vanuit de database zien.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/category.php?nameid=Test&id=artikel
hier lukt het wel.

mijn htaccess code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule c/(.*)$ category.php?nameID=$1 [L]
    RewriteRule c/(.*)/(.*)$ category.php?nameID=$1&id=$2&%{QUERY_STRING} [L]
    
    RewriteRule ^([^\s%20]*)[\s%20]+(.*)$ $1-$2 [E=NOSPACE:1]
    
    RewriteCond %{ENV:NOSPACE} =1
    RewriteRule ^([^\s%20]+)$ $1 [R=301,L]
 
PHP hulp

PHP hulp

18/04/2024 10:23:22
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 00:16:34
Quote Anchor link
Zal ik je een tip geven?

Plaats in category.php dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_GET);
?>


Dan kun je precies volgen hoe en wat er binnen komt.

Kom je er nog niet uit, plaats dan je input en output.
Gewijzigd op 06/04/2014 00:16:54 door Kumkwat Trender
 
Willem vp

Willem vp

06/04/2014 12:55:31
Quote Anchor link
Ik zou in de .htaccess regel 4 en 5 omdraaien.

Neem altijd eerst de meest specifieke regels op. Nu vangt regel 4 ook de urls op die je eigenlijk door regel 5 had willen laten afhandelen.

Wat je ook nog zou kunnen doen is de wildcards alleen laten matchen op tekens die géén / zijn. Dit voorkomt dat je gekke dingen gaat doorgeven als iemand een url als /c/Test/artikel/bla/die/bla opvraagt.

Je krijgt dan iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    RewriteRule c/([^/]*)$ category.php?nameID=$1 [L]
    RewriteRule c/([^/]*)/([^/]*)$ category.php?nameID=$1&id=$2&%{QUERY_STRING} [L]

(in dit geval hoef je regel 4 en 5 niet per se om te draaien, maar het mag wel)
Gewijzigd op 06/04/2014 13:01:53 door Willem vp
 
Haddi Vries

Haddi Vries

06/04/2014 13:15:06
Quote Anchor link
Willem vp op 06/04/2014 12:55:31:
Ik zou in de .htaccess regel 4 en 5 omdraaien.

Neem altijd eerst de meest specifieke regels op. Nu vangt regel 4 ook de urls op die je eigenlijk door regel 5 had willen laten afhandelen.

Wat je ook nog zou kunnen doen is de wildcards alleen laten matchen op tekens die géén / zijn. Dit voorkomt dat je gekke dingen gaat doorgeven als iemand een url als /c/Test/artikel/bla/die/bla opvraagt.

Je krijgt dan iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    RewriteRule c/([^/]*)$ category.php?nameID=$1 [L]
    RewriteRule c/([^/]*)/([^/]*)$ category.php?nameID=$1&id=$2&%{QUERY_STRING} [L]

(in dit geval hoef je regel 4 en 5 niet per se om te draaien, maar het mag wel)

Hallo,
Ik heb nou
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule c/([a-zA-Z]+)/([0-9]+)$ category.php?nameID=$1&id=$2 [L]
    RewriteRule c/([a-zA-Z]+)$ category.php?nameID=$1 [L]

echter laat die bij category.php?nameID=$1&id=$2 alles zien inclusief de inhoud van nameID, dit moet niet ik wil alleen daar information hebben van id=$2
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 13:40:57
Quote Anchor link
Kun je je vraag opnieuw formuleren?
 
Haddi Vries

Haddi Vries

06/04/2014 13:54:31
Quote Anchor link
Kumkwat Trender op 06/04/2014 13:40:57:
Kun je je vraag opnieuw formuleren?


Ik weet wat het probleem is, ik doe even alsof ik geen htaccess gebruik.
Ik heb de volgende link:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/category.php?nameid=Test&id=3
Als ik naar deze url ga dan zie ik alleen de post,
en als ik naar deze link ga:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/category.php?nameID=Test&id=3
krijg ik alles van de category 'test' en de post.

Ik kan mensen wel doorsturen naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/category.php?nameid=Test&id=3
maar dan kun je achter nameid=van alles intypen en dan kom je als nog bij post id 3. deze 2 moeten gekoppeld worden, de test en de id 3.

Hier onder zie je mijn mysql query van id= page:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
                <?php
                // BEGIN OF SHOWING CONTENT PAGE
                if (isset($_GET['id'])){
                $naamID = mysql_real_escape_string($_GET['nameID']);
                $id     = mysql_real_escape_string($_GET['id']);
                $idnext = $id + 1;
                $gn     = (" SELECT * FROM category WHERE name='".$naamID."'") or die(mysql_error());
                $go     = (" SELECT * FROM post WHERE id='".$id."'") or die(mysql_error());
                $gnn    = mysql_query($gn) or die(mysql_error());
                $goo    = mysql_query($go) or die(mysql_error());
                $gnnn   = mysql_fetch_array($gnn);
                $gooo   = mysql_fetch_array($goo);
                ?>
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 14:06:10
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

if (isset($_GET['id'])){

$id = 0;
$nid = 0;

if(ctype_digit($_GET['id'])) $id = $_GET['id'];
if(ctype_digit($_GET['nameid'])) $nid = $_GET['nameid'];
if(ctype_digit($_GET['nameID'])) $nid = $_GET['nameID'];

if($nid!=0 && $id!=0) {
 //blabla
} else
 // false
 print 'false';
}
Gewijzigd op 06/04/2014 14:06:36 door Kumkwat Trender
 
Haddi Vries

Haddi Vries

06/04/2014 15:45:18
Quote Anchor link
Kumkwat Trender op 06/04/2014 14:06:10:
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

if (isset($_GET['id'])){

$id = 0;
$nid = 0;

if(ctype_digit($_GET['id'])) $id = $_GET['id'];
if(ctype_digit($_GET['nameid'])) $nid = $_GET['nameid'];
if(ctype_digit($_GET['nameID'])) $nid = $_GET['nameID'];

if($nid!=0 && $id!=0) {
 //blabla
} else
 // false
 print 'false';
}


Hallo moet ik bij het gedeelte 'blabla' daar mijn script invoegen van de post?
Gewijzigd op 06/04/2014 15:56:21 door Haddi Vries
 
Willem vp

Willem vp

06/04/2014 16:23:43
Quote Anchor link
Op de plaats van 'blabla' moet inderdaad de code komen die je wilt uitvoeren als id en nameID een geldige waarde hebben.

Overigens zou ik op regel 9 en 10 van het script van Kumkwat geen ctype_digit() gebruiken maar ctype_alpha(), omdat nameID geen numerieke waarde is.
 
Haddi Vries

Haddi Vries

06/04/2014 18:14:27
Quote Anchor link
Hier onder staat nu mij volgende code van get ID, maar ik krijg nu 'false' melding als ik bijvoorbeeld naar: site.com/category.php?nameid=Test&id=3 ga

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
        <?php
                // BEGIN OF SHOWING CONTENT PAGE
                if (isset($_GET['id'])){
                $id = 0;
                $nid = 0;

                if(ctype_alpha($_GET['id'])) $id = $_GET['id'];
                if(ctype_alpha($_GET['nameid'])) $nid = $_GET['nameid'];
                if(ctype_alpha($_GET['nameID'])) $nid = $_GET['nameID'];
                if($nid!=0 && $id!=0) {
                
                $naamID = mysql_real_escape_string($_GET['nameID']);
                $id     = mysql_real_escape_string($_GET['id']);
                $idnext = $id + 1;
                $gn     = (" SELECT * FROM category WHERE name='".$naamID."'") or die(mysql_error());
                $go     = (" SELECT * FROM post WHERE id='".$id."'") or die(mysql_error());
                $gnn    = mysql_query($gn) or die(mysql_error());
                $goo    = mysql_query($go) or die(mysql_error());
                $gnnn   = mysql_fetch_array($gnn);
                $gooo   = mysql_fetch_array($goo);
                ?>

 

                <?php
                echo '<p>';
                if(empty($gooo['youtube'])){
                }
else {
                ?>
              <h1> <?php echo htmlspecialchars($gooo["title"]); ?> </h1><br />
                <?php
                $fullurl1
= $gooo['youtube'];
                $videoid1=substr($fullurl1,-11);
                ?>

                <?php
                echo '<p><a href="/editpost.php?id='.$gooo['id'].'"><i>Edit this post</i></a><br />';
                echo '<iframe width="560" height="315" src="//www.youtube.com/embed/'.$videoid1.'" frameborder="0" allowfullscreen></iframe><br />';
                echo '</p>';
 
                }

 
                if(empty($gooo['pic'])){
                }
else {
                ?>
<h1> <?php echo htmlspecialchars($gooo["title"]); ?> </h1><br />
                <?php
                echo '<p><a href="/editpost.php?id='.$gooo['id'].'"><i>Edit this post</i></a><br />';
                echo '<img src="'.$gooo["pic"].'" style="max-height: auto; max-width: 600px;"/><br></p>';
                }

                echo '</p>';
                }
else {
                print 'false';
                }
                }

                ?>

Gewijzigd op 06/04/2014 18:25:58 door Haddi Vries
 
- Ariën  -
Beheerder

- Ariën -

06/04/2014 18:18:20
Quote Anchor link
Je mag je code ook inspringen met TAB's. Dat maakt alles beter leesbaarder.
 
Willem vp

Willem vp

06/04/2014 18:27:00
Quote Anchor link
Quote:
Hier onder staat nu mij volgende code van get ID, maar ik krijg nu 'false' melding als ik bijvoorbeeld naar: site.com/category.php?nameid=Test&id=3 ga

Dat komt, omdat je in regel 7 de ctype_digit() hebt vervangen door ctype_alpha(), en dat had nu juist níet gemoeten. ;-)
 
Haddi Vries

Haddi Vries

06/04/2014 18:59:25
Quote Anchor link
Ik krijg nog steeds de zelfde error, nameid moet nameID zijn, in de url maar daar krijg ik tevens alle artikelen onder mijn post ID 3
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 20:19:04
Quote Anchor link
kun je aub. aub. aub. boven aan je script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_GET);
?>

toevoegen en zeggen welk url je bezoekt EN wat hier uitkomt.

Je hebt het steeds over nameid en nameID, ik volg je daarom niet helemaal.
 
Haddi Vries

Haddi Vries

06/04/2014 20:30:32
Quote Anchor link
Kumkwat Trender op 06/04/2014 20:19:04:
kun je aub. aub. aub. boven aan je script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_GET);
?>

toevoegen en zeggen welk url je bezoekt EN wat hier uitkomt.

Je hebt het steeds over nameid en nameID, ik volg je daarom niet helemaal.

Array ( [nameID] => Test [id] => 1 )

mijn url:
http://memearch.eu/category.php?nameID=Test&id=1
Gewijzigd op 06/04/2014 20:31:20 door Haddi Vries
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 20:37:42
Quote Anchor link
Deze 2 heb je niet veranderd:
$naamID = mysql_real_escape_string($_GET['nameID']);
$id = mysql_real_escape_string($_GET['id']);

Verander het in:
$naamID = mysql_real_escape_string($nid);
$id = mysql_real_escape_string($id);
Gewijzigd op 06/04/2014 20:38:43 door Kumkwat Trender
 
Haddi Vries

Haddi Vries

06/04/2014 21:22:18
Quote Anchor link
Kumkwat Trender op 06/04/2014 20:37:42:
Deze 2 heb je niet veranderd:
$naamID = mysql_real_escape_string($_GET['nameID']);
$id = mysql_real_escape_string($_GET['id']);

Verander het in:
$naamID = mysql_real_escape_string($nid);
$id = mysql_real_escape_string($id);


Dank je wel, volgens mij heb ik iets heel doms gedaan ik heb aan het einde van de script even een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
else { SCRIPT VAN nameID }
geplaats, en hij doet het, ik schaam me heel diep dank jullie wel
Gewijzigd op 06/04/2014 21:25:07 door Haddi Vries
 
Kumkwat Trender

Kumkwat Trender

06/04/2014 21:40:20
Quote Anchor link
Haddi Vries op 06/04/2014 21:22:18:
Kumkwat Trender op 06/04/2014 20:37:42:
Deze 2 heb je niet veranderd:
$naamID = mysql_real_escape_string($_GET['nameID']);
$id = mysql_real_escape_string($_GET['id']);

Verander het in:
$naamID = mysql_real_escape_string($nid);
$id = mysql_real_escape_string($id);


Dank je wel, volgens mij heb ik iets heel doms gedaan ik heb aan het einde van de script even een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
else { SCRIPT VAN nameID }
geplaats, en hij doet het, ik schaam me heel diep dank jullie wel


Je hoeft je nergens voor te schamen. Iedereen maakt wel eens fouten of begint aan iets nieuws. Please dont blame yourself en zie het als een leermoment!
 



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.