1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function breadcrumb($id){ $d=connectDB(); $r1=runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID='".$id."'",$d); $pid=mysql_result($r1,0,"parent_ID"); $topic=mysql_result($r1,0,"forum_subject"); $r2=runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID='".$pid."'",$d); $pid2=mysql_result($r2,0,"parent_ID"); $subforum=mysql_result($r2,0,"forum_subject"); $r3=runquery("SELECT forum_subject FROM forum WHERE ID='".$pid2."'",$d); $forum=mysql_result($r3,0,"forum_subject"); $crumb='<a href="forum.php">Griezelforum</a> > '.$forum.': <a href="forum.php?c=forum&id='.$pid.'">'.$subforum.'</a> > '.stripslashes($topic); return $crumb; } ?> |
Dat blijf je altijd houdenquote:Op donderdag 26 juli 2007 16:38 schreef wonderer het volgende:
Dit voelt echt net als iemand een verhaal laten lezenBen echt bang dat er zometeen iemand komt die me keihard uitlacht omdat de code zo knullig is
Met dat verschil dat ik weet dat ik goed verhalen kan schrijven, maar dat mijn codeer-niveau nog in groep drie zit
opgelöst!quote:Op donderdag 26 juli 2007 16:36 schreef qu63 het volgende:
hmz, http://www.w3schools.com/php/php_sessions.asp helpt me wel een beetje verder, maar hoe zorg ik er voor dat ik dezelfde gegevens ook op andere pagina's kan gebruiken?
Pagina 1:quote:Op donderdag 26 juli 2007 16:36 schreef qu63 het volgende:
hmz, http://www.w3schools.com/php/php_sessions.asp helpt me wel een beetje verder, maar hoe zorg ik er voor dat ik dezelfde gegevens ook op andere pagina's kan gebruiken?
1 2 3 4 5 | session_start(); $_SESSION["Voornaam"] = "Dieter"; ?> |
1 2 3 4 5 6 | session_start(); echo $_SESSION["Voornaam"]; // Dieter ?> |
quote:Op donderdag 26 juli 2007 16:40 schreef wonderer het volgende:
Deze is ook wel leuk trouwens:
[ code verwijderd ]
Breadcrumb voor forum->subforum->topic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function breadcrumb($id){ $d = connectDB(); $result = runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID = '" . mysql_real_escape_string($id) . "'"); $topic = mysql_fetch_assoc($result); $result = runquery("SELECT forum_ID, forum_subject, parent_ID FROM forum WHERE ID = '" . $topic['parent_ID'] . "'"); $subforum = mysql_fetch_assoc($result); $result = runquery("SELECT forum_subject FROM forum WHERE ID = '" . $subforum['parent_ID'] . "'"); $forum = mysql_fetch_assoc($result); $breadcrumb_html = '<a href="forum.php">Griezelforum</a> » ' . $forum['forum_subject'] . ': '; $breadcrumb_html .= '<a href="forum.php?c=forum&id='.$subforum['forum_ID'].'">'.$subforum['forum_subject'].'</a> » '; $breadcrumb_html .= stripslashes($topic['forum_subject']); return $breadcrumb_html; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function breadcrumb($id){ $d = connectDB(); $topic = mysql_fetch_assoc(runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID = '" . mysql_real_escape_string($id) . "'",$d)); $subforum = mysql_fetch_assoc(runquery("SELECT forum_ID, forum_subject, parent_ID FROM forum WHERE ID = '" . $topic['parent_ID'] . "'",$d)); $forum = mysql_fetch_assoc(runquery("SELECT forum_subject FROM forum WHERE ID = '" . $subforum['parent_ID'] . "'",$d)); $breadcrumb_html = '<a href="forum.php">Griezelforum</a> » ' . $forum['forum_subject'] . ': '; $breadcrumb_html .= '<a href="forum.php?c=forum&id='.$subforum['forum_ID'].'">'.$subforum['forum_subject'].'</a> » '; $breadcrumb_html .= stripslashes($topic['forum_subject']); return $breadcrumb_html; } ?> |
1 2 3 4 | $format = '<a href="forum.php">Griezelforum</a> » %s <a href="forum.php?c=forum&id=%s">&s</a> » %s'; $breakcrumb_html = sprintf($format, $forum['forum_subject'], $subforum['forum_ID'], $subforum['forum_subject'], stripslashes($topic['forum_subject']);); ?> |
Dat is inderdaad een stuk netter.quote:Op donderdag 26 juli 2007 18:11 schreef super-muffin het volgende:
ik vind de html opbouwen met sprintf() netter dan dit.
[ code verwijderd ]
Waarom? In principe doe je toch hetzelfde? Bij een sprintf moet ik steeds weer opnieuw nadenken wat waar precies komt, op de "normale" manier gaat dat vanzelfquote:Op donderdag 26 juli 2007 18:11 schreef super-muffin het volgende:
ik vind de html opbouwen met sprintf() netter dan dit.
[ code verwijderd ]
Je hebt het hier maar 1 keer nodig, dus vandaar dat ik altijd dezelfde gebruik. Dat is wat netter dan $result_topic en $result_subforum.quote:Op donderdag 26 juli 2007 19:43 schreef wonderer het volgende:
[..]
Geq, ik zie dat je steeds "$result" gebruikt. Geeft dat niet? Dat ie hem overschrijft? Of is dat juist handiger omdat hij dan steeds maar een result in het geheugen heeft zitten in plaats van drie verschillende?
HTML in je code is verre van net. Het hoort er niet. Daar zijn template engines voor.quote:Op donderdag 26 juli 2007 18:11 schreef super-muffin het volgende:
ik vind de html opbouwen met sprintf() netter dan dit.
[ code verwijderd ]
Hm, maar qua performance maakt het niet uit? Ik meen me te herinneren dat ik geleerd heb dat je steeds een nieuwe variabele moet gebruiken. Maar dat is alweer zo lang geleden, misschien heb ik het mezelf wel aangeleerd omdat het ergens een keer fout ging of zo.quote:Op donderdag 26 juli 2007 20:12 schreef Geqxon het volgende:
[..]
Je hebt het hier maar 1 keer nodig, dus vandaar dat ik altijd dezelfde gebruik. Dat is wat netter dan $result_topic en $result_subforum.
Voor zo iets als dit is sprintf misschien wel overdreven, maar over het algemeen is het wel iets netter. Ook wel iets waar ik waarde aan hecht in mijn code.quote:Op donderdag 26 juli 2007 20:08 schreef ralfie het volgende:
ik gebruik het liefste haakjes om mijn strings op te bouwen:
"Hallo {$gebruiker}, je hebt als naam opgegeven {$_GET['naam']}<br/>";
sprintf vind ik een beetje overdreven om zoiets op te bouwen, maarja, whatever floats your boat...
Ook voor een functie die puur gebaseerd voor het outputten van HTML bestaat?quote:Op donderdag 26 juli 2007 20:16 schreef Farenji het volgende:
[..]
HTML in je code is verre van net. Het hoort er niet. Daar zijn template engines voor.
PHP is een prima template enginequote:Op donderdag 26 juli 2007 20:16 schreef Farenji het volgende:
HTML in je code is verre van net. Het hoort er niet. Daar zijn template engines voor.
Het idee van een template engine die gebruik maakt van een sandbox om templates te renderen vind ik toch wat prettiger dan zelf in de gaten te houden welke variabelen er allemaal in het presentatiedeel van m'n applicatie terecht komen (white listing versus black listing van variabelen).quote:Op donderdag 26 juli 2007 20:56 schreef SuperRembo het volgende:
[..]
PHP is een prima template engine
Ja, een template engin kan best handig zijn, afhankelijk van de grootte van het project. Het was vooral een opmerking om aan te geven dat een functie die wat html terug geeft niet per definitie "niet netjes" is.quote:Op donderdag 26 juli 2007 21:08 schreef JeRa het volgende:
[..]
Het idee van een template engine die gebruik maakt van een sandbox om templates te renderen vind ik toch wat prettiger dan zelf in de gaten te houden welke variabelen er allemaal in het presentatiedeel van m'n applicatie terecht komen (white listing versus black listing van variabelen).
Dat ligt eraan wat je serializet. Alle taalelementen van PHP zijn zonder meer in een ASCI-compatible veld op te slaan, maar als jij variabelen met binary data gaat serializen kan het een heel goed idee zijn om een binary safe veld te gebruiken. Sterker nog, ik raad je aan om een binary veld te gebruiken, puur omdat je verder geen character sets oid nodig hebt voor het resultaat van een serialize()quote:Op donderdag 26 juli 2007 21:24 schreef wonderer het volgende:
Als ik met serialize() iets in een tabel wil opslaan, moet dat veld dan binary safe zijn of kan dat ook gewoon text zijn?
Waarschijnlijk een stel arrays (ik sla nu arrays als string met delimiters op, dan is een ge-serialize-de toch wel een stukkie sneller, in plaats van explode dit en join dat enzo) maar als het verder niet uitmaakt, kan ik het net zo goed in binary doen. Met de hand aanpassen in bijv. phpMyAdmin schiet toch niet op.quote:Op donderdag 26 juli 2007 21:34 schreef JeRa het volgende:
[..]
Dat ligt eraan wat je serializet. Alle taalelementen van PHP zijn zonder meer in een ASCI-compatible veld op te slaan, maar als jij variabelen met binary data gaat serializen kan het een heel goed idee zijn om een binary safe veld te gebruiken. Sterker nog, ik raad je aan om een binary veld te gebruiken, puur omdat je verder geen character sets oid nodig hebt voor het resultaat van een serialize()
Hoe moet ik dat black/whitelisten van variablen zien? Zit me af te vragen hoe je zoiets zou doen. Of bedoel je dat je de values van de variablen sanitized?quote:Op donderdag 26 juli 2007 21:08 schreef JeRa het volgende:
[..]
Het idee van een template engine die gebruik maakt van een sandbox om templates te renderen vind ik toch wat prettiger dan zelf in de gaten te houden welke variabelen er allemaal in het presentatiedeel van m'n applicatie terecht komen (white listing versus black listing van variabelen).
De scheiding tussen je model in PHP en je view (ķķk in PHP) vervaagt doordat je voor een goede overgang tussen de twee moet zorgen. Zo kan het dus het geval zijn dat er een losse variabele die je in je model hebt gebruikt terugvindt in je view et vice versa. Door een template engine te gebruiken (zoals Smarty) begin je, waar je het view dan ook aanspreekt in je model, met een lege sandbox waarin je variabelen kunt toevoegen. Die sandbox kun je vervolgens ook netjes debuggen. Ik zie zoiets als preventief fouten voorkomenquote:Op donderdag 26 juli 2007 21:40 schreef slakkie het volgende:
[..]
Hoe moet ik dat black/whitelisten van variablen zien? Zit me af te vragen hoe je zoiets zou doen. Of bedoel je dat je de values van de variablen sanitized?
Preciesquote:Op donderdag 26 juli 2007 21:43 schreef JeRa het volgende:
[..]
De scheiding tussen je model in PHP en je view (ķķk in PHP) vervaagt doordat je voor een goede overgang tussen de twee moet zorgen. Zo kan het dus het geval zijn dat er een losse variabele die je in je model hebt gebruikt terugvindt in je view et vice versa. Door een template engine te gebruiken (zoals Smarty) begin je, waar je het view dan ook aanspreekt in je model, met een lege sandbox waarin je variabelen kunt toevoegen. Die sandbox kun je vervolgens ook netjes debuggen. Ik zie zoiets als preventief fouten voorkomen
1 2 3 4 5 | <select name="user_timezone"> echo drawDropdownItems($timezone_array,$user['Timezone']); </select> ?> |
Daar hebben ze toch CSS voor uitgevonden?quote:Op donderdag 26 juli 2007 22:10 schreef WyriHaximus het volgende:
[..]
Precies. Template engines besparen je zo veel werk. o.a. omdat je heel erg makkelijk designs en indelingen kunt veranderen etc zonder je code te moeten aanpassen
.
Meer is het eigenlijk ook niet he.quote:Op donderdag 26 juli 2007 20:56 schreef SuperRembo het volgende:
[..]
PHP is een prima template engine
Niet alles kan met CSSquote:Op donderdag 26 juli 2007 22:22 schreef wonderer het volgende:
[..]
Daar hebben ze toch CSS voor uitgevonden?
template engines doe ik wel voor versie 4 van deze site. Zoiets als geqxon doe ik ook regelmatig, maar alleen als ik die bepaalde dropdown vaker dan eenmaal nodig heb.
Begreep juist tijdens mijn cursus dat XSLT het 2 jaar geleden leek te worden, maar dat het niet on voldoen aan de verwachtingen en dat Smarty die plaats nu heeft ingenomen. In het boek staat dan nog wel XSLT beschreven, maar is uit de cursus zelf geschrapt en vervangen door Smarty..quote:Op donderdag 26 juli 2007 23:11 schreef WyriHaximus het volgende:
[..]
Niet alles kan met CSS. Maar als je echt dat kant op wil dat je document alleen maar data bestaat en design in andere dan moet je eens naar XML en XLST (ofzo) kijken
. Mooi voorbeeldje daar van is me wow char in de armory van blizzard:
http://armory.wow-europe.com/character-sheet.xml?r=Skullcrusher&n=Wyrihaximus
Tsja XSLT is gewoon nog traag. Smarty (en andere template engines) is stuk rapper is mijn ervaringquote:Op donderdag 26 juli 2007 23:19 schreef ursel het volgende:
[..]
Begreep juist tijdens mijn cursus dat XSLT het 2 jaar geleden leek te worden, maar dat het niet on voldoen aan de verwachtingen en dat Smarty die plaats nu heeft ingenomen. In het boek staat dan nog wel XSLT beschreven, maar is uit de cursus zelf geschrapt en vervangen door Smarty..
XML daarentegen is er nog wel..
En alleen daarom is het een goed idee om een template engine te gebruikenquote:Op vrijdag 27 juli 2007 10:18 schreef Farenji het volgende:
Het maakt ook weinig uit als je gewoon dingen voor jezelf maakt idd. Maar zodra je applicaties groter worden dan een paar scriptjes die bij elkaar horen dan wordt het iets anders dan "het hoort zo" maar dan wordt het "als je het niet doet kom je uiteindelijk zwaar in de shit". Ik heb een keer een grote applicatie moeten onderhouden waarvan de php vol stond met (non-css) html incl presentatietags. En toen ging het bedrijf over op een nieuwe huisstijl dus moest alles omgegooid worden. Dat was echt kut met peren vooral omdat het toen al veel te laat was om alsnog op een template engine over te gaan.
Herkenbaar. Sindsdien gebruik ik ten allen tijde mijn eigen template engine, en nog belangrijker: ik zet ALLES, maar dan ook ALLES wat enigzins configureerbaar is in constanten.quote:Op vrijdag 27 juli 2007 10:18 schreef Farenji het volgende:
Het maakt ook weinig uit als je gewoon dingen voor jezelf maakt idd. Maar zodra je applicaties groter worden dan een paar scriptjes die bij elkaar horen dan wordt het iets anders dan "het hoort zo" maar dan wordt het "als je het niet doet kom je uiteindelijk zwaar in de shit". Ik heb een keer een grote applicatie moeten onderhouden waarvan de php vol stond met (non-css) html incl presentatietags. En toen ging het bedrijf over op een nieuwe huisstijl dus moest alles omgegooid worden. Dat was echt kut met peren vooral omdat het toen al veel te laat was om alsnog op een template engine over te gaan.
Heb je voorbeeldje van wat naar wat je wilt hebben?quote:Op vrijdag 27 juli 2007 15:00 schreef Xcalibur het volgende:
Hoe goed zijn jullie met mod_rewrite?
Ik probeer namelijk een of meer characters in m'n URL te replacen voordat ik em ga rewriten ( / (slash) door _ (underscore). Maar daar lijkt mod_rewrite niet zo op gebouwd te zijn. Nu is het mogelijk met rewriteMap, maar daar heb ik weer een apart txt-bestandje voor nodig, en dat vind ik niet mooi
Kan dit makkelijker? Bij voorkeur in m'n .htaccess
Daar heb ik een settings-tabel in de database voor. Waarbij alles via getSetting($instelling) op te vragen is.quote:Op vrijdag 27 juli 2007 15:19 schreef Scorpie het volgende:
[..]
Herkenbaar. Sindsdien gebruik ik ten allen tijde mijn eigen template engine, en nog belangrijker: ik zet ALLES, maar dan ook ALLES wat enigzins configureerbaar is in constanten.
1 |
Ik gebruik liever een configfile, omdat je niet altijd een database hebt, en de configvariabelen over het algemeen niet veranderenquote:Op vrijdag 27 juli 2007 15:51 schreef Geqxon het volgende:
Daar heb ik een settings-tabel in de database voor. Waarbij alles via getSetting($instelling) op te vragen is.
Mwa, userfriendly wil ik het niet noemen, om over de snelheid maar te zwijgen. Het is toch niet zoveel werk om een formulier in elkaar te knutsellen waar gebruikers deze opties kunnen wijzigen?quote:Op vrijdag 27 juli 2007 15:53 schreef Xcalibur het volgende:
[..]
Ik gebruik liever een configfile, omdat je niet altijd een database hebt, en de configvariabelen over het algemeen niet veranderen
Hmmm dit moet nog voor mod_rewrite gebeuren of tijdens PHP of nog voor mod_rewrite, want dat was me nog niet helemaal duidelijkquote:Op vrijdag 27 juli 2007 15:52 schreef Xcalibur het volgende:
Gewoon alle slashes vervangen door underscores
[ code verwijderd ]
De verdere mod_rewrite afhandeling werkt prima...
Ik gebruik het allebei, configfile voor de statische instellingen zoals database gegevens, en een tabel in de db voor de dynamische instellingen die aangepast moeten kunnen worden. En beide lees ik in in een Config class wat een singleton is die overal aan te roepen is.quote:Op vrijdag 27 juli 2007 15:53 schreef Xcalibur het volgende:
[..]
Ik gebruik liever een configfile, omdat je niet altijd een database hebt, en de configvariabelen over het algemeen niet veranderen
Een config class om de configuratie op te vragen? Voor iets dat in vijf regeltjes code kan?quote:Op vrijdag 27 juli 2007 16:56 schreef Farenji het volgende:
[..]
Ik gebruik het allebei, configfile voor de statische instellingen zoals database gegevens, en een tabel in de db voor de dynamische instellingen die aangepast moeten kunnen worden. En beide lees ik in in een Config class wat een singleton is die overal aan te roepen is.
Een configfile lees je natuurlijk maar 1 keer in, bij initialisatie, en dan stop je alles in een object waarna je het gewoon uit het geheugen trekt. Dat is echt geen performanceissue... van sommige configvars wil je toch niet dat users ze kunnen zien laat staan wijzigen.quote:Op vrijdag 27 juli 2007 16:08 schreef Geqxon het volgende:
[..]
Mwa, userfriendly wil ik het niet noemen, om over de snelheid maar te zwijgen. Het is toch niet zoveel werk om een formulier in elkaar te knutsellen waar gebruikers deze opties kunnen wijzigen?
Die config class hoeft ook niet groot te zijn. Maar je wil het wel scheiden in een object, in een aparte namespace dus, met een uniforme interface om vars uit te lezen, en dynamische vars aan te passen.quote:Op vrijdag 27 juli 2007 16:59 schreef Geqxon het volgende:
[..]
Een config class om de configuratie op te vragen? Voor iets dat in vijf regeltjes code kan?
Dat kan net zo userfriendly zijn als via een database, het ligt maar net aan de vereisten.quote:Op vrijdag 27 juli 2007 16:08 schreef Geqxon het volgende:
[..]
Mwa, userfriendly wil ik het niet noemen,
Wat?quote:om over de snelheid maar te zwijgen.
1 config class in 5 regelsquote:Op vrijdag 27 juli 2007 16:59 schreef Geqxon het volgende:
[..]
Een config class om de configuratie op te vragen? Voor iets dat in vijf regeltjes code kan?
1 2 3 4 5 6 7 | class config_class { function __construct() { self::_settings = unserialize(file_get_contents('config file')); } function get_settings($index) { return self::_settings[$key]; } } ?> |
Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.quote:Op vrijdag 27 juli 2007 17:09 schreef JeRa het volgende:
Wat?Ga jij nu beweren dat een include trager is dan alle opties via een functie uit de database te trekken?
I/O actie:quote:Op vrijdag 27 juli 2007 17:13 schreef Geqxon het volgende:
[..]
Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.
Net zoals bij een database heb je maar één keer schijfoverhead doordat daarna de block cache de read kan opvangen. Verder heb je deze additionele overhead bij de database:quote:Op vrijdag 27 juli 2007 17:13 schreef Geqxon het volgende:
[..]
Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.
bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)quote:Op vrijdag 27 juli 2007 17:18 schreef WyriHaximus het volgende:
[..]
I/O actie:Hit naar het bestand Bestand in 1 ruk uitlezen
SQL:Connectie openen naar de server Autenticeren Database selecteren Query opdracht geven - Hit naar de tabel bestanden - Door het bestand gaan zoeken - Results samen stellen en dusnoods sorteren Results van de database ontvagen
Weet niet zeker maar gok dat database toch trager is...
Heb het er al bij gezetquote:Op vrijdag 27 juli 2007 17:20 schreef mschol het volgende:
[..]
bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)
Die database zal in eerste instantie toch echt iets van de harde schijf moeten halen, en na de eerste I/O-actie bij een include zit de boel in de block cachequote:Op vrijdag 27 juli 2007 17:20 schreef mschol het volgende:
[..]
bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)
En je database settings, waar sla je die op?quote:Op vrijdag 27 juli 2007 15:51 schreef Geqxon het volgende:
[..]
Daar heb ik een settings-tabel in de database voor. Waarbij alles via getSetting($instelling) op te vragen is.
1 2 3 4 5 6 7 | $settings = Settings::getInstance(); $settings->import('config.ini'); $hostname = $settings->get('database.hostname'); $username = $settings->get('database.username'); ?> |
ok dit is misschien geen antwoord op je vraag maar mijn mening, waarom zou je een verbinding opzetten met je database voor een paar menuitems O_O, zo kan het ook?quote:Op zaterdag 28 juli 2007 05:25 schreef wonderer het volgende:
Menu uit tabel
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 | $menu = array("item1" => array ("subitem1" => "linkje", "subitem2" => "linkje", "subitem3" => array("subsubitem1" => "linkje", "subsubitem2" => "linkje" ) ), "item2" => "linkje", "item3" => array ("subitem1" => "linkje", "subitem2" => "enzovoort" ) ); function bouwmenutje(array $menu) { $result = ""; foreach($menu as $item => $submenu) if(is_array($submenu)) $result .= "$item" . bouwmenutje($submenu); else $result .= "<a href=$submenu>$item</a>"; return $result; } ?> |
Op het moment doe ik het in PHP, maar dat vind ik niet zo'n mooie oplossing....quote:Op vrijdag 27 juli 2007 16:23 schreef WyriHaximus het volgende:
Hmmm dit moet nog voor mod_rewrite gebeuren of tijdens PHP of nog voor mod_rewrite, want dat was me nog niet helemaal duidelijk. * WyriHaximus is niet echt wakker vandaag
![]()
Dan moet je dus voor elk sub-menu een query uitvoeren. Ik denk dat het een stuk sneller is om alle menu items in één keer te lezen (gesorteerd op level). Met php loop je door de resultaten heen en bouw je een array van array's op (van hoog naar laag). Die plak je dan recursief aan elkaar tot het uiteindelijke menu in html.quote:Op zaterdag 28 juli 2007 05:25 schreef wonderer het volgende:
?
Jup. Alhoewel ik het systeem wel ga herschrijven voor een groot deel, maar dan ook op een OO manier.quote:Op vrijdag 27 juli 2007 22:15 schreef Geqxon het volgende:
Om weer op het OO puntje uit te komen: super-muffin hierboven gebruik bijvoorbeeld een setting-classe. Maar is je complete systeem / website dan ook Object Oriented?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var $lastid = "" $scope[0] = ... # volgummer of initiele waarde for each $elem in $elems { if $elem == <item> { insert into table (pid, item) values ($scope[0], $elem->id) $lastid = $elem->id } else if $elem == <inside> { unshift $scope, $lastid # voeg nieuw element op pos 0 toe } else if $elem == </inside> { shift $scope # verwijder element op pos 0 } } |
In mijn situatie is alles OOquote:Op vrijdag 27 juli 2007 22:15 schreef Geqxon het volgende:
Om weer op het OO puntje uit te komen: super-muffin hierboven gebruik bijvoorbeeld een setting-classe. Maar is je complete systeem / website dan ook Object Oriented?
Ik zou het dan gewoon bij PHP houdenquote:Op zaterdag 28 juli 2007 10:19 schreef Xcalibur het volgende:
[..]
Op het moment doe ik het in PHP, maar dat vind ik niet zo'n mooie oplossing....
Het is de bedoeling dat het in de .htaccess, vķķr de rest van de mod_rewrite gaat gebeuren
En één optie om het te doen is met RewriteMap, maar daar heb je weer een extra txt-bestandje voor nodig, en daar zit ik ook niet op te wachten
Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genererenquote:Op zaterdag 28 juli 2007 16:30 schreef Xcalibur het volgende:
ja, maar dat was nou net niet m'n vraag
deze pagina doet het neit echt trouwens bij jequote:Op zaterdag 28 juli 2007 16:46 schreef WyriHaximus het volgende:
[..]
Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genereren. (ff voorbeeldje maken)
Heb me forum verplaatstquote:Op zaterdag 28 juli 2007 16:56 schreef qu63 het volgende:
[..]
deze pagina doet het neit echt trouwens bij je
Ja, dat deed ik eerst, tot 3 niveau's.... tot ik tegen niveau 4 aanliep, etc.quote:Op zaterdag 28 juli 2007 16:46 schreef WyriHaximus het volgende:
Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genereren. (ff voorbeeldje maken)
Het is toch niet zo bar moeilijk om een scripte te maken wat het tot op 500 niveau's genereerd voor je?quote:Op zaterdag 28 juli 2007 17:23 schreef Xcalibur het volgende:
[..]
Ja, dat deed ik eerst, tot 3 niveau's.... tot ik tegen niveau 4 aanliep, etc.
En ik ben nou met een webshop bezig waar het aantal niveau's in principe onbeperkt is... en dat wil ik niet gaan voorbereiden
loopt nog steeds niet hoorquote:Op zaterdag 28 juli 2007 17:00 schreef WyriHaximus het volgende:
[..]
Heb me forum verplaatst. En was dat ff vergeten ja
.
of toch niet:quote:
Dankjequote:Op zaterdag 28 juli 2007 17:51 schreef qu63 het volgende:
[..]
of toch niet:
Fatal error: Call to undefined function: sql_addslashes() in /home/wyrihaxi/domains/wyrihaximus.net/public_html/fok/wow/do_edit.php on line 42
Dus om maar een voorbeeld van deze pagina te geven, elke smilie is een object, elke post is een object, en elk stukje GUI is een object? En elke keer als je de pagina opvraagt bouw je dat compleet op, waarbij de data uit een ODBMS komt?quote:Op zaterdag 28 juli 2007 15:29 schreef WyriHaximus het volgende:
[..]
In mijn situatie is alles OO. Maakt het makkelijker en overzichtelijker om bepaalde blokken die iets doen (bijvoorbeeld mijn wow screenshots weergeven op verschillende manieren) appart te houden
.
Zo OO nog niet. Ga wel die kant opquote:Op zaterdag 28 juli 2007 19:12 schreef Geqxon het volgende:
[..]
Dus om maar een voorbeeld van deze pagina te geven, elke smilie is een object, elke post is een object, en elk stukje GUI is een object? En elke keer als je de pagina opvraagt bouw je dat compleet op, waarbij de data uit een ODBMS komt?
Nee, zo moet je het niet zien.quote:Op zaterdag 28 juli 2007 19:12 schreef Geqxon het volgende:
[..]
Dus om maar een voorbeeld van deze pagina te geven, elke smilie is een object, elke post is een object, en elk stukje GUI is een object? En elke keer als je de pagina opvraagt bouw je dat compleet op, waarbij de data uit een ODBMS komt?
MVC of niet, dan programmeer je in mijn opinie niet OO. Zelf heb ik diverse projecten met Java gedaan, waar basicly alles een object is. In Java zouden de smilies die op het moment onder mijn reply-message staan een object zijn, evenals het Preview en Invoeren knopje. Allemaal deel van de UI-laag.quote:Op zaterdag 28 juli 2007 19:35 schreef Farenji het volgende:
[..]
Nee, zo moet je het niet zien.
Een OO applicatie bestaat idealiter uit 3 delen: model, view en controller.
Het model is alle data voor je applicatie, inclusief de interface om die data op te halen en te manipuleren. Je hebt daar bijv een Database class om te praten met je database. Het model zijn ook je objecten die opgebouwd worden uit / gebruik maken van die data, zoals bijv je Settings class, een Page classe, een User class etc.
De view is alles wat de gebruiker ziet, de output van je applicatie. Voor webapplicaties is dat meestal de template engine. De view is "dom", in de zin dat het gewoon weergeeft wat ie aangereikt krijgt en geen weet heeft van applicatielogica. Het is gewoon een object waar je variabelen aan hangt, en deze worden op de juiste plek in de html weergegeven.
Die applicatielogica zit in het controller gedeelte. Deze maakt de objecten uit het model aan, doet er het een en ander mee, en geeft ze door aan de view die het netjes op het scherm tovert. Alle gebruikersinvoer komt weer bij de controller terecht die er weer op reageert. Het is zeg maar de tussenpersoon tussen gebruiker en data.
OO programmeren betekent niet dat je over *alles* als objecten gaat denken, in het geval van Fok is elke post gewoon een grote string die in de database staat. De smilies zijn geen aparte objecten maar gewoon deel van die string.
Het is meer dat je je applicatie opdeelt in de essentiele bouwblokken, voor deze onderdelen definieer je eigenschappen en methodes. Hoe je dat doet is aan jou maar de keuze van je objectstructuur is essentieel voor de mogelijkheden van je applicatie dus daar kun je beter goed over nadenken. Daarna maak je een controller laag die de objecten die je hebt gedefinieerd tot leven te wekken, ze met elkaar kan laten samenwerken en er uiteindelijk een template object van bakt wat je aan de gebruiker toont.
Soms is dat handig. Soms absoluut niet. Als fok zo was opgebouwd dan hadden ze er wel 2 keer zoveel servers voor mogen inzetten want dat genereert een enorme hoeveelheid overbodige overhead. In Java wordt het OO denken heel ver doorgevoerd, zelfs een string is een object, in veel andere talen is een string gewoon een rijtje karakters afgesloten door een null character. Je bent als ontwerper vrij om te bepalen in hoeverre je de OO gedachte doorvoert. Als je het te ver doorvoert kan je helemaal verzuipen in de objecten, doe je het niet ver genoeg dan krijg je ongestructureerde en moeilijker onderhoudbare code.quote:Op zaterdag 28 juli 2007 19:47 schreef Geqxon het volgende:
[..]
MVC of niet, dan programmeer je in mijn opinie niet OO. Zelf heb ik diverse projecten met Java gedaan, waar basicly alles een object is. In Java zouden de smilies die op het moment onder mijn reply-message staan een object zijn, evenals het Preview en Invoeren knopje. Allemaal deel van de UI-laag.
Het voordeel van een database class is dat je een uniforme interface hebt die verschillende backends kan hebben. Je kan er een wrapper van maken en hiermee je applicatie onafhankelijk van de database te maken, zo kan je het zo doen dat ie zowel met MySQL als MSSQL als met XML files kan werken. Natuurlijk kun je altijd die class omzeilen maar daarmee doe je idd het idee achter OO teniet.quote:In that case geef blijf ik wat PHP betreft liever bij "normaal" programmeren, aangezien ik liever geen mix van diverse programmeermanieren gebruik. Een databaseclass is leuk, als de rest van je software ook uit classes bestaat, en je niet stiekem ergens sjoemelt en je direct iets uit de database naar de gebruiker print.
Inderdaad, objecten met elk hun eigen verantwoordelijkheden en taken, netjes afgescheiden van de andere objecten. Maar het is zinloos om alle data tot in de oneindigheid verder op te delen in objecten. Ergens moeten de objecten obhouden met object te zijn en gewoon een brok data worden.quote:Om een voorbeeld te geven, ik heb zoals elke student een bankproject moeten maken. En dan is dus wel alles een object. Geld overboeken doe je niet door in de database te klooien, nee, dat doe je een een Transactie-object aan te maken, die zelf de verantwoordelijkheid van de transactie draagt, en de rest van de transactie regelt.
Om puur hier op in te gaan: Is dat wel mogelijk? Is er dan niet voor elke compliceerde query een aparte functie (/method) nodig? Stel dat ik een query van een regel of zeven gebruik om de data op te halen, dan moet deze complete query in de class staan, onder een aparte functie, neem ik aan?quote:Op zaterdag 28 juli 2007 20:06 schreef Farenji het volgende:
Het voordeel van een database class is dat je een uniforme interface hebt die verschillende backends kan hebben. Je kan er een wrapper van maken en hiermee je applicatie onafhankelijk van de database te maken, zo kan je het zo doen dat ie zowel met MySQL als MSSQL als met XML files kan werken. Natuurlijk kun je altijd die class omzeilen maar daarmee doe je idd het idee achter OO teniet.
Ja, want je geeft de SQL query aan de DBclass, deze voert hem uit en geeft de resultaten terug. Maar je kunt ook iets zoals propel gebruikenquote:Op zaterdag 28 juli 2007 20:49 schreef Geqxon het volgende:
[..]
Om puur hier op in te gaan: Is dat wel mogelijk? Is er dan niet voor elke compliceerde query een aparte functie (/method) nodig? Stel dat ik een query van een regel of zeven gebruik om de data op te halen, dan moet deze complete query in de class staan, onder een aparte functie, neem ik aan?
Maar wat als je dus de SQL-query aan de DBclass doorgeeft, en je plotseling op XML-files over wilt stappen, of een totaal andere manier van storage? Meer op die manier.quote:Op zaterdag 28 juli 2007 21:14 schreef WyriHaximus het volgende:
[..]
Ja, want je geeft de SQL query aan de DBclass, deze voert hem uit en geeft de resultaten terug. Maar je kunt ook iets zoals propel gebruiken.
Nee dat gaat dan niet, naar allerlei SQL servers wel maar XML niet tenzij je zelf storage engine er voor gaat bouwenquote:Op zaterdag 28 juli 2007 21:34 schreef Geqxon het volgende:
[..]
Maar wat als je dus de SQL-query aan de DBclass doorgeeft, en je plotseling op XML-files over wilt stappen, of een totaal andere manier van storage? Meer op die manier.
Welcome to "models"quote:Op zaterdag 28 juli 2007 20:49 schreef Geqxon het volgende:
[..]
Om puur hier op in te gaan: Is dat wel mogelijk? Is er dan niet voor elke compliceerde query een aparte functie (/method) nodig? Stel dat ik een query van een regel of zeven gebruik om de data op te halen, dan moet deze complete query in de class staan, onder een aparte functie, neem ik aan?
1 |
Dat is niet geheel waar. Je hebt verschillende design patterns, allemaal met een zeker doel/uitgangspunt. OO zegt niet dat je een MVC model moet implementeren.quote:Op zaterdag 28 juli 2007 19:35 schreef Farenji het volgende:
Een OO applicatie bestaat idealiter uit 3 delen: model, view en controller.
quote:Op maandag 30 juli 2007 14:19 schreef slacker_nl het volgende:
[..]
Dat is niet geheel waar. Je hebt verschillende design patterns, allemaal met een zeker doel/uitgangspunt. OO zegt niet dat je een MVC model moet implementeren.
MVC is vooral om de business logic te scheiden van de hoe de data wordt gepresenteerd op je scherm door het gebruik van de controller.
Ikzelf heb dit boek ooit aangeschafd: http://en.wikipedia.org/wiki/Design_Patterns
Zie verder ook: http://en.wikipedia.org/wiki/Object_oriented en http://en.wikipedia.org/wiki/Model-view-controller
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |