Je hebt nu 2x praktisch dezelfde query staan. Daar kan je makkelijk 1 functie van maken die een array met menu-item data geeft. Dat maakt het een stuk leesbaarder:quote:Op dinsdag 22 juli 2008 22:03 schreef LeeHarveyOswald het volgende:
Ja, je moet wat, als je je menustructuur uit een database wilt halen en wilt laten uittekenen :D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $mainMenuItems = readMenu(0); foreach ($mainMenuItems as $item) { ++$counter; printf('<dl>...</dl>', $counter, htmlspecialchars($item['Link']), htmlspecialchars($item['Text']), ...); $subMenuItems = readMenu($item['ID']); foreach ($subMenuItems as $subItem) { printf('<li>...</li>', htmlspecialchars($subItem['Link']), htmlspecialchars($subItem['Text']), ...); } } |
Oh dat kan ook nietquote:Op dinsdag 22 juli 2008 23:59 schreef LeeHarveyOswald het volgende:
Ik snap hem niet helemaal? Hoe kan ik die 2e query dan uitsluiten, terwijl ik pas 1 stap verder weet welke subitems ik op wil halen? (kan het tijdstip zijn hoor .. )
dat werkt op zich wel, maar dat betekent wel dat die rewriterule altijd gebruikt wordt wanneer de url zelf niet bestaat, ook al is dat doordat de url parameters bevat... (ik wil namelijk alle $_GET netjes wegwerken. Dus, dit is mijn probleem:quote:Op woensdag 23 juli 2008 15:35 schreef super-muffin het volgende:
[ code verwijderd ]
Hier staat dus als de opgevraagde URL geen bestaande bestand of map is hij de RewriteRule moet pakken.
1 2 3 4 5 6 7 8 9 10 | +index.php +includes\ +test.php +deze_ook.php +dezeniet.txt +folder\ +deze_niet.gif +deze_ook_niet.php +etc. |
1 |
1 2 3 4 5 | RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} ^/([^/]+).*$ RewriteCond "C:/Program Files/WAMP/www/includes/$1.php" -f RewriteRule ^([^/]+)/?(.*)$ index.php?page=$1¶ms=$2 |
Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.quote:Op woensdag 23 juli 2008 22:54 schreef ralfie het volgende:
ok, ik heb al iets in elkaar geflansd, was doodsimpel eigenlijk toen ik erachter kwam dat je references vanuit vorige RewriteConds kon gebruiken...
[ code verwijderd ]
nog ff testen of het eenvoudiger kan, maar het werkt iig. toch bedankt
Beetje ongenuanceerde dit is niet portable gezeik, IMHO. Als je zooi van server A naar B gaat overzetten hoef je alleen de paden in je rewrite rule aan te passen, zo moeilijk is het niet. IIS kan zoiezo niet met rewrite rules overweg (lees mod_rewrite, aangezien IIS een andere rewrite engine heeft..), dus het gebruik van mod_rewrite is sowieso niet portable.quote:Op woensdag 23 juli 2008 23:24 schreef Light het volgende:
[..]
Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.
joh, boeiend. Ben geen commercieel pakket aan het maken, maar gewoon een amateur website aan het verfraaien. De eerste plaats waar ik instellingen mbt rewriterules ga zoeken is in een htaccess bestand, dus daar staat het goed in mijn geval. Dat dit algemeen als bad practice gezien wordt, boeiend, als het maar (goed) werkt. en dat doet het nu.quote:Op donderdag 24 juli 2008 11:17 schreef Farenji het volgende:
Ik zei niet voor niks om dit soort dingen in je applicatiecode te doen en niet met mod_rewrite, dan kun je namelijk gewoon een config bestand/class hiervoor gebruiken, zoals het hoort. Een pad aanpassen in een rewrite rule is zo gebeurd maar je wil dit soort dingen centraal, op 1 plek kunnen configureren. Als je op tig plekken allerlei paden moet gaan aanpassen voordat je app werkt, dat is gewoon bad practice.
Bedoel je de tijd die het de server kost om de html te genereren of de tijd die het de browser kost om de pagina te laden?quote:Op vrijdag 25 juli 2008 12:17 schreef Chandler het volgende:
Als ik op een bepaalde pagina met zo'n 15 queries voor't eerst klik zie ik dat de parse tijd (totaal incl queries) zo'n 1,2 seconden is.
Druk ik op F5 dan opeens is het 0,7 secs
en nogmaals op F5 en het is 0,01 secs?
Tip: Bij het laten zien (index.php) de functie nl2br() om de data (tekst) heen wrappen.quote:Op dinsdag 15 juli 2008 17:37 schreef Mirel het volgende:
Hallo, met Mirel, php kleuter.
Ik wil voor een website een soort van text editor hebben, waarin je je allemaal dingen typt, en die op een pagina worden gezet. Heb een héél simpele tutorial gevonden die ik heb gedaan en hier even geupload om te testen.
Wat ie nu doet is tekst op een pagina zetten, maar als je nieuwe tekst erop typt, dan wist ie de andere uit. Wat moet ik in de code toevoegen dat ie dat niet doet?
[ code verwijderd ]
Of moet ik nu iets totaal anders doen, ben echt een php leek.![]()
Ik lees nu ondertussen iets over kant en klare WYSIWYG editors waarmee waarschijnlijk hetzelfde bereikt kan worden, weet iemand daar iets meer over te vertellen?
Ik begrijp hieruit dat curl, indien safemode aanstaat, de locatie van de 30X message niet volgt.quote:Op vrijdag 25 juli 2008 20:58 schreef SuperRembo het volgende:
cURL ondersteunt in safe mode geen CURLOPT_FOLLOWLOCATION. Dat heb ik wel nodig. Heeft iemand daar een werkende oplossing voor?
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 | # php 5.2.1 $ch = curl_init(); $curl_opts = array(); $curl_opts[CURLOPT_VERBOSE] = 0; $curl_opts[CURLOPT_RETURNTRANSFER] = 1; function curl_sm_exec($ch, $opts, $url) { if(ini_get('safe_mode')) { $opts[CURLOPT_HEADER] = 1; $opts[CURLOPT_CUSTOMREQUEST] = "HEAD"; } $opts[CURLOPT_URL] = $url; curl_setopt_array($ch, $opts); $bla = curl_exec($ch); $arr = split("\n", $bla); foreach($arr as $v) { if (preg_match('/^Location: (.*)/', $v, $matches)) { return curl_sm_exec($ch, $opts, $matches[1]); } } $opts[CURLOPT_HEADER] = 0; $opts[CURLOPT_CUSTOMREQUEST] = "GET"; curl_setopt_array($ch, $opts); return curl_exec($ch); } $res = curl_sm_exec($ch, $curl_opts, 'www.euronet.nl'); print $res . "\n"; ?> |
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 | { static $curl_loops = 0; static $curl_max_loops = 20; if ($curl_loops++ >= $curl_max_loops) {// Maximum number of redirects exceeded $curl_loops = 0; return false; } curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); $debbbb = $data; list($header, $data) = explode("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (!($http_code == 301 || $http_code == 302)) { $curl_loops = 0; return $debbbb; } $matches = array(); preg_match('#Location:(.*?)\n#i', $header, $matches); $url = @parse_url(trim(array_pop($matches))); if (!$url) { // Couldn't process the url to redirect to $curl_loops = 0; return $data; } $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); if (!$url['scheme']) $url['scheme'] = $last_url['scheme']; if (!$url['host']) $url['host'] = $last_url['host']; if (!$url['path']) $url['path'] = $last_url['path']; $new_url = $url['scheme'] .'://'. $url['host'] . $url['path'] . ($url['query'] ? '?'.$url['query'] : ''); curl_setopt($ch, CURLOPT_URL, $new_url); return curl_redir_exec($ch); } |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |