En op een site/pagina die zonder javascript moet werken waar je wel die stijlen wilt hebben? Nooit er van uit gaan dat iedereen javascript aan heeft staan. Sowieso dit soort dingen d.m.v. javascript toevoegen is een beetje overkill.quote:Op donderdag 21 april 2011 08:18 schreef Intrepidity het volgende:
[..]
Graceful degradation. Styles moet je toewijzen met CSS, niet met PHP. Werkt het niet, dan maar met een javascript-achtige fallback. Sowieso voegen dat soort operaties nou niet bepaald extreem veel overhead toe, zeker niet als je jQuery uberhaupt al actief hebt.
Zeker op drukke websites is het niet verstandig dat soort duidelijke client-side operaties aan de server over te laten.
quote:Op donderdag 21 april 2011 09:24 schreef Pakspul het volgende:
[..]
idd, aangezien het maar één ifstatement is valt het echt reuze mee.
[ code verwijderd ]
En that's it
| 1 2 3 | <?php $className = $i % 2 === 0 ? 'classX' : 'classY'; ?> |
Ik ben van mening dat dit soort dingen een toevoeging zijn en dat graceful degradation hier dus op zijn plaats is. Mensen die JS uit hebben staan zijn er nauwelijks (en moeten tevens dood, want paranoide), en die zien dan geen zebra-striping in een tabel, big deal.quote:Op donderdag 21 april 2011 09:28 schreef lifeblind het volgende:
[..]
En op een site/pagina die zonder javascript moet werken waar je wel die stijlen wilt hebben? Nooit er van uit gaan dat iedereen javascript aan heeft staan. Sowieso dit soort dingen d.m.v. javascript toevoegen is een beetje overkill.
Nog een tipje m.b.t. dit, als je een template-engine zoals smarty gebruikt, kun je dit min of meer automatisch laten doen. Als je dan je data in je template zet, kun je gewoon aangeven welke class die om de x-aantal iterations moet doen, werkt veel simpeler. Op deze manier hou je ook logica van je code (data ophalen, er iets leuks mee doen etc.) gescheiden van je weergave (want dat doe je allemaal in je template).
quote:Op donderdag 21 april 2011 12:17 schreef mafkees01 het volgende:
[..]
[ code verwijderd ]nog korter...
| 1 2 3 | <?php $className = ($i % 2) ? 'classX' : 'classY'; ?> |
Moet je alleen X en Y omdraaien.quote:Op donderdag 21 april 2011 12:35 schreef GlowMouse het volgende:
[..]
[ code verwijderd ]nog korter...
En dingen als drempelsvrij en dergelijke zeggen je niets? Sowieso, als je miljoenen hits per dag te verwerken krijgt moet je meer aan caching enzo denken, als je dan iedere keer de pagina's serverside opnieuw gaat opbouwen doe je sowieso al iets niet goed.quote:Op donderdag 21 april 2011 12:33 schreef Intrepidity het volgende:
[..]
Ik ben van mening dat dit soort dingen een toevoeging zijn en dat graceful degradation hier dus op zijn plaats is. Mensen die JS uit hebben staan zijn er nauwelijks (en moeten tevens dood, want paranoide), en die zien dan geen zebra-striping in een tabel, big deal.
Gewoon nooit dat soort weergavezaken serverside laten afhandelen. Werkt leuk en snel, maar als je een paar miljoen hits per dag te verwerken krijgt en je hebt overal dat soort truucjes in je code zitten kunnen al die cycles al snel een hele server schelen. Niet dat ik verwacht dat je je daar direct mee bezig houdt, maar verkeerde dingen aanleren is nooit een goed plan.
Zebrastriping op een braillemachine, goed idee! Ik snap je punt, maar ik zit in de B2B-hoek, en daar is dat eigenlijk geen prioriteit, maar vooruit.quote:Op donderdag 21 april 2011 12:41 schreef lifeblind het volgende:
[..]
En dingen als drempelsvrij en dergelijke zeggen je niets? Sowieso, als je miljoenen hits per dag te verwerken krijgt moet je meer aan caching enzo denken, als je dan iedere keer de pagina's serverside opnieuw gaat opbouwen doe je sowieso al iets niet goed.
Zo zie je maar, waarom moeilijk doen in CSS als het zo prima kanquote:Op donderdag 21 april 2011 12:35 schreef GlowMouse het volgende:
[..]
[ code verwijderd ]nog korter...
Omdat CSS er voor bedoeld is, dat is waarom.quote:Op donderdag 21 april 2011 12:47 schreef mafkees01 het volgende:
[..]
Zo zie je maar, waarom moeilijk doen in CSS als het zo prima kan
Het oog wil ook watquote:Op donderdag 21 april 2011 12:17 schreef mafkees01 het volgende:
[..]
[ code verwijderd ]nog korter...
Ach, als je er 10 regels code voor nodig hebt en 2 loops geef ik je gelijk, maar als de oplossing zo simpel is zie ik in waarom je het niet met PHP zou oplossen. Om nog maar niet te beginnen over het feit dat de CSS oplossing erg browser afhankelijk is...quote:Op donderdag 21 april 2011 12:47 schreef Intrepidity het volgende:
[..]
Omdat CSS er voor bedoeld is, dat is waarom.
Misschien ben ik wel een ongelofelijk zeikende purist hoor, maar PHP is afaik een serverside-taal en dus niet bedoeld voor dergelijke weergavezaken. Ik gebruik PHP om semantisch juiste HTML uit te poepen (en overal lukraak css-klassen aanhangen valt daar imo niet onder), en hoe dat geïnterpreteerd wordt en uiteindelijk weergegeven wordt is het pakkie aan voor de clientside-talen zoals css en javascript.quote:Op donderdag 21 april 2011 12:58 schreef mafkees01 het volgende:
[..]
Ach, als je er 10 regels code voor nodig hebt en 2 loops geef ik je gelijk, maar als de oplossing zo simpel is zie ik in waarom je het niet met PHP zou oplossen. Om nog maar niet te beginnen over het feit dat de CSS oplossing erg browser afhankelijk is...
| 1 2 3 | <input type="text" name="Artikelnummer[1]"> <input type="text" name="Artikelnummer[2]"> <input type="text" name="Artikelnummer[3]"> |
| 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 | <?php $sql="SELECT Artikelnummer, Naam, Prijs FROM Producten WHERE Artikelnummer = '".$q."'" ; $result = mysql_query($sql)or die(mysql_error()); $rows = mysql_num_rows($result); If($rows == 0) { echo "<td class='productnaam'>"; echo "Nummer niet gevonden"; echo "</td>"; echo "<td class='prijs'>"; echo ""; echo "</td>"; } else { $fetch = mysql_fetch_assoc($result); echo "<td class='productnaam'>"; echo $fetch['Naam']; echo "</td>"; echo "<td class='Prijs'>"; echo "€ "; echo $fetch['Prijs']; echo "</td>"; } ?> |
quote:Op dinsdag 26 april 2011 14:00 schreef afro het volgende:
Weet iemand hoe ik dit moet gaan doen?
Ik heb tien input velden, zoals hieronder, deze moeten allemaal de database doorzoeken en aparte resultaten krijgen. Nu is het probleem dat alleen de eerste werkt (logisch).
[ code verwijderd ]
PHP
[ code verwijderd ]
Hoe zorg ik ervoor dat het voor elke input apart word "verwerkt".
| 1 2 3 4 5 | <?php foreach ( $_POST['Artikelnummer'] as $k=>$v ) { // hier de code die bij elk veld in de database gaat zoeken, $v is de waarde van het veld en $k de index } ?> |
| 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 | <form method="post"> <textarea name="Artikelnummer[]"></textarea> <textarea name="Artikelnummer[]"></textarea> <input type="submit"> </form> <?php foreach($_POST['Artikelnummer'] as $Artikelnummer) { include 'Jalalalala.php'; @$sql="(SELECT Artikelnummer, Naam, Prijs FROM producten WHERE Artikelnummer =('$Artikelnummer'))"; $result = mysql_query($sql)or die(mysql_error()); $rows = mysql_num_rows($result); If($rows == 0) { echo "<td class='productnaam'>"; echo "Nummer niet gevonden"; echo "</td>"; echo "<td class='prijs'>"; echo ""; echo "</td>"; } else { $fetch = mysql_fetch_assoc($result); echo "<td class='productnaam'>"; echo $fetch['Naam']; echo "</td>"; echo "<td class='Prijs'>"; echo "€ "; echo $fetch['Prijs']; echo "</td>"; } } ?> |
Database-class als in: PDO. Eigen databasewrappers schrijven is tegenwoordig ook nergens meer voor nodig, daar hebben we PDO voor. Jammer alleen dat het een hoop hosters onvoldoende drivers aanbieden.quote:Op dinsdag 26 april 2011 21:07 schreef GlowMouse het volgende:
Zolang je de extra features van MySQLi niet gebruikt, biedt MySQLi geen voordelen. Bovendien zie ik MySQL niet verdwijnen. Daarnaast moet je een database-class gebruiken, zodat mysql door mysqli vervangen nauwelijks tijd kost.
Ben ik in principe met je eens, maar er zijn uitzonderingsgevallen, zoals verschillen tussen de Linux en Windows-API's die errors veroorzaken, en andere randgevallen waarbij onderdrukking in plaats van rete-ingewikkelde foutafhandeling beter is. Maar inderdaad, bij in 99% van de gevallen is dat niet nodig. Samenvatting: onderdrukking voor tekortkomingen van PHP zelf is prima, maar voor fouten aan je eigen kant niet.quote:Op woensdag 27 april 2011 09:11 schreef mstx het volgende:
Ten zesde: onderdruk fouten niet met @ maar zorg dat je in eerste instantie geen fouten krijgt.
Indenten?quote:
quote:Op woensdag 27 april 2011 09:11 schreef mstx het volgende:
Ten zesde: onderdruk fouten niet met @ maar zorg dat je in eerste instantie geen fouten krijgt.
| 1 2 3 4 5 6 7 8 | <?php if (empty($_POST['Artikelnummer'])) { echo ''; } else { foreach($_POST['Artikelnummer'] as $Artikelnummer) { ?> |
| 1 2 3 | <?php $sql=("SELECT Artikelnummer, Naam, Prijs FROM producten WHERE Artikelnummer = '".mysql_real_escape_string($Artikelnummer)."'") ?> |
echo ''; is nogal nutteloos he.quote:Op woensdag 27 april 2011 10:22 schreef afro het volgende:
[..]
Indenten?
[..]
[ code verwijderd ]
Zo goed opgelost?
| 1 2 3 4 5 6 | <?php if (!empty($_POST['Artikelnummer'])) { foreach($_POST['Artikelnummer'] as $Artikelnummer){ } } ?> |
Dat is waarquote:Op woensdag 27 april 2011 10:28 schreef mstx het volgende:
[..]
echo ''; is nogal nutteloos he.![]()
[ code verwijderd ]
Hoe wil je hem outputten? Alleen even bekijken? var_dump($aMultiDimensional);quote:Op donderdag 28 april 2011 11:33 schreef -Datdus- het volgende:
Weet iemand hoe je multiple dimensional array output?
outputten!quote:Op donderdag 28 april 2011 11:35 schreef PiRANiA het volgende:
[..]
Hoe wil je hem outputten? Alleen even bekijken? var_dump($aMultiDimensional);
Same.quote:Op vrijdag 29 april 2011 09:16 schreef remi1986 het volgende:
gebruik altijd print_r i.c.m. <pre> </pre>
var_dump geeft mij ook iets teveel informatie terug, wel handig als het om type casting gaat dat je precies weet waar je mee werkt. Maar als je in een MVC framework werkt bouw je je models zo dat er een stuk type casting in zit, zodat je er vanuit kunt gaan dat de objecten waarmee je werkt ook daadwerkelijk het type hebben wat je verwacht i.p.v. dat losse type casting waar PHP mee werkt.quote:Op vrijdag 29 april 2011 09:16 schreef remi1986 het volgende:
gebruik altijd print_r i.c.m. <pre> </pre>
Gelukkig zit type hinting voor scalar variables in de pijplijn voor een volgende PHP-versiequote:Op vrijdag 29 april 2011 10:48 schreef Pakspul het volgende:
[..]
var_dump geeft mij ook iets teveel informatie terug, wel handig als het om type casting gaat dat je precies weet waar je mee werkt. Maar als je in een MVC framework werkt bouw je je models zo dat er een stuk type casting in zit, zodat je er vanuit kunt gaan dat de objecten waarmee je werkt ook daadwerkelijk het type hebben wat je verwacht i.p.v. dat losse type casting waar PHP mee werkt.
Bron? Want ik ben echt zwaar benieuwd naar de uitwerking. Liefste zie ik zoiets als c# want dat verschil niet erg veel van PHP.quote:Op vrijdag 29 april 2011 11:11 schreef Intrepidity het volgende:
[..]
Gelukkig zit type hinting voor scalar variables in de pijplijn voor een volgende PHP-versie
Dat geeft vooral overhead, en zeker in een weakly typed taal als php heeft het andere nadelen. Zelfs in een taal als java zijn integers en floats etc gewoon primitives, die je eventueel wel in een Integer/Float etc class kan vatten. Maar dat riekt bij mij al snel naar overengineering. Niks mis met primitives. Misschien dat het voor strings handig kan zijn, bijv zoals het in javascript werkt bijvoorbeeld, waar een string een object en ook een pseudo array is. Voor de rest: keep it simple, stupid.quote:Op vrijdag 29 april 2011 11:13 schreef Pakspul het volgende:
Mooiste zal zijn als string,integer,float etc ook classes zijn of structures zodat deze ook in functies worden geaccepteerd.
Zie o.a. http://sebastian-bergmann(...)s-in-PHP-5.3.99.htmlquote:Op vrijdag 29 april 2011 11:13 schreef Pakspul het volgende:
[..]
Bron? Want ik ben echt zwaar benieuwd naar de uitwerking. Liefste zie ik zoiets als c# want dat verschil niet erg veel van PHP.
Mooiste zal zijn als string,integer,float etc ook classes zijn of structures zodat deze ook in functies worden geaccepteerd.
Een ubersimpele scriptingtaal is het al jaren niet meer. Loosely typed is het inderdaad, maar dat is een bewuste keuze geweest. Een volledige taal is het al een heel poosje. Wat voor dingen mis jij zoal in de API dan? Dat het niet geleverd wordt met een compleet framework zoals bijvoorbeeld ASP.net dat doet klopt, maar dat zie ik als een groot voordeel, omdat ik dan zelf een framework kan kiezen.quote:Op vrijdag 29 april 2011 11:53 schreef Farenji het volgende:
Je moet PHP ook niet proberen te veranderen in wat het niet is en wat nooit de bedoeling was. Het is oorspronkelijk gemaakt als een zeer laagdrempelige, ubersimpele scriptingtaal. Als je er echt een stricte en volledige programmeertaal van wil maken inclusief type checking etc dan kun je beter met een schone lei beginnen, zodat je ook alle nare erfenissen uit de voorbije tijd kunt kwijtraken. Maar ja, dan kom je waarschijnlijk uit op iets zoals Python...
Idd qua weergave is var_dump wel de betere.quote:Op zondag 1 mei 2011 21:53 schreef mafkees01 het volgende:
Gebruikte eerst ook altijd print_r, maar tegenwoordig altijd var_dump omdat ik veel gebruik maak van arraysVind die weergave altijd enorm duidelijk
Ligt er dan ook wel enorm aan.. Als ik een dynamische SQL query bouw dan vind ik een var_dump erg onhanding omdat er quotes omheen staan, welke type casting en de length. Dan is de eventuele fout in je query moeilijk te vinden..quote:Op zondag 1 mei 2011 21:55 schreef themole het volgende:
[..]
Idd qua weergave is var_dump wel de betere.
Waarom zou ik ? Ik heb een eigen db-debugger in mijn db-class ingebouwd en kom met print_r verder gewoon waar ik wil komen.quote:Op maandag 2 mei 2011 09:31 schreef Intrepidity het volgende:
Gebruik toch in godsnaam gewoon xdebugAf en toe wat gepruts om het te installeren maar ik beloof je dat je 10x sneller debugged dan met var_dump en dergelijke.
En als je niet weet op welke code je programma crasht? Kun je ook fijn je methodes in stappen met print_r en dergelijke? Tuurlijk heb je het niet persee nodig, maar het scheelt een hele hoop tijd.quote:Op maandag 2 mei 2011 09:40 schreef GI het volgende:
[..]
Waarom zou ik ? Ik heb een eigen db-debugger in mijn db-class ingebouwd en kom met print_r verder gewoon waar ik wil komen.
wtf is xdebug? Ik heb mijn code zo gemaakt dat als er iets mis gaat dat ik een exception krijg en met de stacktrace kan ik dan zien waar het fout gaat. Persoonlijk vind ik debug programma's ook brak. Zend heeft er ook 1 maar kan daar echt niet mee overweg aangezien ik mijn variabelen best diep heb zitten en dan ben ik met een print_r velen malen sneller.quote:Op maandag 2 mei 2011 09:31 schreef Intrepidity het volgende:
Gebruik toch in godsnaam gewoon xdebugAf en toe wat gepruts om het te installeren maar ik beloof je dat je 10x sneller debugged dan met var_dump en dergelijke.
xdebug is een php-plugin die ook ondersteund wordt door de meeste IDE's waarbij je bij een exception of error meteen naar de betreffende regel springt in je IDE en waarna je alle variabelen en de loop van je programma kunt inspecteren. M.a.w. volledige debugging zoals je dat o.a. ook in visual studio .net hebt.quote:Op maandag 2 mei 2011 13:43 schreef Pakspul het volgende:
[..]
wtf is xdebug? Ik heb mijn code zo gemaakt dat als er iets mis gaat dat ik een exception krijg en met de stacktrace kan ik dan zien waar het fout gaat. Persoonlijk vind ik debug programma's ook brak. Zend heeft er ook 1 maar kan daar echt niet mee overweg aangezien ik mijn variabelen best diep heb zitten en dan ben ik met een print_r velen malen sneller.
Moet ik PHP dan bijvoorbeeld elke 24 uur de hele database checken en elk account met een datum van 30 dagen geleden laten verwijderen?quote:
Het is soms echt te makkelijk, thanksquote:Op donderdag 12 mei 2011 21:49 schreef GlowMouse het volgende:
Precies, om de zoveel tijd met PHP een delete-query draaien.
Als je in de database datetime velden gebruikt, zou je eens kunnen kijken naar de mysql-functie datediff()quote:Op donderdag 12 mei 2011 22:17 schreef dirkjo het volgende:
[..]
Het is soms echt te makkelijk, thanks
Ga even uitzoeken hoe ik een datum kan checken en er dagen vanaf halen
Het zijn inderdaad datetime fields, zal eens even kijken. Thanksquote:Op donderdag 12 mei 2011 22:54 schreef Light het volgende:
[..]
Als je in de database datetime velden gebruikt, zou je eens kunnen kijken naar de mysql-functie datediff()
Even snel lopen kijken naar de datedriff() functie, maar als ik er zo naar kijk dan zou het ook moeten kunnen wanneer je gewoon gebruik maakt van de algemene varchar velden?quote:Op donderdag 12 mei 2011 22:54 schreef Light het volgende:
[..]
Als je in de database datetime velden gebruikt, zou je eens kunnen kijken naar de mysql-functie datediff()
| 1 | SELECT `date_veld` FROM `tabel` WHERE DATEDIFF(`date_veld`, NOW()) < -30 |
Of van je voorganger waarmee je vanwege legacy-code maar moet zien te leven.quote:Op vrijdag 13 mei 2011 10:39 schreef GlowMouse het volgende:
Als je varchar voor een datum gebruikt dan is het je eigen schuld.
Doe ik niet, zijn gewoon datetime fieldsquote:Op vrijdag 13 mei 2011 10:39 schreef GlowMouse het volgende:
Als je varchar voor een datum gebruikt dan is het je eigen schuld.
Dankje! Ga er vanavond/dit weekend eens even mee klotenquote:Op vrijdag 13 mei 2011 09:40 schreef remi1986 het volgende:
Snel testje gedaan.
Als je dit doet
[ code verwijderd ]
Krijg je data die ouder zijn dan 30 dagen. Wel verwarrend met < -30.
Dit kan je natuurlijk gebruiken met een DELETE WHERE query.
| 1 2 3 4 5 | <?php $result = mysql_query("SELECT * FROM `ftpuser` WHERE DATEDIFF(`accessed`, NOW()) < -30"); $row = mysql_fetch_array($result); echo ($row['userid']); ?> |
| 1 | "gebruikersnaam" |
je echo't maar 1x, zie de voorbeelden op http://nl3.php.net/mysql_fetch_arrayquote:Op vrijdag 13 mei 2011 22:07 schreef dirkjo het volgende:
Wanneer ik dan bijvoorbeeld ga spelen met de waarde < -30 blijf ik constant dezelfde gebruikersnaam houden, terwijl ik zeer zeker weet dat er meerdere moeten verschijnen.
Een timestamp veld vul je niet met een unix timestamp, en je wilt waarschijnlijk datetime gebruiken, zie http://dev.mysql.com/doc/refman/5.0/en/datetime.htmlquote:Op vrijdag 13 mei 2011 22:09 schreef Chandler het volgende:
Kan iemand mij het volgende uitleggen, ik heb een tabel met 4 velden (expire_date [timestamp], user_id [int], action [varchar=50], value [text]) en wil deze tabel gebruiken om acties voor een bepaalde tijd in een database in te voeren. Echter werkt de volgende insert niet zoals verwacht
insert into `actions` (`expiredate`, `userID`, `action`, `value`)
VALUES (CUR_TIJD + $time,
$userID,
$action,
$value);
waar CUR_TIJD de huidige tijd (time()) + $time in seconden is. Wat doe ik fout?
En dat is beter voor indices.quote:en DATEDIFF(`accessed`, NOW()) < -30 lijkt me leuker om dit te hebben
`accessed` >= DATE_SUB(CURDATE(),INTERVAL 30 DAYS)
zo pak je alles wat binnen 30 dagen valten wil je anders om dan doe je <
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php function() { $extime = (is_numeric($extime) && $extime > 0) ? time() + $extime : time() + 60; $query = $this->db->query("INSERT INTO `actions` (`expiredate`, `user_id`, `action`, `value`, `validate`) VALUES ('" . date("Y-m-d H:i:s", $extime) . "', '" . $this->db->escape($userID) . "', '" . $this->db->escape($action) . "', '" . $this->db->escape($value) . "', '" . $this->db->escape($validate) . "')"); } ?> |
Misschien erbij moeten vermelden dat ik 'printf' ook al heb geprobeerd.quote:Op vrijdag 13 mei 2011 22:25 schreef GlowMouse het volgende:
[..]
je echo't maar 1x, zie de voorbeelden op http://nl3.php.net/mysql_fetch_array
[..]
Een timestamp veld vul je niet met een unix timestamp, en je wilt waarschijnlijk datetime gebruiken, zie http://dev.mysql.com/doc/refman/5.0/en/datetime.html
[..]
En dat is beter voor indices.
Nee, dat had niet gehoeven.quote:Op vrijdag 13 mei 2011 22:49 schreef dirkjo het volgende:
[..]
Misschien erbij moeten vermelden dat ik 'printf' ook al heb geprobeerd.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |