php informatie op basis van de url
Aan deze nummers zit in mijn database een koppeling waar de overige informatie staat.
Voorbeeld:
Leverancier wijst mij nummer 1212 toe.
Ik heb ik mijn database dit nummer aan een product gekoppeld dus product A met code 1212
nu heb ik voor elke product een eigen pagina
vb: www.mijndomein.nl/1212.html
Alle scripts welke de data uit mijn database en de leverancier haalt zijn het zelfde alleen wil ik niet voor elke pagina een aparte php maken.
Bestaat er een manier om uit de url het nummer te halen en zo deze in het script dynamisch in te voeren zodat ik maar 1 script nodig heb om alle producten per pagina te laden.
Ik hoop dat ik het zo een beetje duidelijk verwoord heb.
www.mijndomein.nl/product.php?product=1212
Op je pagina product.php kun je dan via GET als volgt je productnummer tevoorschijn halen:
lees:
www.mijndomein.nl/1212
www.mijndomein.nl/1212.html
www.mijndomein.nl/1212.php
Dit is een directe eis van de klant...
Dan is optie 1 de meest logische en zul je met url rewriting moeten gaan werken.
www.mijndomein.nl/1234 verwijst naar www.mijndomein.nl/product/klant/nummer/1234.html (of wat dan ook in je URL)
Als het een openbare website wordt is het sowieso af te raden om nummers te gebruiken om producten aan te duiden. mijndomein.nl/1234 zegt niets over het product. mijndomein.nl/groene-appels zegt wel weer iets over wat de bezoeker kan verwachten.
Je moet gaan werken met RewriteEngine On in je httacces. Daarna moet je op een slimme manier de url uitlezen, en daarmee bepalen hoe je die gaat behandelen.
Denk hier aan als volgt:
ALS url[1] = nummer dan toon dit.
ALS url[1] <> nummer dan toon bepaalde pagina.
Voor ik verder ga, kun jij aan geven of mijn insteek klopt en of je echt met nummers moet werken, of dat je ook met namen kan werken?
Als ik het goed begrijp is dat je wil dat Als het een openbare website wordt is het sowieso af te raden om nummers te gebruiken om producten aan te duiden. mijndomein.nl/1234 zegt niets over het product. mijndomein.nl/groene-appels zegt wel weer iets over wat de bezoeker kan verwachten.
Je moet gaan werken met RewriteEngine On in je httacces. Daarna moet je op een slimme manier de url uitlezen, en daarmee bepalen hoe je die gaat behandelen.
Denk hier aan als volgt:
ALS url[1] = nummer dan toon dit.
ALS url[1] <> nummer dan toon bepaalde pagina.
Voor ik verder ga, kun jij aan geven of mijn insteek klopt en of je echt met nummers moet werken, of dat je ook met namen kan werken?
Ook als ik in de error logfile kijk dan zie ik niets staan...
Iemand een idee waar ik de fout gemaakt heb?
Hieronder het script
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
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
<?php
include("../ivr/include/header.inc.php");
// foutmeldingen weergeven
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$xtpl = new XTemplate(ROOT_DIR."profiel.php");
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
else{
// connecten naar database is mislukt
echo "Kan geen verbinding maken met database.";
exit;
}
if(isset($_GET['boxnr']) AND is_numeric($_GET['boxnr'])){
// ophalen status uit database a.d.h.v boxnr
$profielophalen = mysql_query("
SELECT
*
FROM
ad_comprofiler
WHERE
cb_boxnr = '".mysql_real_escape_string($_GET['boxnr'])."'
");
if(mysql_num_rows($profielophalen) == 1){
// resultaat in variabele zetten
$profiel = mysql_fetch_assoc($profielophalen);
// resultaat uit database voor profiel
foreach($profiel as $emp)
{
$xtpl->assign("EMP_ID", $emp['id']);
$xtpl->assign("EMP_NAME", $emp['cb_profiel']);
$xtpl->assign("EMP_BOX", $emp['cb_boxnr']);
$xtpl->assign("EMP_DESCRIPTION", nl2br($emp['cb_informatie']));
$xtpl->assign("EMP_IMAGE", $emp['avatar']);
$xtpl->assign("EMP_SPECIALTY", $emp['cb_discipline']);
}
}
}
include("../ivr/include/header.inc.php");
// foutmeldingen weergeven
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$xtpl = new XTemplate(ROOT_DIR."profiel.php");
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
else{
// connecten naar database is mislukt
echo "Kan geen verbinding maken met database.";
exit;
}
if(isset($_GET['boxnr']) AND is_numeric($_GET['boxnr'])){
// ophalen status uit database a.d.h.v boxnr
$profielophalen = mysql_query("
SELECT
*
FROM
ad_comprofiler
WHERE
cb_boxnr = '".mysql_real_escape_string($_GET['boxnr'])."'
");
if(mysql_num_rows($profielophalen) == 1){
// resultaat in variabele zetten
$profiel = mysql_fetch_assoc($profielophalen);
// resultaat uit database voor profiel
foreach($profiel as $emp)
{
$xtpl->assign("EMP_ID", $emp['id']);
$xtpl->assign("EMP_NAME", $emp['cb_profiel']);
$xtpl->assign("EMP_BOX", $emp['cb_boxnr']);
$xtpl->assign("EMP_DESCRIPTION", nl2br($emp['cb_informatie']));
$xtpl->assign("EMP_IMAGE", $emp['avatar']);
$xtpl->assign("EMP_SPECIALTY", $emp['cb_discipline']);
}
}
}
Anders moet je eens doen aan steb-by-stem debugging. Per stap in je code (bij statements, loops etc...) even een echo plaatsen. Dan kan je prima achterhalen waar het fout loopt.
Warning: Illegal string offset 'cb_profiel' in /var/www/vhosts/***.nl/j30.***.nl/ivr/consulent-profiel.php on line 69
deze table moet komen uit de db query van regel 27..
Iemand... idee?
Toevoeging op 02/12/2013 09:18:30:
- Aar - op 02/12/2013 00:55:06:
Waar wordt $xtpl aangemaakt?
Anders moet je eens doen aan steb-by-stem debugging. Per stap in je code (bij statements, loops etc...) even een echo plaatsen. Dan kan je prima achterhalen waar het fout loopt.
Anders moet je eens doen aan steb-by-stem debugging. Per stap in je code (bij statements, loops etc...) even een echo plaatsen. Dan kan je prima achterhalen waar het fout loopt.
deze zit in de include van regel 2 van het script.
gooi die eruit en
gebruik dan natuurlijk gewoon $profiel['id']
ipv $emp['id']
Ik heb ook debugging gedraaid en getracht step by step uit te voeren maar alles vligt leeg :(
hierbij de pagina waar het om gaat: http://j30.air-mediums.nl/ivr/consulent-profiel.php?boxnr=9999
En ook het script
Heeft iemand nog een idee want loop nu wel vast :S
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
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
<?php
include("../ivr/include/header.inc.php");
// foutmeldingen weergeven
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$xtpl = new XTemplate(ROOT_DIR."profiel.php");
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
else{
// connecten naar database is mislukt
echo "Kan geen verbinding maken met database.";
exit;
}
if(isset($_GET['boxnr']) AND is_numeric($_GET['boxnr'])){
// ophalen status uit database a.d.h.v boxnr
$profielophalen = mysql_query("
SELECT
*
FROM
ad_comprofiler
WHERE
cb_boxnr = '".mysql_real_escape_string($_GET['boxnr'])."'
");
if(mysql_num_rows($profielophalen) == 1){
// resultaat in variabele zetten
$profiel = mysql_fetch_assoc($profielophalen);
);
// pagina weergeven op het scherm
//foreach($profiel as $profiel)
{
$xtpl->assign("EMP_ID", $profiel['id']);
$xtpl->assign("EMP_NAME", $profiel['cb_profiel']);
$xtpl->assign("EMP_BOX", $profiel['cb_boxnr']);
$xtpl->assign("EMP_DESCRIPTION", nl2br($profiel['cb_informatie']));
$xtpl->assign("EMP_IMAGE", $profiel['avatar']);
$xtpl->assign("EMP_SPECIALTY", $profiel['cb_discipline']);
$xtpl->assign("EMP_STATUS", $profiel['cb_status']);
}
}
}
?>
include("../ivr/include/header.inc.php");
// foutmeldingen weergeven
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$xtpl = new XTemplate(ROOT_DIR."profiel.php");
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
else{
// connecten naar database is mislukt
echo "Kan geen verbinding maken met database.";
exit;
}
if(isset($_GET['boxnr']) AND is_numeric($_GET['boxnr'])){
// ophalen status uit database a.d.h.v boxnr
$profielophalen = mysql_query("
SELECT
*
FROM
ad_comprofiler
WHERE
cb_boxnr = '".mysql_real_escape_string($_GET['boxnr'])."'
");
if(mysql_num_rows($profielophalen) == 1){
// resultaat in variabele zetten
$profiel = mysql_fetch_assoc($profielophalen);
);
// pagina weergeven op het scherm
//foreach($profiel as $profiel)
{
$xtpl->assign("EMP_ID", $profiel['id']);
$xtpl->assign("EMP_NAME", $profiel['cb_profiel']);
$xtpl->assign("EMP_BOX", $profiel['cb_boxnr']);
$xtpl->assign("EMP_DESCRIPTION", nl2br($profiel['cb_informatie']));
$xtpl->assign("EMP_IMAGE", $profiel['avatar']);
$xtpl->assign("EMP_SPECIALTY", $profiel['cb_discipline']);
$xtpl->assign("EMP_STATUS", $profiel['cb_status']);
}
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
?>
// connect naar database
if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
// selecteer database
mysql_select_db(DB_NAME) or die(mysql_error());
}
?>
Zet is een else na je laatste accolade
else {
echo 'test';
}
en dan geen nummer invullen in je url enkel het domein. krijg je dan test?
Ik ben geen programeur, dit is een php deel welke ik nu echt zelf bouw. Hiervoor waren het alleen verbeteringen van bestaande scripts of samenvoegsels ervan.
ik snap niet wat je bedoeld met slechte php functies in de code... ik kan het ook anders doen maar dan is het probleem er nog wel steeds...
Als ik de echo test neerzet op de laatste dan krijg ik netjes test te staan...
dus waar je die dingen assigned moet je ergens het resultaat echoën
Gewijzigd op 02/12/2013 20:13:48 door Reshad F