1 2 3 4 5 | if(newtopicmatches('[PHP/(My)SQL] voor dummies')){ echo "tvp geplaatst; } ?> |
Wat dacht je van een countertje inbouwenquote:Op dinsdag 15 januari 2008 08:35 schreef PiRANiA het volgende:
Weet iemand hoe ik dit moet oplossen:
[ code verwijderd ]
Nee joh, die wordt gebruikt om een nieuw bericht te posten, niet een replyquote:
1 2 3 4 5 6 7 | include_once('Human.class.php'); include_once('Fok!Bot.class.php'); $fokbot = new fokbot('WyriHaximus','jadachtjedatnouecht'); $topic_ids = $fokbot->get_topic_ids('[PHP/(My)SQL] voor dummies',16); rsort($topic_ids,SORT_NUMERIC); $fokbot->reply($topic_ids[0],6,'/me is lekker aan het coden :+'); |
Nu nog ff een automatische zoeker maken die 's nachts de laatste doodsverwensingen / scheldpartijen ophaalt en dan hoef je 's ochtends niet alle topics meer langsquote:
Nog niet eens zon slechtplan maar zat zelf aan TR's te denken en die dan in een crewonly plaats te gooien maar dat is nog maar een gedachte spinselquote:Op dinsdag 15 januari 2008 09:34 schreef Mordreth het volgende:
[..]
Nu nog ff een automatische zoeker maken die 's nachts de laatste doodsverwensingen / scheldpartijen ophaalt en dan hoef je 's ochtends niet alle topics meer langs.
Inderdaad... zeker de caching doet een hoop goedquote:Op maandag 14 januari 2008 23:47 schreef Farenji het volgende:
De overhead van smarty is behoorlijk laag hoor, templates worden gecompileerd en gecached, uiteindelijk is het gewoon vrij geoptimaliseerde php wat je uitvoert en dus echt niet langzamer dan een oplossing die je zelf inelkaar sleutelt. Wel veel krachtiger.
ik had een scriptje wat bij een weblog-update een post maakte in 2 topicsquote:Op dinsdag 15 januari 2008 10:16 schreef WyriHaximus het volgende:
[..]
Nog niet eens zon slechtplan maar zat zelf aan TR's te denken en die dan in een crewonly plaats te gooien maar dat is nog maar een gedachte spinsel.
Hmm niet handigquote:Op dinsdag 15 januari 2008 12:06 schreef qu63 het volgende:
[..]
ik had een scriptje wat bij een weblog-update een post maakte in 2 topics
Alleen ik heb er iets te veel aan geklooid, en nu issie stuk
Neuh, ik weet waar de fout zit, en ik update mn weblog toch niet meerquote:Op dinsdag 15 januari 2008 12:45 schreef WyriHaximus het volgende:
[..]
Hmm niet handig. Misschien terug naar een oudere versie die nog wel werkte?
Ah ik weer wel, al hoewel het meeste wat ik de laatste tijd tegen lijk te komen vooral money make blogs zijnquote:Op dinsdag 15 januari 2008 12:53 schreef qu63 het volgende:
[..]
Neuh, ik weet waar de fout zit, en ik update mn weblog toch niet meer
Waarschijnlijk moet je op je router nog poort 80 forwarden naar dat IP-adres?quote:Op dinsdag 15 januari 2008 13:34 schreef Flaccid het volgende:
thp
Hoe kan ik zorgen dat die wampserver van outside ook te bezoeken is? want poort 80 is toch standaard poort? ik zit op een router en heb het adres 192.168.1.119. maar als ik IP:119/www doe krijg ik page not found
wat doe ik verkeerd?
al gedaan, het gaat nu om het htacces gebeure.quote:Op dinsdag 15 januari 2008 20:30 schreef Xcalibur het volgende:
[..]
Waarschijnlijk moet je op je router nog poort 80 forwarden naar dat IP-adres?
internal server error kan ook zijn dat je pc te druk is, gebeurt mij zelf ook nog wel eens namelijkquote:Op dinsdag 15 januari 2008 17:40 schreef Flaccid het volgende:
Het lukt mij niet om een .htaccess goed te configureren voor dat wamp. ik krijg een internal server error of hij wil niet inloggen (als ik goede invoer)
zal wel meevallen denk ik.quote:Op dinsdag 15 januari 2008 20:35 schreef qu63 het volgende:
[..]
internal server error kan ook zijn dat je pc te druk is, gebeurt mij zelf ook nog wel eens namelijk
Wat ik hier eigenlijk mee wil is de code die in de te includen file staat in de variabele krijgen. Zodat ik deze later kan printen. Ik wil geen gebruik maken van ob_start..quote:Example#1 include() in PHP 3 en PHP 4
Naam aan dat het volgende bestand bestaat (genoemd test.inc) en dat deze zich in dezelfde directory bevindt als het hoofdscript:
1
2
3
4
5
6
7<?php
echo "Voor de return <br>\n";
if (1) {
return 27;
}
echo "Na de return <br>\n";
?>
Naam aan dat het hoofdscript, (main.html) het volgende bevat:
1
2
3
4<?php
$retval = include ('test.inc');
echo "File returned: '$retval'<br>\n";
?>
When main.html is called in PHP 3, it will generate a parse error on line 2; you can't take the value of an include() in PHP 3. In PHP 4, however, the result will be:
Before the return
File returned: '27'
Now, assume that main.html has been altered to contain the following:
1
2
3
4<?php
include ('test.inc');
echo "Back in main.html<br>\n";
?>
In PHP 4, the output will be:
Before the return
Back in main.html
However, PHP 3 will give the following output:
Before the return
27Back in main.html
Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5
The above parse error is a result of the fact that the return statement is enclosed in a non-function block within test.inc. When the return is moved outside of the block, the output is:
Before the return
27Back in main.html
The spurious '27' is due to the fact that PHP 3 does not support returning values from files like that.
Hoe wil je eigenlijk in een .html php zetten?quote:Op woensdag 16 januari 2008 12:44 schreef MuRKie het volgende:
Hoi iedereen,
ik ben nieuw in deze topic reeks. Zag net pas dit topic langskomen.
Laat ik er maar meteen gebruik van maken..
Ik ben beetje aan het rommelen met het maken van een cms systeempje..
Nu vroeg ik me af of je een bestand kan includen in een variabele.
Ik had zoiets gezien op www.php.net/include maar ik krijg het niet werkend.. Ik heb het idee dat ik dat voorbeeld niet begrijp en dat het voor andere doeleinden is dan waarvoor ik het wil gebruiken.
Hier dat voorbeeld:
[..]
Wat ik hier eigenlijk mee wil is de code die in de te includen file staat in de variabele krijgen. Zodat ik deze later kan printen. Ik wil geen gebruik maken van ob_start..
Maar volgens mij kan je niet includen in een variabele of wel?
Iemand die me hiermee kan helpen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function get_include($file) { foreach($_POST AS $key => $value) { ${$key} = $value; } foreach($_GET AS $key => $value) { ${$key} = $value; } ob_start(); include $file; $buffer = ob_get_contents(); ob_end_clean(); return $buffer; } ?> |
Wie heeft het over een .html?quote:Op woensdag 16 januari 2008 12:47 schreef Flaccid het volgende:
[..]
Hoe wil je eigenlijk in een .html php zetten?
Ik had van een vriend van me, die meer ervaring heeft met php dan ik, vernomen dat ob_start geen nette en verouderde methode was ofzo? Vandaar dat ik dat niet wil gebruiken, maar als jij het tegendeel kan bewijzen dan hoor ik het graag. Ik sta open voor nieuwe informatiequote:Op woensdag 16 januari 2008 12:48 schreef unox_worst het volgende:
[ code verwijderd ]
Werkt voor mij prima
Oeps, je wil geen ob_start gebruiken, dan zou ik het ook niet weten.
Is dat een nette methode? Zie mijn post hierboven over ob_start..quote:Op woensdag 16 januari 2008 12:46 schreef Geqxon het volgende:
http://nl.php.net/file_get_contents
[..]
1 2 3 | $varComponentResult = include('map/file.php'); ?> |
Ik ken zo geen andere manier, maar ik ben dan ook geen echte expertquote:Op woensdag 16 januari 2008 12:55 schreef MuRKie het volgende:
[..]
Ik had van een vriend van me, die meer ervaring heeft met php dan ik, vernomen dat ob_start geen nette en verouderde methode was ofzo? Vandaar dat ik dat niet wil gebruiken, maar als jij het tegendeel kan bewijzen dan hoor ik het graag. Ik sta open voor nieuwe informatie
Dat bedoel ik.. Maar file_get_contents is wel een schone manier hiervoor?quote:Op woensdag 16 januari 2008 13:16 schreef Geqxon het volgende:
"ob_start" houd alle output richting de browser tegen, vangt het tijdelijk op in een buffer, en laat het daarna pas zien. Als je dat voor dit soort doeleinden gebruikt kan het ietwat vies zijn.
file_get_contents is niets anders dan het bestand opvragen, en de letterlijke tekst die erin staat returnen. Net zoals jij het bestand in notepad zou openen.quote:Op woensdag 16 januari 2008 13:19 schreef MuRKie het volgende:
[..]
Dat bedoel ik.. Maar file_get_contents is wel een schone manier hiervoor?
En wordt de inhoud van de file dan eerst geevalueerd en dan in een variabele gestopt?
Het te includen script maakt namelijk wel gebruik van functies die in de file staan die het script gaat includen..
Anders moet ik namelijk wel mijn huidige methode blijven gebruiken om dit werkend te houden..
Ik laad nu het script in via require('map/script.php'); en in script.php return ik een variabele welke ik in het script waarin ik script.php include weer in een variabele plak.. om het even gemakkelijk te maken![]()
Ja, ik denk dat het probleem zit in het feit dat je de string niet afsluit met dubbele quotes, ik zou het volgende doen:quote:Op dinsdag 15 januari 2008 08:35 schreef PiRANiA het volgende:
Weet iemand hoe ik dit moet oplossen:
1
2
3
4
5<?php
if(newtopicmatches('[PHP/(My)SQL] voor dummies')){
echo "tvp geplaatst;
}
?>
:P
1 2 3 4 5 | if(newtopicmatches('[PHP/(My)SQL] voor dummies')){ echo "tvp geplaatst"; } ?> |
Ja maar include zorgt ervoor dat de included file onderdeel wordt van het script waarin je het include..quote:Op woensdag 16 januari 2008 13:45 schreef Geqxon het volgende:
[..]
file_get_contents is niets anders dan het bestand opvragen, en de letterlijke tekst die erin staat returnen. Net zoals jij het bestand in notepad zou openen.
Tip:quote:Op woensdag 16 januari 2008 13:57 schreef MuRKie het volgende:
[..]
Ja maar include zorgt ervoor dat de included file onderdeel wordt van het script waarin je het include..
Maar als ik het in eenvariabele stop via file_get_contents dan is dat niet het geval of wel?
1 2 3 4 5 6 | // #to_include.php function getWhatINeed(){ return "Foo"; } ?> |
1 2 3 4 5 | // #main.php include('to_include.php'); $bar = getWhatINeed(); ?> |
Nee standaard niet, file_get_contents returned de inhoud van het bestand wat je ophaald. echterquote:Op woensdag 16 januari 2008 13:57 schreef MuRKie het volgende:
[..]
Ja maar include zorgt ervoor dat de included file onderdeel wordt van het script waarin je het include..
Maar als ik het in eenvariabele stop via file_get_contents dan is dat niet het geval of wel?
1 2 3 | eval(file_get_contents($file)); ?> |
1 2 3 | include($file); ?> |
Ja zo doe ik het nu dus.quote:Op woensdag 16 januari 2008 14:05 schreef Geqxon het volgende:
[..]
Tip:
[ code verwijderd ]
[ code verwijderd ]
Maar dan zit het dus nog niet in een variabele?quote:Op woensdag 16 januari 2008 14:10 schreef WyriHaximus het volgende:
[..]
Nee standaard niet, file_get_contents returned de inhoud van het bestand wat je ophaald. echter
[ code verwijderd ]
is het zelfde als
[ code verwijderd ]
1 2 3 | $varComponentResult = eval(file_get_contents($file)); ?> |
Ik heb het nu op de manier gedaan zoals Geqxon heeft beschreven.quote:Op woensdag 16 januari 2008 15:02 schreef Thomass het volgende:
Ik kan me niet voorstellen dat eval(file_get_contents()) good practice is. Ik zou nog eens goed naar je opzet kijken want op die manier dingen doen kan éécht niet goed zijn
quote:Op woensdag 16 januari 2008 15:33 schreef Geqxon het volgende:
Weet iemand trouwens hoe ik het slim aan kan pakken, dat als ik volledig met MultiView danwel Mod_Rewrite werk, hoe ik dan mijn forms met GET kan posten?
Ik heb nu een drop-down list met diverse automerken, en daarnaast eentje met diverse kleuren. Ik wil dat hij bij een submit naar "/cars/chevrolet/red/" gaat, maar is dat zonder javascript wel mogelijk?
1 2 3 | header('location: /cars'.$_GET['merk']. '/'. $_GET['merk']); ?> |
het post-veld van je formulier laten verwijzen naar de waarden van je 2 dropdown lijsten lijkt me, geen idee of dat dan javascript is of htmlquote:Op woensdag 16 januari 2008 15:33 schreef Geqxon het volgende:
Weet iemand trouwens hoe ik het slim aan kan pakken, dat als ik volledig met MultiView danwel Mod_Rewrite werk, hoe ik dan mijn forms met GET kan posten?
Ik heb nu een drop-down list met diverse automerken, en daarnaast eentje met diverse kleuren. Ik wil dat hij bij een submit naar "/cars/chevrolet/red/" gaat, maar is dat zonder javascript wel mogelijk?
Echter zou ik in dat geval al mijn pagina's aan moet passen. Ik ga er nog even mee fiddlen. Ik kan JavaScript natuurlijk ook optioneel maken, en dat javascriptloze personen dan helaas wel richting "car.php?brand=chevrolet&color=red" gaan. Het is toch maar een extraatje.quote:Op woensdag 16 januari 2008 15:40 schreef PiRANiA het volgende:
[..]
[ code verwijderd ]
?
zonder submit is het niet mogelijk zonder javascript denk ik
Volgens mij kan dat ook alleen zonder javascript als je dat met een submit button doet..quote:Op woensdag 16 januari 2008 15:40 schreef PiRANiA het volgende:
[..]
[ code verwijderd ]
?
zonder submit is het niet mogelijk zonder javascript denk ik
Het is iig niet netjesquote:Op woensdag 16 januari 2008 15:02 schreef Thomass het volgende:
Ik kan me niet voorstellen dat eval(file_get_contents()) good practice is. Ik zou nog eens goed naar je opzet kijken want op die manier dingen doen kan éécht niet goed zijn
Ik ga er toch wel maar voor. Simpelweg boven elke pagina kijken of de huidige filename met PHP eindigt, en zo ja, doorsturen naar de MultiView pagina.quote:Op woensdag 16 januari 2008 15:43 schreef Geqxon het volgende:
[..]
Echter zou ik in dat geval al mijn pagina's aan moet passen. Ik ga er nog even mee fiddlen. Ik kan JavaScript natuurlijk ook optioneel maken, en dat javascriptloze personen dan helaas wel richting "car.php?brand=chevrolet&color=red" gaan. Het is toch maar een extraatje.
heb je veel javascriptloze bezoekers dan?quote:Op woensdag 16 januari 2008 15:43 schreef Geqxon het volgende:
[..]
Echter zou ik in dat geval al mijn pagina's aan moet passen. Ik ga er nog even mee fiddlen. Ik kan JavaScript natuurlijk ook optioneel maken, en dat javascriptloze personen dan helaas wel richting "car.php?brand=chevrolet&color=red" gaan. Het is toch maar een extraatje.
Nee absoluut niet, dat kan je allemaal opgeven en voor iedere 'case' een apparte regel makenquote:Op woensdag 16 januari 2008 16:09 schreef MuRKie het volgende:
Is het trouwens mogelijk om mod_rewrite te gebruiken als je pagina's met verschillende aantallen $_GET variabelen in je url's hebt.
Ik heb namelijk de ene keer index.php?component=news&category=algemeen en de andere keer heb ik een url met index.php?component=content&type=view&id=5&itemid=7
Is het voor mod_rewrite noodzakelijk dat je altijd dezelfde aantallen $_GET variabelen in de url hebt?
Dit had ik namelijk een keer gelezen toen ik nog niet wist wat mod_rewrite inhield en ging kijken wat mod_rewrite eigenlijk inhield (rare zin eigenlijk)
Dan moet ik me toch maar eens gaan verdiepen in het mod_rewrite wezenquote:Op woensdag 16 januari 2008 16:15 schreef WyriHaximus het volgende:
[..]
Nee absoluut niet, dat kan je allemaal opgeven en voor iedere 'case' een apparte regel maken.
Nee hoeft niet als jij voor bijde manieren van URL indeling een regel aan maaktquote:Op woensdag 16 januari 2008 16:27 schreef MuRKie het volgende:
Ik lees net een en ander op www.mod-rewrite.nl
Maar hoe los ik het op als ik bij een bepaalde url andere volgorde van $_GET variabelen gebruik?
index.php?component=news&category=algemeen
index.php?component=content&type=view&id=5&itemid=7
Dan krijg ik toch een conflict met category en type? Hoe weet mod_rewrite dat ik de ene keer category bedoel en de andere keer type?
Maar stel bij de volgende url's:quote:Op woensdag 16 januari 2008 16:36 schreef WyriHaximus het volgende:
[..]
Nee hoeft niet als jij voor bijde manieren van URL indeling een regel aan maakt.
1 2 3 4 5 | www.site.nl/news/algemeen/ index.php?component=content&type=view&id=5&itemid=7 www.site.nl/content/view/5/7/ |
1 |
Mijn website moet tot Lynx aan toe compatible zijn.quote:Op woensdag 16 januari 2008 16:14 schreef PiRANiA het volgende:
[..]
heb je veel javascriptloze bezoekers dan?
check je google analytics als je dat hebt
kee...quote:Op woensdag 16 januari 2008 17:43 schreef Geqxon het volgende:
[..]
Mijn website moet tot Lynx aan toe compatible zijn.
Ik heb een mysql table met een aantal dingetjes. Deze moeten er uitkomen in een tabel. Nu moet de user deze volgorde kunnen aanpassen. Hoe kan ik dat het beste doen? Auto increment werkt niet goed, want als je iets verwijderd gaat ie gewoon door met tellen!quote:Op woensdag 16 januari 2008 17:43 schreef Geqxon het volgende:
[..]
Mijn website moet tot Lynx aan toe compatible zijn.
Als de sorteervolgorde niet gerelateerd is aan andere gegevens in de tabel, dan heb je een extra kolom nodig die de sorteervolgorde bepaald.quote:Op woensdag 16 januari 2008 17:51 schreef Flaccid het volgende:
Ik heb een mysql table met een aantal dingetjes. Deze moeten er uitkomen in een tabel. Nu moet de user deze volgorde kunnen aanpassen. Hoe kan ik dat het beste doen? Auto increment werkt niet goed, want als je iets verwijderd gaat ie gewoon door met tellen!
In je mod_rewrite doe je ongeveer zoiets:quote:Op woensdag 16 januari 2008 16:49 schreef MuRKie het volgende:
[..]
Maar stel bij de volgende url's:
[ code verwijderd ]
in je script geef je dan als link de volgende url op:
[ code verwijderd ]
Hoe weet mod_rewrite dan of hij bij view de $_GET['type'] moet gebruiken of $_GET['category']
want dat staat niet meer in de url dan toch..
En dan even niet op het aantal $_GET variabelen gelet want het kan maar zo zijn dat ik een keer evenveel $_GET variabelen heb maar wel verschillende.. Dan heb ik toch een probleem?
of moet ik in mijn script gewoon de oude url's gebruiken zoals:
index.php?component=news&category=algemeen
index.php?component=content&type=view&id=5&itemid=7
en dat mod_rewrite dat zelf omtovert tot een mooie url?
1 |
$ op het eind toch?quote:Op woensdag 16 januari 2008 18:21 schreef HuHu het volgende:
[..]
In je mod_rewrite doe je ongeveer zoiets:
[ code verwijderd ]
De matches in je rule kun je in de rewrite herbruiken middels de variabelen $1, $2, enz...
1 |
hopelijk veranderd er niks dankzij deze overname..quote:Op woensdag 16 januari 2008 20:10 schreef mschol het volgende:
http://pro.tweakers.net/n(...)eemt-mysql-over.html
moeten we daar nou blij mee zijn?
Als je een beetje gezocht had op Google had je dit vast ook kunnen vinden.quote:Op woensdag 16 januari 2008 19:50 schreef MuRKie het volgende:
heeft iemand misschien een linkje voor een tutorial betreft mod_rewrite want ik snap er de ballen van..
[edit]
wacht (.*) betekent dat er vanalles kan staan en anders kan je het specifiek op de waarde toepassen?
Dus kan zou ik per uitzondering zo'n regel aan moeten maken. zie ik dat zo goed?
[/edit]
tutorial zou overigens nog steeds welkom zijn
Google eens op regular expression. Of dump hier wat je nodig hebt, dan kan ik wat voor je bakken, waarna jij er hopelijk wat van leert.quote:Op woensdag 16 januari 2008 19:50 schreef MuRKie het volgende:
heeft iemand misschien een linkje voor een tutorial betreft mod_rewrite want ik snap er de ballen van..
[edit]
wacht (.*) betekent dat er vanalles kan staan en anders kan je het specifiek op de waarde toepassen?
Dus kan zou ik per uitzondering zo'n regel aan moeten maken. zie ik dat zo goed?
[/edit]
tutorial zou overigens nog steeds welkom zijn
ik zit via mijn pda te fokken omdat ik nog geen internet heb in mijn huisie. en googlen op een pda is geen ideale situatie.. dus heb nog niet echt gegoogledquote:Op woensdag 16 januari 2008 20:33 schreef Spike1506 het volgende:
[..]
Als je een beetje gezocht had op Google had je dit vast ook kunnen vinden.
ik kan nog niet echt iets concreets posten omdat ik mijn cms nog aan het ontwikkelen ben maar ik krijg url's als die ik hierboven eerder heb geschreven. maar ik begrijp dat ik voor elke afwijkende url een nieuwe regel moet maken?quote:Op woensdag 16 januari 2008 20:46 schreef Geqxon het volgende:
[..]
Google eens op regular expression. Of dump hier wat je nodig hebt, dan kan ik wat voor je bakken, waarna jij er hopelijk wat van leert.
In bovenstaand geval staat de punt voor "willekeurig karakter", en het sterretje voor "maakt niet uit welke lengte".
dan ga ik eerst maar eens een beetje aankloten met de info die ik nu heb, en als het dan niet wil lukken dan vraag ik dat alsnog welquote:Op woensdag 16 januari 2008 21:24 schreef Geqxon het volgende:
Jep. Zo heb ik zelf bv. een stuk of 10 regels.
Gisteren heb ik in dit topic ook al antwoord gegeven op deze vraag, namelijk: extra kolom toevoegen.... misschien effe terug gaan lezen?quote:Op woensdag 16 januari 2008 17:51 schreef Flaccid het volgende:
Ik heb een mysql table met een aantal dingetjes. Deze moeten er uitkomen in een tabel. Nu moet de user deze volgorde kunnen aanpassen. Hoe kan ik dat het beste doen? Auto increment werkt niet goed, want als je iets verwijderd gaat ie gewoon door met tellen!
jEdit!quote:Op woensdag 16 januari 2008 22:20 schreef saban het volgende:
Welk editor gebruiken jullie?
Ik gebruik zelf Crimson Editor, echter het geeft veel errors wanneer ik met remote bestanden werkt.
Wat is een ander goed editor welke met remote bestanden overweg kan?
ik gebruik dreamwaever maar niet voor ftp'en (server staat thuis, dus een netwerksharequote:Op woensdag 16 januari 2008 22:20 schreef saban het volgende:
Welk editor gebruiken jullie?
Ik gebruik zelf Crimson Editor, echter het geeft veel errors wanneer ik met remote bestanden werkt.
Wat is een ander goed editor welke met remote bestanden overweg kan?
Stom van me! Niet eerder aan gedacht. Ik draai het ook thuis, maar maakte gebruik van FTP terwijl ik er natuurlijk ook een share van kan maken!quote:Op donderdag 17 januari 2008 09:02 schreef mschol het volgende:
[..]
ik gebruik dreamwaever maar niet voor ftp'en (server staat thuis, dus een netwerkshare
Waarom simuleer je register_globals?quote:Op woensdag 16 januari 2008 12:48 schreef unox_worst het volgende:
[ code verwijderd ]
Werkt voor mij prima
Oeps, je wil geen ob_start gebruiken, dan zou ik het ook niet weten.
1 2 3 4 5 6 7 8 9 | foreach($_POST AS $key => $value) { ${$key} = $value; } foreach($_GET AS $key => $value) { ${$key} = $value; } ?> |
memory_limitquote:Op donderdag 17 januari 2008 22:08 schreef wobbel het volgende:
Stel ik roep de functie Dump ( ); aan, en ik geef een variable mee..dus dit:
$data = "heel veel tekens";
Dump ( $data );
Is er dan een limiet aan de hoeveel tekens die $data mag bevatten? Dat PHP bijv. geen buffer overflow krijgt bij bijv. 100.000 tekens
1 2 3 4 5 6 7 8 9 10 11 | $kaart = $_GET['kaart']; function checkOption($value) { if ($value == $kaart) { echo "Checked!"; } } checkOption("test"); ?> |
1 2 3 4 5 6 7 8 | $kaart = mysql_result($sql, 0, kaart); <option if ($kaart == "Koza Sade") { echo " selected"; } >Koza Sade</option> <option if ($kaart == "Koza Luks") { echo " selected"; } >Koza Luks</option> <option if ($kaart == "Koza Sunnet") { echo " selected"; } >Koza Sunnet</option> <option if ($kaart == "Koza Pelin") { echo " selected"; } >Koza Pelin</option> <option if ($kaart == "Koza Alara") { echo " selected"; } >Koza Alara</option> ?> |
1 2 3 4 5 6 7 8 | $kaart = mysql_result($sql, 0, kaart); <option checkOption("Koza Sade"); >Koza Sade</option> <option checkOption("Koza Luks"); >Koza Luks</option> <option checkOption("Koza Sunnet"); >Koza Sunnet</option> <option checkOption("Koza Pelin"); >Koza Pelin</option> <option checkOption("Koza Alara"); >Koza Alara</option> ?> |
1 2 3 4 5 6 7 8 | $kaart_select = mysql_result($sql, 0, kaart); $kaarten = array("Koza Sade", "Koza Luks", "Koza Sunnet", "Koza Pelin", "Koza Alara"); foreach($kaarten as $kaart){ printf("<option%s>%s</option>", ($kaart == $kaart_select) ? " selected" : "", $kaart); } ?> |
kan je niet gewoon $kaart aan de functieaanroep meegeven?quote:Op donderdag 17 januari 2008 22:44 schreef saban het volgende:
Waarschijnlijk welquote:Op vrijdag 18 januari 2008 09:58 schreef Xcalibur het volgende:
[..]
kan je niet gewoon $kaart aan de functieaanroep meegeven?
dus: checkOption($value, $kaart) ?
1 2 3 4 5 6 | $varQuery = "UPDATE menuitem "; $varQuery .= "SET delete = 'yes' "; $varQuery .= "WHERE ID = '" . fetchItemID() . "'"; $varRun = mysql_query($varQuery) or die(_DATABASE_QUERY_ERROR . " " . mysql_error()); ?> |
Tja het zou handig zijn om te weten wat er uit die functie fetchItemID() komt. Waarschijnlijk komt daar iets anders dan je verwacht. Print de resulterende query eens naar stderr zodat je ziet wat er precies gebeurt.quote:Op vrijdag 18 januari 2008 23:49 schreef MuRKie het volgende:
en kan iemand kijken wat er fout is aan de volgende query?
[ code verwijderd ]
hij geeft een error terug dat de syntax niet goed is. maar een identieke query die enkel een ander Veld update werkt wel gewoon goed..
Je had ook even de query die uitgevoerd wordt aan het die() statement kunnen toevoegen, dan weet je tenminste welke query precies fout gaat.quote:Op vrijdag 18 januari 2008 23:49 schreef MuRKie het volgende:
hey nog even over mod_rewrite. als ik dat wil gebruiken moet ik dan alle url's, die in mijn scripts verwerkt zitten, aanpassen of worden die on the fly aangepast door mod_rewrite?
en kan iemand kijken wat er fout is aan de volgende query?
[ code verwijderd ]
hij geeft een error terug dat de syntax niet goed is. maar een identieke query die enkel een ander Veld update werkt wel gewoon goed..
In dat geval kan je weer beter een ENUM(1,0) gebruiken volgens mijquote:Op zaterdag 19 januari 2008 11:43 schreef SuperRembo het volgende:
daar kan je beter een tinyint voor gebruiken met 1 of 0.
de melding was dat ik de syntax "near SET delete = 'yes' WHERE ID = 13"quote:Op zaterdag 19 januari 2008 11:43 schreef SuperRembo het volgende:
[..]
Je had ook even de query die uitgevoerd wordt aan het die() statement kunnen toevoegen, dan weet je tenminste welke query precies fout gaat.
'delete' is een reserved word, dus als je die als kolomnaam gebruikt, dan moet je er `back ticks` omheen zetten. Ik denk dat 't ook niet echt de juiste naam voor de kolom is ('deleted' zou waarschijnlijk beter zijn). En een varchar veld gebruiken om er 'yes' of 'no' in te zetten is niet handig, daar kan je beter een tinyint voor gebruiken met 1 of 0.
fetchItemID() haalt het itemid op uit de url ($_GET['itemid']) en aan de url te zien klopt het itemid gewoon en aan de mysql_error te zien ookquote:Op zaterdag 19 januari 2008 11:01 schreef Farenji het volgende:
[..]
Tja het zou handig zijn om te weten wat er uit die functie fetchItemID() komt. Waarschijnlijk komt daar iets anders dan je verwacht. Print de resulterende query eens naar stderr zodat je ziet wat er precies gebeurt.
Rare functie overigens, zo zonder params enzo, heb je maar 1 item tegelijk in je programma ofzo?
ENUM 'yes', 'no'quote:Op zaterdag 19 januari 2008 11:12 schreef Scorpie het volgende:
wat voor veld is delete? is dat een boolean of een varchar?
ikzelf heb dus ook ENUM gekozen maar dan met 'yes', 'no' om de opties logischer te houden..quote:Op zaterdag 19 januari 2008 12:11 schreef Xcalibur het volgende:
[..]
In dat geval kan je weer beter een ENUM(1,0) gebruiken volgens mij
O ja, MySQL heeft enums. Daar denk ik niet zo snel aan omdat SqlServer ze niet heeft.quote:Op zaterdag 19 januari 2008 12:13 schreef MuRKie het volgende:
[..]
de melding was dat ik de syntax "near SET delete = 'yes' WHERE ID = 13"
het veld is trouwens geen VARCHAR maar ENUM
gevoelsmatig is 1 / yes / true en 0 / no / false allemaal hetzelfde voor mijquote:Op zaterdag 19 januari 2008 12:31 schreef MuRKie het volgende:
ikzelf heb dus ook ENUM gekozen maar dan met 'yes', 'no' om de opties logischer te houden..
Het is veel beter om consequent 1 voor true te gebruiken, en 0 voor false. Dat maakt het veel logischer omdat PHP 0 ook als false ziet en 1 als true. "yes" en "no" worden door PHP allebei als true gezien.quote:Op zaterdag 19 januari 2008 17:24 schreef Xcalibur het volgende:
[..]
gevoelsmatig is 1 / yes / true en 0 / no / false allemaal hetzelfde voor mij
Maar ik reageerde op de TINYINT post, vandaar dat ik met de 1 / 0 kwam...
kan je die datum niet met php erin stoppen? met de date() functie? Ik heb werkelijk geen flauw idee hoe ik die unix date moet uitlezen..quote:Op zaterdag 19 januari 2008 20:05 schreef wobbel het volgende:
Ik zit met iets heel vaags waar ik niet echt uit kom hoe ik het op moet lossen....
Ik heb een tabel met wat velden: Ziet er zo uit:
Tabel BEZOEKERS
Wat
Datum
Ip
WAT - DATUM - IP
home - 1200769418 - 82.64.36.31
home - 1200356372 - 213.51.210.153
contact - 1200313598 - 199.121.10.192
(etc etc etc)
Nu zie je dat ik een UNIX timestamp (date ( "U" )) als datum...
Je bouwt de query dan bijvoorbeeld (zijn meerdere wegen naar Rome) zo op:quote:Op zaterdag 19 januari 2008 20:05 schreef wobbel het volgende:
Ik zit met iets heel vaags waar ik niet echt uit kom hoe ik het op moet lossen....
Ik heb een tabel met wat velden: Ziet er zo uit:
Tabel BEZOEKERS
Wat
Datum
Ip
WAT - DATUM - IP
home - 1200769418 - 82.64.36.31
home - 1200356372 - 213.51.210.153
contact - 1200313598 - 199.121.10.192
(etc etc etc)
Nu zie je dat ik een UNIX timestamp (date ( "U" )) als datum...
Maar hoe krijg ik nu een mooi overzichtje:
MAAND - VIEWS
Januari - en dan alle records die in januari valle
Februari - en dan alle records die in februari vallen
tot aan de huidige maand
aah kijk eens aan, daar heb ik wat meer aanquote:Op zaterdag 19 januari 2008 20:17 schreef Mordreth het volgende:
[..]
Je bouwt de query dan bijvoorbeeld (zijn meerdere wegen naar Rome) zo op:
select * from bezoekers where datum > AAAAAA and datum < BBBBB
Op de AAA plek zet je dan een unix timestamp van 1 februari neer (doormiddel van date: date(0,0,0,2,1,2008)
en op de plek van BBB zet je dus het einde van de maand neer.
Met order by datum kan je het dan netjes oplopend / aflopend ophalen.
quote:Op zaterdag 19 januari 2008 20:47 schreef Geqxon het volgende:
SELECT DISTINCT.
1 2 3 4 5 6 7 8 9 10 11 12 13 | $SQL_Name_Select = "SELECT DISTINCT Naam FROM Namen" $SQL_Name_Query = mysql_query ( $SQL_Name_Select ) or die ( $error->MySQL ( __FILE__, $SQL_Name_Insert, __LINE__ ) ); while ( $SQLData = mysql_fetch_array ( $SQL_Name_Query ) ) { echo $SQLData['Naam'] . "<br />"; } ?> |
1 |
quote:The ALL, DISTINCT, and DISTINCTROW options specify whether duplicate rows should be returned. If none of these options are given, the default is ALL (all matching rows are returned). DISTINCT and DISTINCTROW are synonyms and specify removal of duplicate rows from the result set.
Dus hij maakt er een array van? Maar dat was het al? Wat doet dit precies meer? Select WHERE id > 0 kan toch ook?quote:Op zaterdag 19 januari 2008 23:16 schreef Geqxon het volgende:
Het is geen functie, maar een optie die bij SELECT hoort.
[..]
Het is een optie van SELECT, waarbij je tegen SELECT zegt dat je enkel rijen met unieke waarden wilt.quote:Op zondag 20 januari 2008 02:04 schreef Flaccid het volgende:
[..]
Dus hij maakt er een array van? Maar dat was het al? Wat doet dit precies meer? Select WHERE id > 0 kan toch ook?
1 |
Je zou het zo eens kunnen proberen:quote:Op maandag 21 januari 2008 10:42 schreef wobbel het volgende:
Ik heb nu dit:
SELECT DISTINCT Year FROM CMS_PageStatistics...
Ik krijg nu netjes dit:
2006
2007
2008
Maar hoe kan ik zien hoeveel records er van elke zijn? dus:
2006 - 305
2007 - 1403
2008 - 2930
1 2 | GROUP BY year |
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 | /* Load main library Files */ require_once ( "lib/htconfig.php" ); require_once ( LIB_PATH . "/f_core.php" ); $MySQL_Statistics_Select = "SELECT DISTINCT(`Year`) FROM CMS_PageStatistics ORDER BY Year DESC"; $MySQL_Statistics_Query = mysql_query ( $MySQL_Statistics_Select ) or die ( mysql_error ( ) ); while ( $SQLData = mysql_fetch_array ( $MySQL_Statistics_Query ) ) { $MySQL_StatSum_Select = "SELECT Sum(`Views`) FROM CMS_PageStatistics WHERE Year = '" . addslashes ( $SQLData['Year'] ) . "'"; $MySQL_StatSum_Query = mysql_query ( $MySQL_StatSum_Select ) or die ( mysql_error ( ) ); $MySQL_StatSum_Result = mysql_result ( $MySQL_StatSum_Query, 0 ); echo $SQLData['Year'] . " - " . $MySQL_StatSum_Result . "<br />"; } ?> |
Maar hoe zorg ik ervoor dat ie de views ook uitpoept? Krijg nu NIKS uitgepoeptquote:Op maandag 21 januari 2008 11:08 schreef Geqxon het volgende:
SELECT Year, COUNT(Year), SUM(Views) FROM `years` WHERE 1 GROUP BY Year
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* Load main library Files */ require_once ( "lib/htconfig.php" ); require_once ( LIB_PATH . "/f_core.php" ); $MySQL_Statistics_Select = "SELECT Year, COUNT(Year), SUM(Views) FROM CMS_PageStatistics WHERE 1 GROUP BY Year"; $MySQL_Statistics_Query = mysql_query ( $MySQL_Statistics_Select ) or die ( mysql_error ( ) ); while ( $SQLData = mysql_fetch_array ( $MySQL_Statistics_Query ) ) { echo $SQLData['Year'] . " - " . $SQLData['Views'] . "<br />"; } ?> |
Ik ben U eeuwig dankbaar Bobbieeeejquote:Op maandag 21 januari 2008 11:13 schreef Geqxon het volgende:
" ... , SUM(Views) AS Views FROM .... "
Hij is wel te pingen, dus de webserver (Apache?quote:Op maandag 21 januari 2008 14:38 schreef MuRKie het volgende:
ligt www.apache.org er bij jullie ook uit?
quote:Op maandag 21 januari 2008 14:51 schreef CraZaay het volgende:
[..]
Hij is wel te pingen, dus de webserver (Apache?) staat uit lijkt me
1 2 3 | Jantje 5 Henkie 1 |
een dirty oplossing:quote:Op maandag 21 januari 2008 17:46 schreef DutchBlood het volgende:
Ik loop tegen het volgende MySQL gerelateerde probleem aan. Ik heb een tabel met registraties voor een sport-event. Mensen kunnen zelf hun racenummer kiezen. Nu wil het echter zo maken dat op het moment dat iemand geen nummer kiest ze een vrij nummer zo dicht mogelijk bij 1 krijgen.
Dus stel dat de tabel er zo uit ziet:
[ code verwijderd ]
Op het moment dat iemand geen nummer kiest, moet ie dus nummer 3 krijgen. Vraag is, hoe kom ik achter dit getal?
Als ik nummer auto_increment meegeef hoogt ie namelijk het hoogste getal, 5 dus, met 1 op =>6, en dat wil ik niet.
Doe dan gewoon 1 select query om alle id's op te vragen. Dan kun je in php wel uitzoeken wat het laagste vrije id is.quote:Op maandag 21 januari 2008 18:53 schreef mschol het volgende:
[..]
een dirty oplossing:
een loopje maken dat vanaf 1 gaat tellen naar de eerste beste lege plek.. (en telkens checkt met een select of het nummer al bestaat)
geen idee hoe je het anders zou moeten doen...
Had ik al overwegen, maar zoals je vermeld nogal dirty.quote:Op maandag 21 januari 2008 18:53 schreef mschol het volgende:
[..]
een dirty oplossing:
een loopje maken dat vanaf 1 gaat tellen naar de eerste beste lege plek.. (en telkens checkt met een select of het nummer al bestaat)
geen idee hoe je het anders zou moeten doen...
Dat lijkt me een goed idee ja. Bedankt.quote:Op maandag 21 januari 2008 19:49 schreef Light het volgende:
[..]
Doe dan gewoon 1 select query om alle id's op te vragen. Dan kun je in php wel uitzoeken wat het laagste vrije id is.
Hm dat was lastiger dan ik dacht maar is toch gelukt, in 2 queries of zelfs 1, als je aanneemt dat ID=1 al bezet is (daar kun je evt op query'en) dan doet de volgende query de truuk:quote:Op maandag 21 januari 2008 17:46 schreef DutchBlood het volgende:
Ik loop tegen het volgende MySQL gerelateerde probleem aan. Ik heb een tabel met registraties voor een sport-event. Mensen kunnen zelf hun racenummer kiezen. Nu wil het echter zo maken dat op het moment dat iemand geen nummer kiest ze een vrij nummer zo dicht mogelijk bij 1 krijgen.
Dus stel dat de tabel er zo uit ziet:
[ code verwijderd ]
Op het moment dat iemand geen nummer kiest, moet ie dus nummer 3 krijgen. Vraag is, hoe kom ik achter dit getal?
Als ik nummer auto_increment meegeef hoogt ie namelijk het hoogste getal, 5 dus, met 1 op =>6, en dat wil ik niet.
1 2 3 4 5 | from nodes n1 left join nodes n2 on n2.ID = n1.ID + 1 where n2.ID is null order by n1.ID limit 1; |
1 |
kan je wel vanaf buitenaf connecten? en heb je de poort 3306 ingesteld?quote:Op maandag 21 januari 2008 20:57 schreef poepeneesje het volgende:
Hallo,
Ik ben bezig met een website inclusief database. Ik heb bij PCextreme een database opgebouwd nu wil ik via de website (deze staat bij een ander bedrijf gehost) de informatie uit de database halen, maar ik krijg de volgende foutmelding:
[ code verwijderd ]
Iemand die hier een oplossing voor weet/heeft?
-xxx-
Ik heb een copy van de site op de servers PCextreme geüpload en dan wordt de data wel uitgelezen. Dus ik denk dat ik te maken heb met de tweede situatie die jij beschrijft.quote:Op maandag 21 januari 2008 20:59 schreef wobbel het volgende:
[..]
kan je wel vanaf buitenaf connecten? en heb je de poort 3306 ingesteld?
Bij heel veel MySQL servers kan je niet van buitenaf connecten naar het IP, of alleen vanaf bepaalde ip adressen (of ranges)
1. Niet van buitenaf, tenzij je je host vraagt om toegang van andere hosts dan localhost toe te staan.quote:Op maandag 21 januari 2008 21:10 schreef poepeneesje het volgende:
[..]
1. Hoe kan ik alsnog een connectie maken met deze server, 2. hoe stel ik poort 3306 in en 3. hoe kan ik zien of ik een connectie kan opzetten vanaf buitenaf?
Idd, wat vrij irritant is. Ben je gelijk ook aangewezen op phpmyadmin.. wat enorm ruk is.quote:Op maandag 21 januari 2008 22:23 schreef saban het volgende:
Buitenaf verbinding naar PCX is niet mogelijk.
Mijn ervaring is dat styles in <style> soms genegeerd worden. Wanneer je die inline toevoegd aan elementen werkt het (naar mijn ervaring) wel overal.quote:Op maandag 21 januari 2008 21:09 schreef Light het volgende:
Ik heb een probleem bij het versturen van html mails. In Thunderbird en in Mail (op Mac) werkt het zoals ik zou verwachten, ook met de linkjes in de mail zelf (<a href=#id>text</a> dingen). Maar die linkjes werken (uiteraard, zou ik bijna zeggen) niet in Outlook. Ook in webmail (gmail) gaan de linkjes niet goed, en daar is de hele css opmaak ook nog zoek.
De mail is xhtml 1.0 transitional (op een paar kleine foutjes na) en met alle css info in <style> tags. Die code werkt goed in IE, FF en Safari.
Heeft iemand nog tips hoe ik die linkjes in Outlook kan laten werken? Ook tips over webmail clients als gmail zijn welkom.
Idd, maar maakt het niet minder irritantquote:Op maandag 21 januari 2008 23:07 schreef CraZaay het volgende:
Vrij gangbare security measure toch?
http://www.email-standards.org/quote:Op maandag 21 januari 2008 21:09 schreef Light het volgende:
Heeft iemand nog tips hoe ik die linkjes in Outlook kan laten werken? Ook tips over webmail clients als gmail zijn welkom.
Als die host ssh toegang heeft kun je mysql gewoon tunnelen over ssh en kun je alles wel gewoon vanaf je eigen pc bereiken.quote:Op maandag 21 januari 2008 23:20 schreef Mordreth het volgende:
[..]
Idd, maar maakt het niet minder irritant.
1 |
quote:Op dinsdag 22 januari 2008 11:48 schreef SHERMAN het volgende:
Thx, maar krijg nog steeds een 1046 error, MySQL zou dit toch gewoon moeten kunnen lijkt me?
1 |
1 2 3 | header("content-type: application/xhtml+xml; charset=utf-8") ?> |
Wat wil je precies doen? Dezelfde data updaten voor meerdere records, of verschillende data?quote:Op dinsdag 22 januari 2008 14:20 schreef PiRANiA het volgende:
kan je btw meerdere updates doen in 1 query? bij mij lukte het niet...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function displayMenu() { $html = "<div id=\"navcontainer\">\n"; $html .= "\t\t\t\t<div id=\"title\">" . _MENU_TITLE . "</div>\n"; $html .= "\t\t\t\t<ul id=\"list\">\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"menuitem/list.html\">Menu items</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"content/list.html\">Pagina's</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"gebruiker/list.html\">Gebruikers</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"mail/edit.html\">Mail</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"login/logout.html\">Uitloggen</a></li>\n"; $html .= "\t\t\t\t</ul>\n"; $html .= "\t\t\t</div>\n"; return $html; } ?> |
1 2 3 | RewriteRule ^(.*)/(.*)/(.*)\.html$ index.php?component=$1&type=$2&itemid=$3 [L] RewriteRule ^(.*)/(.*)\.html$ index.php?component=$1&type=$2 [L] |
Voeg eens een base href aan je HTML toe, waarin de root van je site staatquote:Op dinsdag 22 januari 2008 18:48 schreef MuRKie het volgende:
Ik krijg mod_rewrite niet goed werkend..
http://localhost/menuitem/list bedoel je dan? Moet dat standaard bij mod_rewrite?quote:Op dinsdag 22 januari 2008 19:03 schreef Xcalibur het volgende:
[..]
Voeg eens een base href aan je HTML toe, waarin de root van je site staat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function displayMenu() { $html = "<div id=\"navcontainer\">\n"; $html .= "\t\t\t\t<div id=\"title\">" . _MENU_TITLE . "</div>\n"; $html .= "\t\t\t\t<ul id=\"list\">\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"" . cmsConfig_siteRoot . "cbs/menuitem/list/\">Menu items</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"" . cmsConfig_siteRoot . "cbs/content/list/\">Pagina's</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"" . cmsConfig_siteRoot . "cbs/gebruiker/list/\">Gebruikers</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"" . cmsConfig_siteRoot . "cbs/mail/edit/\">Mail</a></li>\n"; $html .= "\t\t\t\t\t<li class=\"item\"><a href=\"" . cmsConfig_siteRoot . "cbs/login/logout/\">Uitloggen</a></li>\n"; $html .= "\t\t\t\t</ul>\n"; $html .= "\t\t\t</div>\n"; return $html; } ?> |
1 2 3 4 5 6 7 8 9 10 | #RewriteRule ^(.*)/(.*)/(.*)/ index.php?component=$1&category=$2&type=$3 [L] #RewriteRule ^(.*)/(.*)/(.*) index.php?component=$1&category=$2&type=$3 [L] #RewriteRule ^(.*)/(.*)/(.*)/ index.php?component=$1&type=$2&itemid=$3 [L] #RewriteRule ^(.*)/(.*)/(.*) index.php?component=$1&type=$2&itemid=$3 [L] RewriteRule ^(.*)/(.*)/ index.php?component=$1&type=$2 [L] RewriteRule ^(.*)/(.*) index.php?component=$1&type=$2 [L] |
Of alles relatief vanaf de root gebruiken, zoals "/images/bla,gif", of de base-tag gebruiken: http://www.w3schools.com/tags/tag_base.aspquote:Op dinsdag 22 januari 2008 19:04 schreef MuRKie het volgende:
[..]
http://localhost/menuitem/list bedoel je dan? Moet dat standaard bij mod_rewrite?
Alle links in mijn website de hele url gebruiken?
<base href=> is een aparte tag, die moet je in je <HEAD> van je document zettenquote:Op dinsdag 22 januari 2008 19:04 schreef MuRKie het volgende:
http://localhost/menuitem/list bedoel je dan? Moet dat standaard bij mod_rewrite?
Alle links in mijn website de hele url gebruiken?
<base> tag gaat niet werken in mijn cms omdat alles al utigevoerd wordt voor het in de html template wordt geprint..quote:Op dinsdag 22 januari 2008 21:09 schreef Xcalibur het volgende:
[..]
<base href=> is een aparte tag, die moet je in je <HEAD> van je document zetten
Dan worden alle links relatief aan dit pad bepaald, maar de volledige URL in je link zetten kan ook. Vind ik zelf alleen niet zo mooi
Wat wordt uitgevoerd? Uiteindelijk wordt de HTML toch door de browser geïnterpreteerd. Wees eens duidelijkquote:Op dinsdag 22 januari 2008 21:50 schreef MuRKie het volgende:
[..]
<base> tag gaat niet werken in mijn cms omdat alles al utigevoerd wordt voor het in de html template wordt geprint..
Daar kan ik vast verder mee. Of iig het onthouden voor als het een keer wel nodig is, de eisen blijken aangepast deze keer. Scheelt mij weerquote:Op maandag 21 januari 2008 23:15 schreef GVRuud het volgende:
[..]
Mijn ervaring is dat styles in <style> soms genegeerd worden. Wanneer je die inline toevoegd aan elementen werkt het (naar mijn ervaring) wel overal.
Google hielp ook al weinigquote:Met anchors in html-mail heb ik helaasch geen ervaring...
Je kan toch gewoon je adres in die tag zetten?quote:Op dinsdag 22 januari 2008 21:50 schreef MuRKie het volgende:
<base> tag gaat niet werken in mijn cms omdat alles al utigevoerd wordt voor het in de html template wordt geprint..
Horen die twee argumenten niet andersom te staan?quote:Op woensdag 23 januari 2008 11:35 schreef Chandler het volgende:
Ik heb een leuke vraag
Ik heb een define waarbij ik de volgende gegevens heb
define("FILE_TYPES", "1,2,3");
deze informatie wil ik gebruiken bij uploads. Ik wil de file type controlleren met deze define die ik om zet naar een array dmv explode, maar het werkt niet
[ code verwijderd ]
wat doe ik fout?
Nee, zie codequote:Op woensdag 23 januari 2008 11:42 schreef Tuvai.net het volgende:
[..]
Horen die twee argumenten niet andersom te staan?
1 2 3 | define("FILE_TYPES", "1,2,3"); ?> |
quote:Op woensdag 23 januari 2008 11:57 schreef Xcalibur het volgende:
Ik denk dat hij de argumenten van de explode() bedoelt....
Dat is natuurlijk wel lastiger uit te breiden....quote:Op woensdag 23 januari 2008 12:05 schreef Scorpie het volgende:Dat dus
Daarnaast zou ik geen arrays in defines doen, ik zou (zeker als je niet zoveel opties hebt) deze apart definieren. Werkt mijns inzien beter en overzichtelijker.
Dat moet ik dan in mijn html template zetten..quote:Op woensdag 23 januari 2008 10:49 schreef Xcalibur het volgende:
[..]
Je kan toch gewoon je adres in die tag zetten?
Dat heeft toch niks met je CMS te maken?
Alles wordt uitgevoerd.. Menu's opbouwen en in variabele stoppen. En zo ook content en andere inhoud die uit de database komt..quote:Op dinsdag 22 januari 2008 21:52 schreef CraZaay het volgende:
[..]
Wat wordt uitgevoerd? Uiteindelijk wordt de HTML toch door de browser geïnterpreteerd. Wees eens duidelijk
Ik bedoel de argumenten van in_array()quote:Op woensdag 23 januari 2008 11:47 schreef Chandler het volgende:
[..]
Nee, zie code
[ code verwijderd ]
De browser doet iets met de base-tag, heeft niets met server side zaken te makenquote:Op woensdag 23 januari 2008 12:40 schreef MuRKie het volgende:
[..]
Alles wordt uitgevoerd.. Menu's opbouwen en in variabele stoppen. En zo ook content en andere inhoud die uit de database komt..
Weet niet of dat voor die basetag wat uitmaakt.. weet niet of hij voor alle url's de basetag plakt..
quote:Op woensdag 23 januari 2008 13:00 schreef Chandler het volgende:
correct, fout gezienvervelende van PHP is dat deze argumenten af en toe gewoon andersom staan
Dus dan kan ik baseteg niet gebruiken aangezien php al mijn url's genereerd? Of juist wel?quote:Op woensdag 23 januari 2008 13:00 schreef CraZaay het volgende:
[..]
De browser doet iets met de base-tag, heeft niets met server side zaken te maken
Indirect wel aangezien je systeem er rekening mee moet houden in het genereren van je URL'squote:Op woensdag 23 januari 2008 13:00 schreef CraZaay het volgende:
[..]
De browser doet iets met de base-tag, heeft niets met server side zaken te maken
Juist welquote:Op woensdag 23 januari 2008 14:22 schreef MuRKie het volgende:
Dus dan kan ik baseteg niet gebruiken aangezien php al mijn url's genereerd? Of juist wel?
Ik ook. Zeker in combinatie met mod_rewrite is dit (naar mijn mening) de beste oplossing, omdat je zo de bestandstructuur kunt simuleren die je anders met losse bestanden kunt maken.quote:Op woensdag 23 januari 2008 15:11 schreef MuRKie het volgende:
Ikzelf maak altijd mijn websites in een index.php en include alle content daarin en de lay-out ook.
Hmm dat zou inderdaad handig zijn!quote:Op woensdag 23 januari 2008 15:22 schreef Xcalibur het volgende:
[..]
Juist wel
De url's worden berekend vanaf de base href. Als je zorgt dat al je url's relatief zijn (en dat zijn ze waarschijnlijk vanwege je mod_rewrite) dan zorgt de base href ervoor dat ze allemaal vanaf de root van je site worden berekend. En dan ben je dus van het sub/sub/sub/sub/sub mapjes probleem af
1 2 3 | "content/view/7/"; ?> |
1 2 3 | cmsConfig_siteRoot . "content/view/7/"; ?> |
Ok..quote:Op woensdag 23 januari 2008 15:25 schreef Xcalibur het volgende:
[..]
Ik ook. Zeker in combinatie met mod_rewrite is dit (naar mijn mening) de beste oplossing, omdat je zo de bestandstructuur kunt simuleren die je anders met losse bestanden kunt maken.
Bovendien kan je alle generieke dingen zoals database openen, input validatie, error handling, etc. fijn in de index.php doen, is dat lekker centraal.
Zie de topic titel... MVC.quote:Op woensdag 23 januari 2008 15:11 schreef MuRKie het volgende:
En zijn er verder nog andere handige methodes om je website op te bouwen?
quote:Op woensdag 23 januari 2008 15:33 schreef CraZaay het volgende:
[..]
Zie de topic titel... MVC.
Voor PHP bijvoorbeeld Code Igniter of Cake. Je zou niet alleen je lay-out moeten scheiden, maar ook je application behaviour (controller) en business/data logic (model).
Leer er eens het een en ander over zou ik zeggen
De siteroot kan je ook gewoon in je template printen ipv in je links natuurlijkquote:Op woensdag 23 januari 2008 15:27 schreef MuRKie het volgende:
maar met de basetag had dat dus werk gescheeld. Wat wel het voordeel is van mijn oplossing is dat ik nog steeds alle instellingen (in dit geval de siteroot) in de config.php kan instellen ipv in dit geval in de template..
Daar zit wat inquote:Op woensdag 23 januari 2008 15:37 schreef Xcalibur het volgende:
[..]
De siteroot kan je ook gewoon in je template printen ipv in je links natuurlijk
In de OOP tutorial die ik gisteren ben begonnen doe ik ook alles volgens het MVC model: [Perl] OOP tutorial / case study: DataRow.pmquote:Op woensdag 23 januari 2008 15:36 schreef MuRKie het volgende:
[..]ik wist niet dat dat MVC daar voor stond
OOP is voor mij nog een stapje te ver ben ik bang..quote:Op woensdag 23 januari 2008 15:53 schreef Farenji het volgende:
[..]
In de OOP tutorial die ik gisteren ben begonnen doe ik ook alles volgens het MVC model: [Perl] OOP tutorial / case study: DataRow.pm
Is wel in perl maar MVC is taalonafhankelijk. Misschien leuk om te volgen. Vanavond de volgende aflevering.
Ow op die manierquote:Op woensdag 23 januari 2008 16:29 schreef Geqxon het volgende:
Ik heb mijn post weg-ge-edit. Want hij stond verkeerd.
Juist omdat er altijd gedacht wordt dat OOP moeilijk of complex is, heb ik die tutorial gemaakt. Dit is een misvatting, in wezen is het heel simpel en (zeker het eindproduct) is vaak veel intuitiever dan puur imperatief programmeren. Ik ga ook behandelen hoe overerving werkt, hoe je classes met elkaar combineert en er 1 geheel van smeedt. Dus doe een poging het te volgen zou ik zeggen.quote:Op woensdag 23 januari 2008 16:18 schreef MuRKie het volgende:
[..]
OOP is voor mij nog een stapje te ver ben ik bang..
Maar wat ik zag bij jouw les 1 was dat er wel redelijk verschil zit in OOP met Perl vergeleken met PHP, dus is het voor mij dan wel nuttig om OOP met Perl te gaan leren?quote:Op woensdag 23 januari 2008 17:10 schreef Farenji het volgende:
[..]
Juist omdat er altijd gedacht wordt dat OOP moeilijk of complex is, heb ik die tutorial gemaakt. Dit is een misvatting, in wezen is het heel simpel en (zeker het eindproduct) is vaak veel intuitiever dan puur imperatief programmeren. Ik ga ook behandelen hoe overerving werkt, hoe je classes met elkaar combineert en er 1 geheel van smeedt. Dus doe een poging het te volgen zou ik zeggen.
1 2 3 | $output = array_merge($output, a_function_that_returns_an_array($input)); ?> |
zou wel moeten werken...quote:Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:
Kan het kloppen dat deze combi niet gaat lukken?
[ code verwijderd ]
Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
Dat zou niet moeten uitmaken, check je functie nog maar eens na.quote:Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:
Kan het kloppen dat deze combi niet gaat lukken?
[ code verwijderd ]
Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
Dat moet niet uitmaken (spuit 11, ik weet het). Even debuggen dus om te checken of $output en het resultaat van je functie beide een array bevatten zou ik zeggenquote:Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:
Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
1 |
1 |
1 |
1 |
1 2 | elseif(startmonth == 02){...} |
1 2 3 4 | $volgend_jaar = ???; if($opgehaalde_startjaar == $start_jaar){..} elseif($opgehaalde_startjaar == $volgend_jaar){...} |
1 |
Sorteren in de query op datum en vervolgens in het loopje kijken wanneer een nieuw jaar begint?quote:Op donderdag 24 januari 2008 12:45 schreef poepeneesje het volgende:
Hebben jullie misschien een slimme en logische oplossing? Het volgende moet eigenlijk gebeuren:
Datums -> Automatisch gesorteerd, gegroepeerd en getoond op jaar -> Automatisch gesorteerd, gegroepeerd en getoond op maand.
1 2 3 4 5 | { echo('nieuw jaar'); $current_year = $year; } |
Waarom nou de PHP date functions aanroepen om van de datum een timestamp te maken, en daar weer een dag van te maken? Waarom niet meteen in de queryquote:@ Farenji & CraZaay: Bedankt, ik heb het opgelost zoals Farenji aangaf en de benodigde delen eruit gehaald met:
Bedankt, deze had ik ook al bedachtquote:Op donderdag 24 januari 2008 12:58 schreef CraZaay het volgende:
[..]
Sorteren in de query op datum en vervolgens in het loopje kijken wanneer een nieuw jaar begint?
[ code verwijderd ]
Dan heb je geen tig if's nodig iig.
Omdat ik geen andere manier wist waarmee ik de juiste gegevens kon verkrijgen...quote:[..]
Waarom nou de PHP date functions aanroepen om van de datum een timestamp te maken, en daar weer een dag van te maken? Waarom niet meteen in de query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | - januari - februari - ... 2008 - januari - februari - ... 2009 - januari - februari - ... |
1 2 3 4 5 6 | RewriteRule ^!(.*)/(.*)/(.*)/$ index.php?component=$1&type=$2&id=$3 [L] RewriteRule ^!(.*)/(.*)/(.*)$ index.php?component=$1&type=$2&id=$3 [L] RewriteRule ^!(.*)/(.*)/$ index.php?component=$1&type=$2 [L] RewriteRule ^!(.*)/(.*)$ index.php?component=$1&type=$2 [L] |
1 2 3 4 5 6 | RewriteRule ^!(cbs)/(.*)/(.*)/$ index.php?component=$1&type=$2&id=$3 [L] RewriteRule ^!(cbs)/(.*)/(.*)$ index.php?component=$1&type=$2&id=$3 [L] RewriteRule ^!(cbs)/(.*)/$ index.php?component=$1&type=$2 [L] RewriteRule ^!(cbs)/(.*)$ index.php?component=$1&type=$2 [L] |
Hoe bedoel je dat?quote:Op donderdag 24 januari 2008 16:36 schreef CraZaay het volgende:
Geen idee, maar die eerste 4 regels kunnen prima op 1 regel, moet je alleen even in PHP checken of sommige variabelen leeg zijn
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 | $IsPostback = false; $onderwerp = ""; $bericht = ""; $success = false; if(isset($_POST['Submit'])) { $IsPostback = true; $adressenlijst = "persoon1@adres1.nl, persoon2@adres2.nl"; // vul deze met adressen uit de database! $onderwerp = $_POST['onderwerp']; $bericht = $_POST['bericht']; // werkt alleen met anonymous smtp, HRO: alleen als je op school netwerk zit!, zie anders evt PEAR::Mail $success = @mail($adressenlijst, $onderwerp, $bericht, "From: mailinglist@adres.nl"); // let op dat sommige SMTP servers geen niet bestaande adressen toestaan als afzender } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>mail versturen</title> </head> <body> <?php if($IsPostback) { if ($success) echo '<p class="success">mail succesvol verstuurd. </p>'; else echo '<p class="error">Er is een fout opgetreden bij het versturen van de mail</p>'; } else { ?> <h2>Mail:</h2> <form action="simple_mail.php" Method="Post"> <label>Onderwerp:</label><input type="text" name="onderwerp" /> <br /> <label>Bericht:</label><textarea name="bericht" > </textarea> <br /> <input type="Submit" name="Submit" value="Versturen" /> </form> <?php } ?> </body> </html> |
1 |
1 |
1 2 3 4 5 6 | $resultaat = mysql_query("SELECT email FROM gebruikers002"); while($rij = mysql_fetch_array($resultaat)){ $array[] = $rij['email'].','; } $adressenlijst = implode(",",$array); |
Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?quote:Op donderdag 24 januari 2008 17:19 schreef CraZaay het volgende:
RewriteRule ^!(.*)?/?(.*)?/?(.*)?/?$ index.php?component=$1&type=$2&id=$3 [L]
Misschien niet helemaal correcte syntax, maar zo kan het op 1 regel. Afhankelijk van het aantal componenten zijn 1 of meer variabelen (component, type en/of id) dan leeg.
Die hoort er niet nee. Ik heb gewoon jouw code gecopy-pastequote:Op donderdag 24 januari 2008 18:36 schreef MuRKie het volgende:
[..]
Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?
OKquote:Op donderdag 24 januari 2008 18:48 schreef CraZaay het volgende:
[..]
Die hoort er niet nee. Ik heb gewoon jouw code gecopy-paste
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | // no direct access defined('_ALLOW_ACCESS') or die('Restricted access'); // --- formulier verwerken --- \\ function processForm() { if($_POST['title'] != "" && $_POST['itemID'] != "") { if($_POST['ID'] != "" && fetchType() == "edit") { $varQuery = "UPDATE menuitem "; $varSubQuery = "WHERE ID = '" . mysql_real_escape_string(htmlentities($_POST['ID'])) . "'"; } else if($_POST['ID'] == "" && fetchType() == "new") { $varQuery = "INSERT INTO menuitem"; $varSubQuery = ""; } else { $varComponentResult .= displayComponentResult(retryForm()); exit; } $varQuery .= " SET title = '" . mysql_real_escape_string(htmlentities($_POST['title'])) . "'"; $varQuery .= ", component = '" . mysql_real_escape_string(htmlentities("content")) . "'"; //frontend components moeten nog in de database verwerkt worden. Daarna zal deze functie gemaakt kunnen worden! $varQuery .= ", itemID = '" . mysql_real_escape_string(htmlentities($_POST['itemID'])) . "'"; $varQuery .= ", publish = '" . mysql_real_escape_string(htmlentities($_POST['publish'])) . "'"; $varQuery .= $varSubQuery; $varRun = mysql_query($varQuery) or die(_DATABASE_QUERY_ERROR . " " . mysql_error()); redirect(cmsConfig_siteRoot . 'cbs/?component=menuitem&type=list'); } else { $varComponentResult .= displayComponentResult(retryForm()); return $varComponentResult; } } // --- lijst maken van beschikbare paginas --- \\ function listPages($pageID) { $varQuery = "SELECT ID, title"; $varQuery .= " FROM content"; $varRun = mysql_query($varQuery) or die(_DATABASE_QUERY_ERROR . " " . mysql_error()); $intRecords = mysql_affected_rows(); $varHtml = "\t\t\t\t" . _CMN_PAGES . ":<br />\n"; $varHtml .= "\t\t\t\t<select name=\"itemID\" size= \"" . $intRecords . "\">\n"; while($arrResult = mysql_fetch_assoc($varRun)) { $varHtml .= "\t\t\t\t\t<option value=\"" . $arrResult['ID'] . "\""; if($arrResult['ID'] == $pageID) { $varHtml .= " selected"; } $varHtml .= ">"; $varHtml .= $arrResult['title']; $varHtml .= "</option>\n"; } $varHtml .= "\t\t\t\t</select><br />\n"; return $varHtml; } // --- velden voor nieuw formulier aanmaken --- \\ function newForm() { $arrForm['type'] = "new"; $arrForm['ID'] = ""; $arrForm['title'] = ""; $arrForm['itemID'] = ""; $arrForm['page'] = listPages($arrForm['itemID']); $arrForm['publish'] = ""; $arrForm['submit'] = _CMN_CREATE; return $arrForm; } // --- velden aanmaken voor onvolledig ingevuld formulier --- \\ function retryForm() { $arrForm['type'] = mysql_real_escape_string(htmlentities($_GET['type'])); $arrForm['ID'] = mysql_real_escape_string(htmlentities($_POST['ID'])); $arrForm['title'] = mysql_real_escape_string(htmlentities($_POST['title'])); $arrForm['itemID'] = mysql_real_escape_string(htmlentities($_POST['itemID'])); $arrForm['page'] = listPages($_POST['itemID']); $arrForm['publish'] = mysql_real_escape_string(htmlentities($_POST['publish'])); $arrForm['submit'] = mysql_real_escape_string(htmlentities($_POST['submit'])); return $arrForm; } // --- velden voor wijzigings formulier aanmaken --- \\ function editForm() { $intID = fetchID(); $varQuery = "SELECT ID, title, itemID, publish"; $varQuery .= " FROM menuitem"; $varQuery .= " WHERE ID = '" . $intID . "'"; $varRun = mysql_query($varQuery) or die(_DATABASE_QUERY_ERROR . " " . mysql_error()); $arrResult = mysql_fetch_assoc($varRun); $arrForm['type'] = "edit"; $arrForm['ID'] = $arrResult['ID']; $arrForm['title'] = $arrResult['title']; $arrForm['itemID'] = $arrResult['itemID']; $arrForm['page'] = listPages($arrForm['itemID']); $arrForm['publish'] = $arrResult['publish']; $arrForm['submit'] = _CMN_EDIT; return $arrForm; } // --- formulier opbouwen --- \\ function displayComponentResult($arrForm) { $varHtml = "<form action=\"" . cmsConfig_siteRoot . "cbs/?component=menuitem&type=" . $arrForm['type']; if($arrForm['ID'] != "") { $varHtml .= "&id=" . $arrForm['ID']; } $varHtml .= "\" method=\"post\" name=\"menuitem\">\n"; $varHtml .= "\t\t\t\t<input name=\"ID\" type=\"hidden\" value=\"" . $arrForm['ID'] . "\" />\n"; $varHtml .= "\t\t\t\t" . _CMN_TITLE . ":<br />\n"; $varHtml .= "\t\t\t\t<input name=\"title\" type=\"text\" size=\"25\" maxlength=\"50\" value=\""; $varHtml .= $arrForm['title']; $varHtml .= "\" /><br />\n"; $varHtml .= $arrForm['page']; $varHtml .= "\t\t\t\t" . _CMN_PUBLISH . ":<br />\n"; $varHtml .= "\t\t\t\t<select name=\"publish\">\n"; $varHtml .= "\t\t\t\t\t<option value=\"yes\""; if($arrForm['publish'] == "yes") { $varHtml .= " selected"; } $varHtml .= ">" . _CMN_YES . "</option>\n"; $varHtml .= "\t\t\t\t\t<option value=\"no\""; if($arrForm['publish'] == "no") { $varHtml .= " selected"; } $varHtml .= ">" . _CMN_NO . "</option>\n"; $varHtml .= "\t\t\t\t</select><br />\n"; $varHtml .= "\t\t\t\t<input name=\"submit\" type=\"submit\" value=\"" . $arrForm['submit'] . "\" />\n"; $varHtml .= "\t\t\t</form>\n"; return $varHtml; } // --- functie bepalen --- \\ if(isset($_POST['submit']) && $_POST['submit'] == _CMN_CREATE || $_POST['submit'] == _CMN_EDIT) { $varComponentResult = processForm(); } else if(fetchType() == "edit" && !fetchID()) { redirect(cmsConfig_siteRoot . 'cbs/?component=menuitem&type=list&msg=' . _MSG_NO_ID); } else if(fetchType() == "new") { $varComponentResult = displayComponentResult(newForm()); } else if(fetchType() == "edit") { $varComponentResult = displayComponentResult(editForm()); } ?> |
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 | class MenuItem { protected $ID; protected $title; function __construct() { } function setID($ID) { $this->ID = $ID; } function getID() { return $this->ID; } function setTitle($title) { $this->title = $title; } function getTitle() { return $this->title; } function Display() { $this->setID('7'); $this->setTitle('Test met OOP?'); $html = "ID = " . $this->getID() . "\n"; $html .= "Title = " . $this->getTitle() . "\n"; return $html; } } $test = new MenuItem; $varComponentResult = $test->Display(); ?> |
Hehe, ik haal die 2 ook wel eens door elkaar jaquote:Op vrijdag 25 januari 2008 00:40 schreef Geqxon het volgende:
Oeps! Dat is geen PHP4 backwardscompatibility (Scrabble?), maar een Java trekje.
Dat dus.quote:Op vrijdag 25 januari 2008 00:27 schreef Geqxon het volgende:
Ziet er keurig uit! Wat ik alleen persoonlijk als constructor zou doen:
Zodat je bij het aanmaken van het object direct het ID en de Title meegeeft.
Wat nou als de interne werking van het instellen van de titel opeens anders wordt? Stel je voor dat het instellen van de titel naar een database weggeschreven moet worden. Dan mag je dus overal je source-code aan gaan zitten te passen, in plaats van dat je enkel de setTitle method aan hoeft te passen.quote:Op vrijdag 25 januari 2008 09:15 schreef super-muffin het volgende:
Ik zie trouwens niet in waarom je $Id en $Title niet public maakt. Die Get en Set methods zijn overbodig omdat je toch geen controle of iets uitvoert.
Ja klopt, maar was ook puur ter illustratie van wat ik bedoelde..quote:Op vrijdag 25 januari 2008 08:59 schreef Xcalibur het volgende:
[..]
Dat dus.
Het nut van (de mogelijkheid tot) het zetten van een ID ontgaat me ook een beetje, aangezien je deze nu op een vaste waarde zet ín je class. Het is natuurlijk juist de bedoeling dat je dat vanuit je script doet lijkt me?
Controle komt er nog (als je bedoelt qua gebruikers invoer) en die set en get functies daarover had ik ooit gelezen dat het beter was om de variabelen te setten via een functie en niet direct?quote:Op vrijdag 25 januari 2008 09:15 schreef super-muffin het volgende:
Ik zie trouwens niet in waarom je $Id en $Title niet public maakt. Die Get en Set methods zijn overbodig omdat je toch geen controle of iets uitvoert.
In de uiteindelijke situatie worden de ID en title uit een database gehaald.. Dit wilde ik dan binnen de class regelen. Of is dat raar? En wanneer de gegevens niet uit een database worden gehaald, dan worden ze ingevoerd via een formulier, welke ik ook in de class wilde verwerken.. vandaar dat ik de constructor leeg had gelaten..quote:Op vrijdag 25 januari 2008 00:27 schreef Geqxon het volgende:
Ziet er keurig uit! Wat ik alleen persoonlijk als constructor zou doen:
[ code verwijderd ]
Zodat je bij het aanmaken van het object direct het ID en de Title meegeeft.
Je hebt gelijk, je kan ze best direct getten/setten zonder aparte functies, maar een voordeel van getters en setters gebruiken is dat je dan ook nog andere dingen kan doen - zoals bijv een property "isModified" oid op true zetten als je een veld aanpast. Dat kun je dan weer op andere plekken gebruiken, zoals in een save functie: als er niks gewijzigd is hoef je ook niet op te slaan. Verder is het ook makkeliijk mocht je ooit nog besluiten om de structuur van je object (ingrijpend) aan te passen; met getters en setters hoef je dan alleen die functies aan te passen; als je overal objectvariabelen direct benadert moet je het overal in je code gaan aanpassen.quote:Op vrijdag 25 januari 2008 10:23 schreef MuRKie het volgende:
[..]
Controle komt er nog (als je bedoelt qua gebruikers invoer) en die set en get functies daarover had ik ooit gelezen dat het beter was om de variabelen te setten via een functie en niet direct?
Ja, eigenlijk wel. Lijkt me dat je op basis van het ID het record in de database opzoekt. Dus die kan beter wel gezet worden in de constructor.quote:Op vrijdag 25 januari 2008 11:58 schreef MuRKie het volgende:
[..]
In de uiteindelijke situatie worden de ID en title uit een database gehaald.. Dit wilde ik dan binnen de class regelen. Of is dat raar?
Ja dat is waar, dom van me..quote:Op vrijdag 25 januari 2008 13:03 schreef Farenji het volgende:
[..]
Ja, eigenlijk wel. Lijkt me dat je op basis van het ID het record in de database opzoekt. Dus die kan beter wel gezet worden in de constructor.
Afhankelijk van je php instellingen mag je ook een url gebruiken als include. Daar zou je denk ik wel een get parameter aan mee kunnen geven. Maar las het kan dan is het zeker geen manier die ik zou aanraden.quote:Op zaterdag 26 januari 2008 21:38 schreef kamustra het volgende:
Is het mogelijk om bij het includen van bestand (include_once etc..) een $_GET parameter mee te geven?
Edit: laat maar, nee dus![]()
1 2 3 4 5 6 7 | function includeX($file, $_GET) { include($file); } includeX("test/somescript.php", array('id'=> 2, 'page' => 'test' )) ; ?> |
Leg eens uit waarom je dat zou willen?quote:Op zaterdag 26 januari 2008 21:38 schreef kamustra het volgende:
Is het mogelijk om bij het includen van bestand (include_once etc..) een $_GET parameter mee te geven?
Edit: laat maar, nee dus![]()
Om pagina's te includen? index.php?page=bestel&product=stoel ?quote:Op zondag 27 januari 2008 04:37 schreef Farenji het volgende:
[..]
Leg eens uit waarom je dat zou willen?
get en post etc variabelen worden toch al doorgegeven aan de geincludeerde scripts?quote:Op zondag 27 januari 2008 10:32 schreef Flaccid het volgende:
[..]
Om pagina's te includen? index.php?page=bestel&product=stoel ?
De scope van variabelen loopt gewoon door, ook in geinclude bestanden. Bijv:quote:Op zondag 27 januari 2008 10:32 schreef Flaccid het volgende:
[..]
Om pagina's te includen? index.php?page=bestel&product=stoel ?
1 2 3 4 5 | var $poep = "vies"; include("bar.php"); ?> |
1 2 3 | print $poep; ?> |
Behalve als je een bestand include via een urlquote:Op zondag 27 januari 2008 13:58 schreef Farenji het volgende:
De scope van variabelen loopt gewoon door, ook in geinclude bestanden. Bijv:
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // --- Pagina retourneren --- \\ function displayPage() { switch (fetchPage()) { case fetchPage(): require('includes/' . fetchPage() . '.php'); break; default: require('includes/content.php'); } return $result; } ?> |
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 | // no direct access defined('_ALLOW_ACCESS') or die('Restricted access'); class GuestBook { protected $ID; protected $message; protected $name; protected $fullItem = array(); function __construct() { } function fetchMessages() { $query = "SELECT ID, message, name "; $query .= "FROM guestbook"; $run = mysql_query($query) or die('Bericht is niet opgehaald'); while($result = mysql_fetch_assoc($run)) { $this->storeMessage($result['ID'], $result['message'], $result['name']); } } function storeMessage($ID, $message, $name) { $html = "<div>#" . $ID . " - geschreven door: " . $name; $html .= "<br />"; $html .= $message; $html .= "<br />"; $html .= "<br />"; $this->fullItem[] = $html; } function displayGuestBook() { $html = ""; foreach($this->fullItem as $item) { $html .= $item; } return $html; } } $guestBook = new GuestBook; $guestBook->fetchMessages(); $result = $guestBook->displayGuestBook(); ?> |
1 2 3 4 5 6 7 8 | $page = fetchPage(): if (!empty($page)) { require('includes/' . $page . '.php'); } else { require('includes/content.php'); } ?> |
Ja had ik net ook naar gekeken maar dat haalt opzich niet veel uit.. FetchPage() geeft altijd wat terug.. als $_GET['page'] niet gedeclareerd is geeft hij "content" terug als page..quote:Op zondag 27 januari 2008 17:15 schreef Dreammaster het volgende:
de class wordt waarschijnlijk in de functie fetchPage() gedeclareerd. deze functie roep je al aan bij de switch en dan bij case weer... ik snap trouwens ook niet waarom je een switch statement gebruikt is de onderstaande code niet veel simpeler? Je switch statement zal trouwens ook nooit de content.php requiren.
[ code verwijderd ]
1 2 3 | require('includes/' . fetchPage() . '.php'; ?> |
Nee maar heb inmiddels al wel gevonden wat dat was..quote:Op zondag 27 januari 2008 17:22 schreef Dreammaster het volgende:
als de functie altijd iets returned dan kan dat inderdaad... maar is je fatal-error hiermee opgelost?
1 2 3 | $page = displayPage(); ?> |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | // no direct access defined('_ALLOW_ACCESS') or die('Restricted access'); class GuestBook { protected $ID; protected $name; protected $message; protected $theDate; protected $error; protected $fullItem = array(); function __construct() { $this->setError(false); } function setID($ID) { $this->ID = mysql_real_escape_string(htmlentities($ID)); } function fetchID() { return $this->ID; } function setName($name, $error) { $this->name['value'] = mysql_real_escape_string(htmlentities($name)); $this->name['error'] = $error; } function fetchName() { return $this->name['value']; } function fetchNameError() { return $this->name['error']; } function setMessage($message, $error) { $this->message['value'] = mysql_real_escape_string(htmlentities($message)); $this->message['error'] = $error; } function fetchMessage() { return $this->message['value']; } function fetchMessageError() { return $this->message['error']; } function setDate($theDate) { $this->theDate = $theDate; } function fetchDate() { return $this->theDate; } function setError($error) { $this->error = $error; } function fetchError() { return $this->error; } function listMessages() { $query = "SELECT ID, message, name, date "; $query .= "FROM guestbook "; $query .= "ORDER BY `ID` ASC "; //$query .= "LIMIT 0 , 30"; $run = mysql_query($query) or die('Berichten zijn niet opgehaald!<br /><i>' . mysql_error() . '</i>'); $numb = 1; while($result = mysql_fetch_assoc($run)) { $this->storeMessage($numb, $result['message'], $result['name'], $result['date']); $numb++; } } function storeMessage($ID, $message, $name, $date) { $html = "<div>#" . $ID . " - geschreven door: " . $name . " op " . $date; $html .= "<br />"; $html .= $message; $html .= "<br />"; $html .= "<br />"; $this->fullItem[] = $html; } function processForm() { $this->setDate(date('l, d F Y - H:i:s')); if($_POST['name'] != "") { $this->setName($_POST['name'], ''); } else { $this->setName($_POST['name'], 'Vergeten je naam in te vullen!'); $this->setError(true); } if($_POST['message'] != "") { $this->setMessage($_POST['message'], ''); } else { $this->setMessage($_POST['message'], 'Vergeten een berichtje in te vullen!'); $this->setError(true); } if($this->fetchError() == false) { $query = "INSERT INTO guestbook "; $query .= "SET message = '" . $this->fetchMessage() . "', name = '" . $this->fetchName() . "', date = '" . $this->fetchDate() . "'"; $run = mysql_query($query) or die('Invoeren niet gelukt!<br /><i>' . mysql_error() . '</i>'); header('Location: ' . cmsConfig_siteRoot . 'page/guestbook/view'); } } function displayWrite() { $html .= "<form action=\"" . cmsConfig_siteRoot . "page/guestbook/add\" method=\"post\" name=\"sendMessage\">"; $html .= "<table>\n"; $html .= "<tr>\n"; $html .= "<td>Naam: <input name=\"name\" type=\"text\" size=\"10\" value=\"" . $this->fetchName() . "\" maxlength=\"50\" />" . $this->fetchNameError() . "</td>\n"; $html .= "</tr>"; $html .= "<tr>"; $html .= "<td>Bericht: <textarea name=\"message\" cols=\"20\" rows=\"5\">" . $this->fetchMessage() . "</textarea>" . $this->fetchMessageError() . "</td>"; $html .= "</tr>"; $html .= "<tr>"; $html .= "<td><input name=\"submit\" type=\"submit\" value=\"Versturen!\"></td>"; $html .= "</tr>"; $html .= "</table>"; $html .= "</form>"; return $html; } function displayGuestBook() { $this->listMessages(); $html = ""; foreach($this->fullItem as $item) { $html .= $item; } $html .= $this->displayWrite(); return $html; } } $guestBook = new GuestBook(); if(fetchType() == "add") { if(isset($_POST['submit'])) { $guestBook->processForm(); } } $result = $guestBook->displayGuestBook(); ?> |
Persoonlijk vind ik dingen als ditquote:Op zondag 27 januari 2008 17:31 schreef MuRKie het volgende:
[..]
Nee maar heb inmiddels al wel gevonden wat dat was..
Er stond in de index.php nog het volgende:
[ code verwijderd ]
terwijl ik die al niet meer gebruikte.. Dus daar werd hij al eerder aangeroepen dan dat eigenlijk moest..
Heb dus beide nu aangepast..
Ik ben nu alsvolgt bezig met het gastenboek. Ik wilde alleen van jullie weten of dit correct OOP gebruik is, aangezien ik nog 0 ervaring met OOP heb.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | function setDate($theDate) { $this->theDate = $theDate; } function fetchDate() { return $this->theDate; } ?> |
alleen nutteloze extra regels code..? dat vond ik ook steeds meer.. ik had dit ooit ergens gezien en las dat het zo het beste was. ikzelf ben steeds meer gaan vinden dat het overbodige code is..quote:Op zondag 27 januari 2008 21:49 schreef Thomass het volgende:
[..]
Persoonlijk vind ik dingen als dit
[ code verwijderd ]
vrij nutteloos, als je de variabelenaam gewoon een heldere naam geeft dan zijn die get/set methoden echt niet nodig
hoe bedoel je dat? zoals ik dat heb gedaan, in strings?quote:Op zondag 27 januari 2008 23:02 schreef Xcalibur het volgende:
ik vind getters en setters op zich wel netter, maar vooral in de code waarin je ze gebruikt
Het gebruik van HTML in je PHP (en dan nog in een class ook) vind ik ranzig trouwens!
1 2 3 | .= "hier de rest " .= "hier nog meer "; |
Daarmee veeg je je argument om geen HTML in je PHP te stoppen aardig van tefelquote:Op zondag 27 januari 2008 23:15 schreef Xcalibur het volgende:
Het punt van html in je PHP is dat je al je code na kan gaan lopen als je je lay-out wilt veranderen. En eigenlijk wil je dan alleen je CSS aanpassen, want daar is het voor
Werkt dat? De punt (dus niet ".=") is immers genoeg?quote:Op zondag 27 januari 2008 23:18 schreef Xcalibur het volgende:
trouwens, het gebruik van de strings zoals jij doet is wat mij betreft niks mis mee, hoewel het wel wat efficienter kan:
[ code verwijderd ]
Dan hoef je niet steeds de variabele-naam te herhalen, vind ik wel zo overzichtelijk
Let op de puntkomma die alleen aan het einde staat!
maar je zal toch altijd wat html in je php houden? ik heb nu meer html gebruikt dan ik uiteindelijk nodig heb maar das puur voor tijdens het ontwikkelen.. uiteindelijk bepaal i alle opmaak in een template en een css. maar in de php zal je dan toch altijd nog je menu in een ul moeten stoppen of je tekst in een div? of zie ik dat nu verkeerd?quote:Op zondag 27 januari 2008 23:15 schreef Xcalibur het volgende:
de PHP in de phpbestanden, de HTML in de template bestanden, strict gescheiden dus
En alle opmaak in CSS bestanden natuurlijk.
Ik gebruik zelf Smarty als template engine, werkt erg prettig vind ik. Er zijn een heleboel alternatieven in omloop, inclusief het nodige zelfbouw wat ik hier voorbij zie komen...
Het punt van html in je PHP is dat je al je code na kan gaan lopen als je je lay-out wilt veranderen. En eigenlijk wil je dan alleen je CSS aanpassen, want daar is het voor
oh, ik doe het altijd zoquote:Op zondag 27 januari 2008 23:19 schreef CraZaay het volgende:
Werkt dat? De punt (dus niet ".=") is immers genoeg?
Neehoor, dat hoeft niet. Je kunt al je informatie in variabelen / arrays stoppen, en die in de template weer uitlezen. In de template ontkom je natuurlijk niet aan wat if's en loopjes, maar veel spannenders is daar verder niet nodigquote:Op zondag 27 januari 2008 23:21 schreef MuRKie het volgende:
maar in de php zal je dan toch altijd nog je menu in een ul moeten stoppen of je tekst in een div? of zie ik dat nu verkeerd?
Ik wist niet eens dat het valide syntax was op deze manierquote:Op zondag 27 januari 2008 23:21 schreef Xcalibur het volgende:
[..]
oh, ik doe het altijd zo
alleen een punt zou ook wel moeten werken inderdaad, ik vind zelf de = erbij wel prettig, gewoon visueel
ik wist dat inderdaad ook niet, variabelen plak ik normaal ook aan elkaar met . en niet met .= wanneer ik ze op 1 regel plaats, maar wanneer ik het op meerdere regels schrijf dan doe ik het weer met .= en de variabelenaam ervoor..quote:Op zondag 27 januari 2008 23:31 schreef CraZaay het volgende:
[..]
Ik wist niet eens dat het valide syntax was op deze manierDacht altijd dat je ".=" alleen mocht gebruiken met een variabele ervoor.
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | // no direct access defined('_ALLOW_ACCESS') or die('Restricted access'); class GuestBook { var $ID; var $name; var $message; var $theDate; var $error; var $fullItem = array(); var $currentPage; var $limit; var $totalRows; var $totalPages; var $number; var $first; var $last; function __construct() { $this->error = false; $this->limit = 5; } function listMessages() { if(isset($_GET['itemID'])) { $this->currentPage = $_GET['itemID']; } else { $this->currentPage = 1; } $query = "SELECT ID, message, name, date " . "FROM guestbook " . "ORDER BY `ID` DESC"; $subQuery = " LIMIT " . (($this->currentPage - 1) * $this->limit) . " , " . $this->limit . ""; $fullQuery = $query . $subQuery; $run = mysql_query($fullQuery) or die('Berichten zijn niet opgehaald!<br /><i>' . mysql_error() . '</i>'); $this->totalRows = mysql_num_rows(mysql_query($query)); $this->totalPages = ceil($this->totalRows / $this->limit); if($this->currentPage != 1) { $this->number = (($this->currentPage - 1) * $this->limit); $this->number = $this->number+1; } else { $this->number = 1; } //$this->number = $this->number+1; while($result = mysql_fetch_assoc($run)) { $this->storeMessage($this->number, $result['message'], $result['name'], $result['date']); $this->number++; } } // the actual function function pageNav($cpage,$totalrows,$totalpages) { // configuration $split_begin = "[ "; $split = " ] [ "; $split_end = " ]"; // begin-, split- , end-signs $url = cmsConfig_siteRoot . "page/guestbook/view"; // change, always end $url with a '?' or '&', url will be followed by cpage=<pagenumber> // DON'T CHANGE ANYTHING ELSE BELOW THIS LINE!!! // previous generator if($totalpages != 1) { $prevPage = $cpage - 1; if($prevPage < 1) { $prev = "<span ".$n_a.">««</span>".$split."<span ".$n_a.">« previous</span>".$split; } else { $prev = "<a href='".$url."/1' title='begin'>««</a>".$split."<a href='".$url."/".$prevPage."' title='previous page'>« previous</a>".$split; } } $start = 1; // page numbers generator $pages = ""; // preventing an error notice! for($i = 0; $i < $totalpages; $i++) { if($start != $cpage) { $pages .= "<a href='".$url."/".$start."'>".$start."</a>"; } else { $pages .= "<b>".$start."</b>"; } if($i < ($totalpages - 1)) { $pages .= $split; } else { break; } $start++; } // next generator if($totalpages != 1) { $nextPage = $cpage + 1; if($nextPage > $totalpages) { $next = $split . "<span>next »</span>".$split."<span>»»</span>"; } else { $next = $split . "<a href='" . $url . "/" . $nextPage . "' title='next page'>next »</a>" . $split . "<a href='" . $url . "/" . $totalpages . "' title='end'>»»</a>"; } } return $split_begin . $prev . $pages . $next . $split_end; } function storeMessage($ID, $message, $name, $date) { $html = "<div>#" . $ID . " - geschreven door: " . $name . " op " . $date . "<br />" . $message . "<br />" . "<br />"; $this->fullItem[] = $html; } function processForm() { $this->theDate = date('l, d F Y - H:i:s'); if($_POST['name'] != "") { $this->name['value'] = mysql_real_escape_string(htmlentities($_POST['name'])); $this->name['error'] = ''; } else { $this->name['value'] = mysql_real_escape_string(htmlentities($_POST['name'])); $this->name['error'] = 'Vergeten je naam in te vullen!'; $this->error = true; } if($_POST['message'] != "") { $this->message['value'] = mysql_real_escape_string(htmlentities($_POST['message'])); $this->message['error'] = ''; } else { $this->message['value'] = mysql_real_escape_string(htmlentities($_POST['message'])); $this->message['error'] = 'Vergeten een berichtje in te vullen!'; $this->error = true; } if($this->error == false) { $query = "INSERT INTO guestbook " . "SET message = '" . $this->message['value'] . "', name = '" . $this->name['value'] . "', date = '" . $this->theDate . "'"; $run = mysql_query($query) or die('Invoeren niet gelukt!<br /><i>' . mysql_error() . '</i>'); header('Location: ' . cmsConfig_siteRoot . 'page/guestbook/view/'); } } function displayWrite() { $html = "<form action=\"" . cmsConfig_siteRoot . "page/guestbook/add\" method=\"post\" name=\"sendMessage\">" . "<table>\n" . "<tr>\n" . "<td>Naam: <input name=\"name\" type=\"text\" size=\"10\" value=\"" . $this->name['value'] . "\" maxlength=\"50\" />" . $this->name['error'] . "</td>\n" . "</tr>" . "<tr>" . "<td>Bericht: <textarea name=\"message\" cols=\"20\" rows=\"5\">" . $this->message['value'] . "</textarea>" . $this->message['error'] . "</td>" . "</tr>" . "<tr>" . "<td><input name=\"submit\" type=\"submit\" value=\"Versturen!\"></td>" . "</tr>" . "</table>" . "</form>"; return $html; } function displayGuestBook() { $this->listMessages(); $html = ""; foreach($this->fullItem as $item) { $html .= $item; } $html .= $this->pageNav($this->currentPage, $this->totalRows, $this->totalPages); $html .= $this->displayWrite(); return $html; } } $guestBook = new GuestBook(); if(fetchType() == "add") { if(isset($_POST['submit'])) { $guestBook->processForm(); } } $result = $guestBook->displayGuestBook(); ?> |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | -- version 2.6.4-pl1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generatie Tijd: 28 Jan 2008 om 19:51 -- Server versie: 5.0.45 -- PHP Versie: 4.2.3 -- -- Database: `stat` -- -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `stat` -- CREATE TABLE `stat` ( `id` int(4) NOT NULL auto_increment, `name` varchar(32) NOT NULL default '', `user_id` int(11) NOT NULL default '0', `title` varchar(75) NOT NULL default '', `referer` varchar(75) NOT NULL default '', `active` tinyint(1) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `stat_user` -- CREATE TABLE `stat_user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL default '', `password` varchar(64) NOT NULL default '', `user_level` tinyint(1) NOT NULL default '0', `last_login` datetime NOT NULL default '0000-00-00 00:00:00', KEY `id` (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statcounts` -- CREATE TABLE `statcounts` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `pid` int(4) NOT NULL default '0', `year` varchar(4) NOT NULL default '', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`), KEY `sid` (`sid`,`pid`,`year`) ) ENGINE=MyISAM AUTO_INCREMENT=28648 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statdate` -- CREATE TABLE `statdate` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `day` char(2) NOT NULL default '', `weekday` char(2) NOT NULL default '', `week` char(2) NOT NULL default '', `month` char(2) NOT NULL default '', `year` varchar(4) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`), KEY `sid` (`sid`,`month`,`year`) ) ENGINE=MyISAM AUTO_INCREMENT=634 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statip` -- CREATE TABLE `statip` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `lastdate` varchar(10) default NULL, `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`), KEY `value` (`value`) ) ENGINE=MyISAM AUTO_INCREMENT=27411 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statkeywords` -- CREATE TABLE `statkeywords` ( `sid` tinyint(4) NOT NULL default '0', `search_id` int(11) NOT NULL default '0', `year` varchar(4) NOT NULL default '', `lastupdate` datetime NOT NULL default '0000-00-00 00:00:00', `keyword` varchar(25) NOT NULL default '', `count` bigint(20) NOT NULL default '0', KEY `sid` (`sid`,`search_id`,`year`,`keyword`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statlast` -- CREATE TABLE `statlast` ( `id` bigint(20) NOT NULL auto_increment, `sid` tinyint(4) NOT NULL default '0', `lasttime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `date` datetime NOT NULL default '0000-00-00 00:00:00', `ip` varchar(15) NOT NULL default '', `host` varchar(255) NOT NULL default '', `referer` varchar(255) NOT NULL default '', `os` varchar(75) NOT NULL default '', `browser` varchar(75) NOT NULL default '', `country` varchar(75) NOT NULL default '', `color` varchar(75) NOT NULL default '', `resolution` varchar(75) NOT NULL default '', KEY `id` (`id`,`sid`) ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statreferer` -- CREATE TABLE `statreferer` ( `sid` int(4) NOT NULL default '0', `lastvisit` datetime NOT NULL default '0000-00-00 00:00:00', `value` varchar(255) NOT NULL default '', `count` bigint(20) NOT NULL default '0', `type` enum('I','E') NOT NULL default 'I', KEY `sid` (`sid`,`value`,`type`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `statsearchengine` -- CREATE TABLE `statsearchengine` ( `id` int(11) NOT NULL auto_increment, `year` varchar(4) NOT NULL default '', `title` varchar(64) NOT NULL default '', KEY `id` (`id`), KEY `year` (`year`,`title`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; |
Dat gevoel had ik al.. Ik was in ieder geval blij dat het werktequote:Op maandag 28 januari 2008 19:47 schreef super-muffin het volgende:
Dit is niet heel erg OOP. Meer losse functies verzamelen in een klasse.Je hebt nu de verwerking en presentatie in de zelfde klasse zitten wat niet hoort imho.
Da's wel een beetje een achterhaalde versie...quote:Op maandag 28 januari 2008 19:52 schreef Chandler het volgende:
Ik heb een vraag over mijn database structuur van mijn statistieken script
-- PHP Versie: 4.2.3
1 |
1 2 3 4 5 | FROM `shop_favorites` INNER JOIN `shop_products` ON `id` = shop_products.productID WHERE shop_favorites.UID = '.$_SESSION['uid'].' ORDER BY shop_products.name |
1 2 3 4 5 6 7 8 9 10 11 12 | shop_products.id, shop_products.name, shop_products.group, shop_products.title, shop_products.short_desc, shop_products.etcetcetc, FROM shop_favorites LEFT JOIN shop_products ON shop_products.id = shop_favorites.productID WHERE shop_favorites.userID = '" . $_SESSION['UID'] . " GROUP BY shop_favorites.userID ORDER BY shop_favorites.date_created ASC |
Waarom de complete tabel naam?quote:Op maandag 28 januari 2008 20:57 schreef Chandler het volgende:
1 tip voordat je gaat werken met meerdere tabellen!
- Geef alle namen in een Select indien je met meerdere tabellen gaat werken ook de naam van de tabel (over noemer daar van) mee oftewel shop_favorites.productID ;)
een voorbeeld
[ code verwijderd ]
Het is een voorbeeld waarin ik een tabel JOIN naarna groepeer je bij een ID veld in een van de 2 tabellen en sorteer je de uitkomst middels ook een van de 2 tabellen en daar een veld van :)
naja ik hoop dat je het snapt ;) ik iig wel :P maar goed...
succes!.
1 2 3 | SELECT a.org, b.contact FROM org a, contact b ?> |
Bedankt! Het is gelukt, het is geworden:quote:Op maandag 28 januari 2008 20:57 schreef Chandler het volgende:
1 tip voordat je gaat werken met meerdere tabellen!
- Geef alle namen in een Select indien je met meerdere tabellen gaat werken ook de naam van de tabel (over noemer daar van) mee oftewel shop_favorites.productID ;)
een voorbeeld
[ code verwijderd ]
Het is een voorbeeld waarin ik een tabel JOIN naarna groepeer je bij een ID veld in een van de 2 tabellen en sorteer je de uitkomst middels ook een van de 2 tabellen en daar een veld van :)
naja ik hoop dat je het snapt ;) ik iig wel :P maar goed...
succes!.
1 2 3 | LEFT JOIN shop_items ON shop_items.id = shop_favorites.productID WHERE shop_favorites.UID = '" . $_SESSION['UID'] . "' ORDER BY shop_items.name ASC |
Beter of handiger of duidelijer? tis maar net wat je zelf het makkelijkste vindquote:Op maandag 28 januari 2008 22:03 schreef JortK het volgende:
[..]
Waarom de complete tabel naam?
Aliassen is toch een veel beter idee?
Like:
[ code verwijderd ]
?
Dit vind ik altijd hoogst onduidelijk....quote:Op maandag 28 januari 2008 22:03 schreef JortK het volgende:
Waarom de complete tabel naam?
Aliassen is toch een veel beter idee?
Door aliassen te maken worden er temporary tables aangemaakt, en wordt het een stuk trager van.quote:Op maandag 28 januari 2008 22:03 schreef JortK het volgende:
[..]
Waarom de complete tabel naam?
Aliassen is toch een veel beter idee?
Like:
[ code verwijderd ]
?
Dat wist ik ook nietquote:Op dinsdag 29 januari 2008 11:21 schreef Dreammaster het volgende:
[..]
Door aliassen te maken worden er temporary tables aangemaakt, en wordt het een stuk trager van.
Ja aliassen zijn ook smerig. Ik gebruik het alleen als het niet anders kan.quote:Op dinsdag 29 januari 2008 11:53 schreef Chandler het volgende:
[..]
Dat wist ik ook nietweer wat geleerd, vind zo ie zo dat aliassen vies zijn, het is imho duidelijker om gewoon de gehele tabelnaam te gebruiken, weet je gelijk wat waar voor dient!
Voor jou misschienquote:Op dinsdag 29 januari 2008 12:38 schreef Geqxon het volgende:
Mwa.
"SELECT c.Name AS CompanyName, e.Name AS EmployeeName FROM company AS c LEFT JOIN employee AS e WHERE e.CompanyID = c.ID"
Is toch wel duidelijk?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |