Kan gebeurenquote:Op zondag 1 februari 2009 13:33 schreef GlowMouse het volgende:
Sorry, zag niet dat het pagina zeven was.
1 |
1 |
1 |
stel het gaat om leden en je wil meerdere rijen bijwerken. hoe gaat dit dan in zijn werking?quote:Op zondag 1 februari 2009 16:45 schreef GlowMouse het volgende:
[ code verwijderd ]
Moet je wel zeker weten dat actief altijd 0 of 1 is
Groetjes,
GlowMouse
Hoezo zeker bij MyISAM??quote:Op zondag 1 februari 2009 16:59 schreef GlowMouse het volgende:
Alle id's in een arraytje stoppen, imploden op een komma, en WHERE id IN(" . $ids . ")" gebruiken. Zeker bij MyISAM moet je zoveel mogelijk in één UPDATE-query doen.
Omdat je bij MyISAM voor iedere UPDATE-query de table lockt en daarvoor op alle SELECT-queries moet wachten en zowel tijdens het wachten als tijdens het updaten alle nieuwe SELECT-queries laat wachten. Dat ga je merken als je wat meer bezoekers hebt.quote:
Thanks! Ik wist niet dat dat ook op die manier kan met een update query! Tof, wel!quote:Op zondag 1 februari 2009 16:45 schreef GlowMouse het volgende:
[ code verwijderd ]
Moet je wel zeker weten dat actief altijd 0 of 1 is
Groetjes,
GlowMouse
Ok, dat wisten we niet, weer wat geleerd..quote:Op zondag 1 februari 2009 17:06 schreef GlowMouse het volgende:
[..]
Omdat je bij MyISAM voor iedere UPDATE-query de table lockt en daarvoor op alle SELECT-queries moet wachten en zowel tijdens het wachten als tijdens het updaten alle nieuwe SELECT-queries laat wachten. Dat ga je merken als je wat meer bezoekers hebt.
Die manier is met name handig bij tellertjes. Als je eerst een SELECT en daarna een UPDATE zou doen, heb je kans dat twee vrijwel gelijktijdige requests eerst allebei de SELECT doen en daarna met UPDATE de teller maar met één ophogen in plaats van met twee.quote:Op zondag 1 februari 2009 17:09 schreef veldmuis het volgende:
[..]
Thanks! Ik wist niet dat dat ook op die manier kan met een update query! Tof, wel!
Hmm, klinkt logisch inderdaad. Ik heb nog behoorlijk wat te lerenquote:Op zondag 1 februari 2009 17:11 schreef GlowMouse het volgende:
[..]
Die manier is met name handig bij tellertjes. Als je eerst een SELECT en daarna een UPDATE zou doen, heb je kans dat twee vrijwel gelijktijdige requests eerst allebei de SELECT doen en daarna met UPDATE de teller maar met één ophogen in plaats van met twee.
Dat is dus ook waarom je per tabel moet bekijken of je (bijv.) MyISAM of InnoDB wilt gebruiken. Voor tabellen met veel schrijf- en leesacties kun je InnoDB overwegen; die maakt namelijk gebruik van row locking, en niet van table locking (en ook handig: je kunt transacties gebruiken).quote:Op zondag 1 februari 2009 17:09 schreef ursel het volgende:
Ok, dat wisten we niet, weer wat geleerd..![]()
quote:Op zondag 1 februari 2009 16:44 schreef veldmuis het volgende:
Ik heb een vraag (alweer)
het resultaat van deze query:
[ code verwijderd ]
is een 0 of een 1. Die wil ik omkeren en dan terug in de DB proppen:
[ code verwijderd ]
Ik krijg het niet voor elkaar. Kan ik dit in één query doen? Ik weet hoe een subquery werkt, maar hoe ik een 0 in een 1 kan omtoveren met een subquery weet ik niet. Kan dat sowieso wel?
1 |
1 |
Dan is die ABS() bij actief wel wat overbodig, tenzij actief ook negatief kan zijn. En dat lijkt me weer wat onlogisch.quote:
Maak er dan dit van:quote:
1 |
Aha. Slim!quote:Op maandag 2 februari 2009 15:43 schreef GlowMouse het volgende:
Iets met getimagesize, een if en een new_height = 500/old_width * old_height.
Ik zou er niet aan beginnen omdat je beveiliging goed op orde moet zijn.quote:Op maandag 2 februari 2009 16:03 schreef Boschkabouter het volgende:
Ik ben nog niet zo lang bezig met php & MySQL, maar hoe moeilijk is het om een webshop te maken?
Hebben jullie toevallig nog tips of trucs die ik kan gebruiken?
1 2 3 | ."2: ".$_POST['aantal1'].$_POST['product1'].$_POST['prijs1']."<br />" ."3: ".$_POST['aantal2'].$_POST['product2'].$_POST['prijs2']."<br />"; |
1 2 3 4 5 6 7 8 9 10 | for ( $teller = 1; $teller <= 100; $teller += 1) { if ( isset($_POST['aantal$id'] ) { echo "$id: ".$_POST['aantal$id'].$_POST['product$id'].$_POST['prijs$id']."<br />"; id+=1 } } } |
1 2 3 4 5 | echo "$id: ".$_POST['aantal$id'].$_POST['product$id'].$_POST['prijs$id']."<br />"; id+=1 } |
1 2 3 4 5 | echo "$id: ".$_POST['aantal'.$id].$_POST['product'.$id].$_POST['prijs'.$id]."<br />"; $id++ ; } |
Wat is de waarde van $id voordat de lus begint?quote:Op maandag 2 februari 2009 18:30 schreef erikkll het volgende:
Ik krijg geen foutmelding meer!maar ook geen echo's
[ code verwijderd ]
1 2 3 4 5 6 7 | while ( isset($_POST['aantal'.$id] )) { echo "$id: ".$_POST['aantal'.$id].$_POST['product'.$id].$_POST['prijs'.$id]."<br />"; $id++ ; } |
Jawel, maar ik wil er een xml file van maken, uiteindelijk. Die echo was alleen om te kijken of 't uberhaupt zou werkenquote:Op maandag 2 februari 2009 18:46 schreef cablegunmaster het volgende:
kan je de waardes niet beter in een tabel gooien en ze daarvan uit echo'en?
of snap je niet hoe dat moet ?
Kijk, het hoeft geen super uitgebreide shop te worden. Zo was er geen winkelwagensysteem nodig (er hoeft maar 1 product gekocht te worden) en betalen kan in het begin gewoon per overschrijving/iDeal.quote:Op maandag 2 februari 2009 16:18 schreef GlowMouse het volgende:
[..]
Ik zou er niet aan beginnen omdat je beveiliging goed op orde moet zijn.
Ik bedoel een online editor. Eentje die ik upload en dan online kan gebruiken. Html tags moeten als weergave omgezet worden dus.quote:Op dinsdag 3 februari 2009 13:03 schreef veldmuis het volgende:
Zou je dan niet gewoon notepad++ pakken?
Ik vind de organisatie van beide nogal lastig. Ik wil namelijk omdat er maar 4 standaard html files zijn die aan te passen zijn een dropdown menu erboven. Ik hoef dus niet te uploaden, maar iets wat al staat op de server.quote:Op dinsdag 3 februari 2009 13:33 schreef veldmuis het volgende:
Oow zo. FCKEditor?
TinyMCE?
Zijn allebei te strippen tot een heel kale editor.
FCKEditor heeft als voordeel dat de uploadmogelijkheid er standaard in zit, bij TinyMCE is dat een betaalde optie.
FCKEdit poept XHTML uit, TinyMCE kan HTML en XHTML. Is wat je wil.
1 2 3 4 5 6 7 8 | PHP * * * MySQL * * * Java * * * ETC * * * * = keuze in te vullen door gebruiker |
Matrices?quote:Op dinsdag 3 februari 2009 14:32 schreef Chandler het volgende:
Weet iemand (niet echt PHP maar goed) hoe je dit soort vragen noemt
[ code verwijderd ]
Heb je toevallig een scriptje wat jij runt dan? Of is makkelijker voor mij om los te beginnen.quote:Op dinsdag 3 februari 2009 14:13 schreef veldmuis het volgende:
Dat kan toch? Zo gebruik ik de FCKeditor ook.
quote:
Een enquete?quote:Op dinsdag 3 februari 2009 14:32 schreef Chandler het volgende:
Weet iemand (niet echt PHP maar goed) hoe je dit soort vragen noemt
[ code verwijderd ]
Ik geef in de url een id mee, dat ID hang ik aan een query die netjes de inhoud uit de db die ik wil hebben in de FCKEditor stopt.quote:Op dinsdag 3 februari 2009 14:34 schreef Flaccid het volgende:
[..]
Heb je toevallig een scriptje wat jij runt dan? Of is makkelijker voor mij om los te beginnen.
Klopt maar in een enquete heb je meer vraag soorten.quote:
Ik heb deze gevonden:quote:Op dinsdag 3 februari 2009 14:43 schreef veldmuis het volgende:
[..]
Ik geef in de url een id mee, dat ID hang ik aan een query die netjes de inhoud uit de db die ik wil hebben in de FCKEditor stopt.
In diezelfde pagina wordt de inhoud ook geupdated als er postdata wordt meegezonden, en die postdata komt, jawel, van de FCKEditor.
Werkt bij mij perfect.
Als je UTF-8 gebruikt moet je dat bij bepaalde PHP functies ook meegeven. Bijv. bij htmlentities() en html_entity_decode(), anders probeert hij het default in ISO-8859-1 te veranderen, wat niet goed gaat.quote:Op dinsdag 3 februari 2009 15:42 schreef GlowMouse het volgende:
Overal dezelfde content-type gebruiken (geen UTF-8 en ISO-8859 door elkaar gebruiken).
Bij veel string functies kan dat niet, dus tenzij het echt nodig is zou ik tot PHP6 uitkomt bij UTF-8 uit de buurt blijven.quote:Op dinsdag 3 februari 2009 15:52 schreef mstx het volgende:
[..]
Als je UTF-8 gebruikt moet je dat bij bepaalde PHP functies ook meegeven. Bijv. bij htmlentities() en html_entity_decode(), anders probeert hij het default in ISO-8859-1 te veranderen, wat niet goed gaat.
(Daar heb ik zelf ooit eens een paar uur mee lopen kloten voordat ik daar achter kwam.)
Het hoeft gelukkig ook maar bij een beperkt aantal functies.quote:Op dinsdag 3 februari 2009 15:54 schreef GlowMouse het volgende:
[..]
Bij veel string functies kan dat niet, dus tenzij het echt nodig is zou ik tot PHP6 uitkomt bij UTF-8 uit de buurt blijven.
1 |
de html files die ik hgebruik bevatten geen content type. Zou dat het kunnen zijn? Ik dacht dit is niet nodig omdat ze toch ge-include worden.quote:Op dinsdag 3 februari 2009 15:42 schreef GlowMouse het volgende:
Overal dezelfde content-type gebruiken (geen UTF-8 en ISO-8859 door elkaar gebruiken).
Het gaat om de communicatie tussen server en client.quote:Op dinsdag 3 februari 2009 17:44 schreef Flaccid het volgende:
[..]
de html files die ik hgebruik bevatten geen content type. Zou dat het kunnen zijn? Ik dacht dit is niet nodig omdat ze toch ge-include worden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function getSesPost($pst, $ses, $def = '') { if (isSet($_POST[$pst])) { return $_POST[$pst]; } elseif (isSet($_SESSION['card']) && isSet($_SESSION['card'][$ses])) //zal deze wel zijn { // lijn 11 <img class="rde_img_smiley" src="http://i.fok.nl/s/biggrin.gif" width="15" height="15" alt="" /> return $_SESSION['card'][$ses]; } elseif ($def != '') { return $def; } return; } ?> |
1 |
Maar wat moet ikd us nu doen voor ?[/dom]quote:Op dinsdag 3 februari 2009 18:11 schreef GlowMouse het volgende:
[..]
Het gaat om de communicatie tussen server en client.
Kijken waar dat fout gaat.quote:Op dinsdag 3 februari 2009 18:50 schreef Flaccid het volgende:
[..]
Maar wat moet ikd us nu doen voor ?[/dom]
Hmm... maakt dat zoveel verschil dan?quote:Op dinsdag 3 februari 2009 18:37 schreef GlowMouse het volgende:
var_dump($_SESSION)?
En het is isset, niet isSet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ( [card] => stdClass Object ( [id] => 71 [cat_id] => 1 [code] => f8b88367 [filename] => f8b88367.jpg [filehash] => 1539814517 [titel] => [omschrijving] => [views] => 0 [send] => 0 [validated] => 1 [cat_titel] => algemeen ) ) |
1 2 3 4 5 | 2 blabla * 3 blabla * 4 blabla 5 blabla |
1 |
Competence Matrix?quote:Op dinsdag 3 februari 2009 14:32 schreef Chandler het volgende:
Weet iemand (niet echt PHP maar goed) hoe je dit soort vragen noemt
[ code verwijderd ]
Waarschijnlijk bedoelt hij het bestand dat geinclude moet worden wat je dan niet op zichzelf in de browser moet kunnen openen.quote:Op woensdag 4 februari 2009 20:17 schreef GlowMouse het volgende:
http://nl3.php.net/get_included_fails
Maar als het zo belangrijk is om te includen, kun je toch require gebruiken?
1 2 3 4 5 6 7 8 | if(preg_match_all('/([\[{]WFL\-[a-zA-Z0-9]{0,}[0-9 #]{0,6}[\]}]).*">\t<a href="topic\/([0-9]{6,})\"/', $html, $matches)) { $topics = array(); foreach($matches[2] as $index => $id) $topics[] = array('id' => $id, 'title' => $matches[2][$index]); $wfl = 'Laatste WFL-LFC topic: <a href="http://forum.fok.nl/topic/'.$topics[0]['id'].'/1/50">'.$topics[0]['id'].'</a><br>'; } |
1 2 3 4 5 6 7 8 9 10 | $html = file_get_contents('http://forum.fok.nl/forum/9'); if(preg_match_all('/([\[{]WFL\-.*#\d+[\]}]).*">\t<a href="topic\/(\d{6,})\"/Ui', $html, $matches)) { $topics = array(); foreach($matches[2] as $index => $id) { $topics[] = array('id' => $id, 'title' => $matches[2][$index]); } $wfl = 'Laatste WFL-LFC topic: <a href="http://forum.fok.nl/topic/'.$topics[0]['id'].'">'.$topics[0]['id'].'</a><br>'; } ?> |
Werkt!quote:Op vrijdag 6 februari 2009 06:31 schreef Light het volgende:
[ code verwijderd ]
Iets korter gemaakt, en hoofdletterongevoelig. Dat laatste doe je met de i na de reguliere expressie. De U is om de expressie ungreedy te maken, dan pakt'ie met het stukje .*# alles tot en met het eerste #. En \d betekent een digit, is dus hetzelfde als [0-9].
Zoals altijd geldt ook voor deze code dat'ie niet getest is
1 2 3 4 5 6 7 8 9 10 | $html = file_get_contents('http://forum.fok.nl/forum/3'); if(preg_match_all('/([\[{]{0,1}SC[\]}].*[a-zA-Z0-9 #]{0,15})\">\t<a href="topic\/([0-9]{6,})\"/', $html, $matches)) { $topics = array(); foreach($matches[2] as $index => $id) $topics[] = array('id' => $id, 'title' => $matches[2][$index]); $gc = 'Laatste GC-Slowchat topic: <a href="http://forum.fok.nl/topic/'.$topics[0]['id'].'/1/50">'.$topics[0]['id'].'</a><br>'; } ?> |
1 |
quote:Op vrijdag 6 februari 2009 12:48 schreef Roy_T het volgende:
Je moet hem wel als header meesturen natuurlijk. Ik vind het overigens meer dan dubieus om een header mee te sturen die "liegt" dat SpamAssassin een spam-check gedaan heeft. SpamAssassin voegt die header zelf wel toe na het scannen.
Dan zit je hier niet helemaal goed denk ik. Je kunt bijvoorbeeld Dreamweaver proberen, maar met een paar klikken een leuke website bouwen is eigenlijk niet te doen imo.quote:Op vrijdag 6 februari 2009 13:26 schreef RoW_0 het volgende:
mensen, ik wil een klein website maken 'een visitekaartje' en ik wil graag weten welke programma's het beste zijn om met een paar muisklikjes een leuke website te ontwerpen.
iemand?
beetje in de stijl van wordpress. zonder een database.
Termineer je de header van de mail wel goed? Wat is de mail zoals je hem weg stuurt?quote:Op vrijdag 6 februari 2009 12:34 schreef veldmuis het volgende:
Ik doe nog eens een vraag.
Ik probeer een html mail te versturen, en dat gaat best prima, alleen is de ontvangende server van mening dat er nog een header bij moet:
[ code verwijderd ]
Prima, maar die code komt bovenaan de mail te staan. In de source staan dan ook die regels, en daarna komt pas de <html>tag.
Iemand een idee of dat op te lossen is? Dat moet toch kunnen?
1 2 3 4 5 6 7 8 | $headers = "To: xxx <xxx@xxx.nl>\r\n"; $headers .= "From: xxx <xxx@xxx.nl>\r\n"; $headers .= "X-Mailer: xxx\n"; $headers .= 'MIME-Version: 1.0' . "\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; mail($to, $subject, $message, $headers); |
Ik weet het niet precies, maar regel 4 en 5 moet je ook met "\r\n" afsluiten.quote:Op vrijdag 6 februari 2009 13:56 schreef veldmuis het volgende:
Zo:
[ code verwijderd ]
$message bevat <html> t/m </html>
Dat is sowieso een goed idee.quote:Op vrijdag 6 februari 2009 14:01 schreef GlowMouse het volgende:
PHPMailer gebruiken, met HTML-mails gaat gewoon teveel mis. En als het dan nog niet werkt, kun je terecht SpamAssassin de schuld geven
Dan komt de mail gewoon als plaintext binnen, en zie ik dus lekker de html zut. Ik ga eens kijken naar PHPMailerquote:Op vrijdag 6 februari 2009 14:02 schreef HuHu het volgende:
[..]
Ik weet het niet precies, maar regel 4 en 5 moet je ook met "\r\n" afsluiten.
http://www.w3schools.com/quote:Op vrijdag 6 februari 2009 16:09 schreef RoW_0 het volgende:
Okay nee goed ik heb dus een pagina gemaakt in dreamweaver. maar maakt hij geen 'Projectbestand' op? hij maakt alleen maar een paar html bestandjes aan. Maar als ik het afsluit en weer opstart, welke bestand moet ik op klikken dan/? als ik de frameset open krijg ik niet de balken om bijv de linker frame groter of kleiner te maken... en als ik 6 frames heb.., in welke zet ik dan de titel die in de taakbar verschijnt?
ik heb dat allemaal gebruikt op die site ,alleen frames nietquote:Op vrijdag 6 februari 2009 16:13 schreef veldmuis het volgende:
Als je nu begint met het bouwen van een website, ga dan iets moderns lezen. Frames gebruik je gewoon niet meer. Dat is antiek.
Blijf weg bij die handleidinghtml.nl enzo, dat soort sites hebben teksten die in de 90's bedacht zijn.
1 2 3 4 5 | $query = "UPDATE verkooporder SET status = '".$status."' WHERE vo_nr = '".$vo_nr."';"; $query2 = "UPDATE verkooporderregel SET geleverd = geleverd + besteld, besteld = '0' WHERE vo_nr = '".$vo_nr."';"; $query3 = "UPDATE artikel,verkooporderregel SET voorverkopen = voorverkopen - besteld where vo_nr = '".$vo_nr."' and artikel.art_nr = verkooporderregel.art_nr ;"; ?> |
als je met cascading regels gaat werken misschienquote:Op zondag 8 februari 2009 16:25 schreef cablegunmaster het volgende:
[ code verwijderd ]
zou dit in minder querys kunnen ?
Waarom zou je dat willen? Je doet drie updates, dus waarom zou dat in minder dan 3 update-queries moeten?quote:Op zondag 8 februari 2009 16:25 schreef cablegunmaster het volgende:
[ code verwijderd ]
zou dit in minder querys kunnen ?
ik dacht dat je dan alle tabellen lockte.quote:Op zondag 8 februari 2009 16:35 schreef HuHu het volgende:
[..]
Waarom zou je dat willen? Je doet drie updates, dus waarom zou dat in minder dan 3 update-queries moeten?
Die microseconde dat een tabel gelocked is ga je echt niet merken. Waarschijnlijk is het uitvoeren van 3 losse queries ook nog eens sneller dan één ingewikkelde query die meerdere tabellen update en allemaal tegelijk locked.quote:Op zondag 8 februari 2009 16:39 schreef cablegunmaster het volgende:
[..]
ik dacht dat je dan alle tabellen lockte.
ah okquote:Op zondag 8 februari 2009 17:05 schreef HuHu het volgende:
[..]
Die microseconde dat een tabel gelocked is ga je echt niet merken. Waarschijnlijk is het uitvoeren van 3 losse queries ook nog eens sneller dan één ingewikkelde query die meerdere tabellen update en allemaal tegelijk locked.
Bij UPDATE tbl doe je niets met andere tabellen, dus andere tabellen worden niet gelockt.quote:Op zondag 8 februari 2009 16:39 schreef cablegunmaster het volgende:
[..]
ik dacht dat je dan alle tabellen lockte.
zo groot word het denk ik nog niet ik was aan het vooruit denken waarom hoe en wat.quote:Op zondag 8 februari 2009 17:44 schreef Roy_T het volgende:
Als je bang bent voor locking (door relatief veel schrijfactiviteit) zou je InnoDB kunnen overwegen, met row locking ipv table locking.
1 |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | `id` int(10) unsigned NOT NULL auto_increment, `type_id` enum('i','e') NOT NULL default 'e', `link` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `type_id` (`type_id`,`link`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `stats_referer_link` ( `stat_id` int(10) unsigned NOT NULL, `referer_id` int(10) unsigned NOT NULL, `date` date NOT NULL, `hits` mediumint(8) unsigned NOT NULL, `lastdate` time NOT NULL, UNIQUE KEY `stat_id` (`stat_id`,`referer_id`,`date`), KEY `referer_id` (`referer_id`,`lastdate`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
1 2 3 4 5 6 7 8 9 10 | `id` int(10) unsigned NOT NULL auto_increment, `type_id` enum('i','e') NOT NULL default 'e', `link` varchar(128) NOT NULL, `stat_id` int(10) unsigned NOT NULL, `date` date NOT NULL, `hits` mediumint(8) unsigned NOT NULL, `lastdate` time NOT NULL, PRIMARY KEY (`id`) ) ; |
tof ik had hem nodig voor een scriptie waarmee hij een uiterst betaaldatum neerzette en had even geen idee hoequote:Op zondag 8 februari 2009 22:08 schreef HuHu het volgende:
[ code verwijderd ]
of gewoon
[ code verwijderd ]
het is veilig alleen je kan het nog makkelijker doen door er een header aan toe te voegen die je eruit forceertquote:Op woensdag 11 februari 2009 10:51 schreef veldmuis het volgende:
Als ik een $_SESSION['ingelogd'] maak, en die na het inloggen op true, en bovenaan elke pagina een if(!$_SESSION['ingelogd']) {exit;}, is dat dan veilig?
1 2 3 4 5 6 7 8 9 | if(!$_SESSION['ingelogd'] == true ) { header('Location: http://www.example.com/index.php'); exit; }else{ blablabla deze is voor ingelogde mensen } ?> |
Als je op shared hosting zit, is het vertandig om een eigen directory met sessie-gegevens te definiëren. Standaard worden in een shared hosting omgeving de sessiegegevens meestal in een algemene temp-directory gezet en daar kunnen alle gebruikers van de server bij. Het lijkt me niet dat je wil dat andere users van je webhost jouw sessiedata kunnen uitlezen of wijzigen.quote:Op woensdag 11 februari 2009 10:51 schreef veldmuis het volgende:
Als ik een $_SESSION['ingelogd'] maak, en die na het inloggen op true, en bovenaan elke pagina een if(!$_SESSION['ingelogd']) {exit;}, is dat dan veilig?
1 2 3 4 | session_save_path('/home/martijn/sessies'); session_start(); ?> |
Dat is eingelijk vrij simpel, wanneer ik de tabellen JOIN om de gegevens uit te lezen.quote:Op woensdag 11 februari 2009 09:09 schreef Roy_T het volgende:
Wanneer is 'ie precies sloom, bij welke bewerking? Dit is natuurlijk koffiedik kijken; die tabellen maken je script niet sloom, maar het gebruik ervan
1 2 3 4 5 6 7 | FROM stats_referer LEFT JOIN stats_referer_link ON stats_referer_link.referer_id = stats_referer.id WHERE stats_referer_link.stat_id = '12' AND stats_referer.type_id = 'e' AND stats_referer_link.`date` = '2009-02-11' ORDER BY stats_referer_link.lastdate DESC LIMIT 25 |
En wat levert de EXPLAIN van die query op?quote:Op woensdag 11 februari 2009 11:45 schreef Chandler het volgende:
[..]
Dat is eingelijk vrij simpel, wanneer ik de tabellen JOIN om de gegevens uit te lezen.
Ik wil namelijk referers uitlezen op bepaalde data
Voorbeeld:
[ code verwijderd ]
Echter moet ik de huidige indexes gebruiken voor het script wat de statistieken opslaat, als ik deze verander wordt het opslaan van de statistieken slomer en dat is niet de bedoeling (statistieken opslaan kost 0.010 seconde)
Deze query kost 20 secondenNA F5 1/20 daarvan!
Dat is een nette tip! Ik dank u hartelijkquote:Op woensdag 11 februari 2009 11:18 schreef Tijn het volgende:
[..]
Als je op shared hosting zit, is het vertandig om een eigen directory met sessie-gegevens te definiëren. Standaard worden in een shared hosting omgeving de sessiegegevens meestal in een algemene temp-directory gezet en daar kunnen alle gebruikers van de server bij. Het lijkt me niet dat je wil dat andere users van je webhost jouw sessiedata kunnen uitlezen of wijzigen.
Daarnaast is het ook verstandig om een eigen sessie-dir te gebruiken als er gebruik wordt gemaakt van meerdere verschillende webservers voor één website, zoals je bv bij loadbalancing ziet. Elke server heeft dan vaak z'n eigen tmp-dir met daarin je sessiegegevens en als een gebruiker halverwege het surfen opeens naar een andere webserver wordt geschakeld, is z'n sessie kwijt en lijkt 'ie te worden uitgelogd. Dat wil je natuurlijk ook niet.
De beste plek om je sessie-gegevens te bewaren is in je homedir, ergens boven de webroot. Mijn homedir is bijvoorbeeld /home/martijn en m'n webroot is /home/martijn/www. M'n mapje voor sessies noem ik /home/martijn/sessies en zorg dmv chmod dat de user waaronder PHP draait hier schrijfrechten heeft.
Vervolgens vertel ik PHP dat 'ie deze map moet gebruiken met de functie session_save_path(). Dat moet je doen voordat je session_start() aanroept. Een script die sessies gebruikt ziet er dan bijvoorbeeld zo uit:
[ code verwijderd ]
Om te checken of PHP inderdaad de sessies op de goede plek wegschrijft, kun je session_save_path() zonder argumenten aan roepen. De functie returned dan de huidige locatie voor sessiegegevens.
Dat kun je vaak oplossen door "sticky sessions" aan te zetten op de load balancer. Neemt niet weg dat je een valide punt maaktquote:Op woensdag 11 februari 2009 11:18 schreef Tijn het volgende:
Daarnaast is het ook verstandig om een eigen sessie-dir te gebruiken als er gebruik wordt gemaakt van meerdere verschillende webservers voor één website, zoals je bv bij loadbalancing ziet. Elke server heeft dan vaak z'n eigen tmp-dir met daarin je sessiegegevens en als een gebruiker halverwege het surfen opeens naar een andere webserver wordt geschakeld, is z'n sessie kwijt en lijkt 'ie te worden uitgelogd. Dat wil je natuurlijk ook niet.
1 2 | 1 SIMPLE stats_referer_link eq_ref stat_id,referer_id stat_id 11 const,gfxstatcom_db1.stats_referer.id,const 1 Using where |
1 2 3 4 5 6 7 8 9 10 11 | if(isset($_POST['artikelaantal'])){ foreach($_POST['artikelaantal'] as $artikelaantal => $aantal ) { /* $artikel = $_POST['artikel_nr']; $aantal = $_POST['artikelaantal']; $prijs = $_POST['prijs'];*/ } echo $artikel." ".$aantal." ". $prijs; } ?> |
1 2 3 4 5 6 | FROM stats_referer_link l LEFT JOIN stats_referer r ON (l.referer_id = r.id) WHERE l.stat_id = '12' AND r.type_id = 'e' AND l.`date` = '2009-02-11' ORDER BY l.lastdate DESC LIMIT 25 |
Dat is geen PHP; [Javascript] voor dummies (deel 8)quote:Op woensdag 11 februari 2009 13:03 schreef Likkende_Lassie het volgende:
Ik heb icm met AJAX een aantal kolomen zoals in dit voorbeeld:
[ afbeelding ]
De gebruiker kan al op een interactive manier de kolomen verplaatsen etc, maar nu zou het mooi zijn
als het ook mogelijk is om de kolom breedte aan te kunnen passen, door te slepen.
Heb het vaker gezien, dus het zou mogelijk moeten zijn. Iemand een idee hoe te doen??
1 2 3 4 5 6 7 8 | function trim_value($value) { $new_string = trim($value); $end_string = rtrim($new_string); return $value; } ?> |
1 2 3 4 5 6 | if(!empty($_POST)) { array_walk($_POST['artikelaantal'], 'trim_value'); echo $_POST['artikelaantal'][$i]; $i++;} if(empty($_POST)){ echo '0';} echo " \"> ?> |
In die functie krijg je $value weer precies zo terug als dat hij erin is gegaan...quote:Op woensdag 11 februari 2009 13:37 schreef cablegunmaster het volgende:
[ code verwijderd ]
<input type="text" name="artikelaantal[]" size="7" maxlength="5" value="";
if(!empty($_POST))
{ array_walk($_POST['artikelaantal'], 'trim_value');
echo $_POST['artikelaantal'][$i]; $i++;}
if(empty($_POST)){ echo '0';} echo " "></td>
[/php]
ik krijg een irritante wit spatie achter alle artikelaantallen hoe haal ik dit weg? want ik krijg die trim functie niet goed werkendiemand een idee
?
klopt vergat $end_string; ipv $valuequote:Op woensdag 11 februari 2009 13:41 schreef HuHu het volgende:
Je trim_value geeft de ongewijzigde input terug hè.
quote:Op woensdag 11 februari 2009 13:35 schreef GlowMouse het volgende:
[..]
Dat is geen PHP; [Javascript] voor dummies (deel 8)
Een vraagje voordat ik het ga uitvoeren, is het gebruiken van meerdere indexes handig? aangezien ik op de tabel van de referrs al een index heb voor type_id en link.quote:Op woensdag 11 februari 2009 13:32 schreef GlowMouse het volgende:
Chandler, ik snap je query niet goed. Waarom doe je een left_join op stats_referer_link? Ik zou zeggen dat wanneer voor een bepaalde stat_id een link niet voorkomt, je die link niet in je queryresultaat wilt hebben. Ik zou het eerder andersom doen: staat de link per ongeluk niet in stats_referer, dat je toch die regel wilt tonen.
[ code verwijderd ]
Indices:
stats_referer_link: (stat_id,date,lastdate)
stats_referer: (id, type_id)
Deze query moet binnen 0.01s uit te voeren zijn.
Dat gaat ook prima hoorquote:Op woensdag 11 februari 2009 15:49 schreef Chandler het volgende:
Ik lees idd dat innoDB veel handiger is voor inserts/updates iddmaar dan is het nog maar de vraag hoe het omgaat met de lees acties... want ook tussen al het inserten en updaten moet er af en toe wat gelezen worden
![]()
1 2 3 4 5 6 | FROM stats_referer_link l LEFT JOIN stats_referer r ON (l.referer_id = r.id) WHERE l.stat_id = '12' AND r.type_id = 'e' AND l.`date` = '2009-02-11' ORDER BY l.lastdate DESC LIMIT 25 |
Je was tegelijkertijd ook 20 keer zoveel write queries aan het doen dan reads, zoals naar jouw zeggen in je real life situatie?quote:Op woensdag 11 februari 2009 17:13 schreef Chandler het volgende:
Ik heb even een test gedraaid.
[ code verwijderd ]
Lokaal krijg ik bij myISAM 0.9 seconden en innoDB 1.0 (meerdere keren getest)...
Vet tijdstip!quote:Op woensdag 11 februari 2009 13:37 schreef cablegunmaster het volgende:
[ code verwijderd ]
<input type=\"text\" name=\"artikelaantal[]\" size=\"7\" maxlength=\"5\" value=\"";
[ code verwijderd ]
</td>
ik krijg een irritante wit spatie achter alle artikelaantallen hoe haal ik dit weg? want ik krijg die trim functie niet goed werkendiemand een idee
?
1 2 3 4 5 6 | function trim_value(&$value) { $value = trim($value); } ?> |
1 2 3 4 5 6 7 8 | print "artikelnr:<br/>"; foreach($_POST['artikel_nr'] as $a => $art_nr) print($a . ' = ' . $art_nr. '<br/>'); print "aantallen:<br/>"; foreach($_POST['artikelaantal'] as $i => $aantal){ print($i . ' = ' . $aantal. '<br/>'); ?> |
ja nee niet op die manier.. maar hoe krijg ik die 2 in 1 table.quote:Op woensdag 11 februari 2009 18:32 schreef veldmuis het volgende:
Je ziet dat er een <br/> in je print staat?
quote:
1 2 3 4 5 6 7 8 9 10 | while($i < count($one)) { while($a = each($two)) { echo $a[1]." - ".$one[$i].", "; } $i++; } ?> |
Da's niet zo moeilijk toch? Gewoon nadenken wat je wilt, namelijk artikelnummer en aantal op dezelfde regel (table row).quote:Op woensdag 11 februari 2009 18:38 schreef cablegunmaster het volgende:
[..]
:Y maar hoe krijg ik dan dat er artikel _ nr en dan aantal volgende regel herhaal komt te staan ? :P
1 2 3 4 5 6 7 8 9 10 11 | echo '<table>'; for($i = 0; $i < count($art_no); $i++) { echo '<tr>'; echo '<td>'.$i.'</td>'; echo '<td>'.$art_no[$i].'</td>'; echo '<td>'.$aantal[$i].'</td>'; echo '</tr>'; } echo '</table>'; ?> |
Held !quote:Op woensdag 11 februari 2009 19:27 schreef Light het volgende:
[..]
Da's niet zo moeilijk toch? Gewoon nadenken wat je wilt, namelijk artikelnummer en aantal op dezelfde regel (table row).
[ code verwijderd ]
quote:Op woensdag 11 februari 2009 19:43 schreef cablegunmaster het volgende:
[..]
Held !Dankje
Hiermee haal ik het wel ^^. ik dacht een moeilijke while met elke while dit maar een for is beter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $k = count($art_no); echo '<table>'; for($i = 0; $i < $k ; $i++) { if($aantal[$i] > 0 ){ echo '<tr>'; echo '<td>'.$i.'</td>'; echo '<td>'.$art_no[$i].'</td>'; echo '<td>'.$aantal[$i].'</td>'; echo '</tr>'; } } echo '</table>'; ?> |
Kan, ik weet niet of dat een (duidelijke) snelheidswinst oplevert.quote:Op woensdag 11 februari 2009 19:43 schreef slacker_nl het volgende:
Die count even uit de loop halen mensen.
Correctquote:Op woensdag 11 februari 2009 19:47 schreef cablegunmaster het volgende:
[..]
[ code verwijderd ]
zo heb ik hem dus als aantal groter is dan 0 toch?
maar dan krijg ik 0 6 2 te zien ipv de waardesquote:
1 2 3 4 5 | echo $art_nr; $k = count($art_nr); echo $k."<br/>"; ?> |
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 | If(!empty($_POST)){ echo "<br/>".Var_dump($_POST)."<br/>"; print "artikelnr:<br/>"; foreach($_POST['artikel_nr'] as $i => $art_nr) print($i . ' = ' . $art_nr. '<br/>'); print "aantallen:<br/>"; foreach($_POST['artikelaantal'] as $i => $aantal){ print($i . ' = ' . $aantal. '<br/>'); } $k = count($art_nr[$i]); echo $k."<br/>"; echo $art_nr; echo '<table>'; for($i = 0; $i < $k; $i++) { echo '<tr>'; echo '<td>'.$i.'</td>'; echo '<td>'.$art_nr[$i].'</td>'; echo '<td>'.$aantal[$i].'</td>'; echo '</tr>'; } echo '</table>'; echo $k; } ?> |
Nee natuurlijk nietquote:Op woensdag 11 februari 2009 18:00 schreef Roy_T het volgende:
Je was tegelijkertijd ook 20 keer zoveel write queries aan het doen dan reads, zoals naar jouw zeggen in je real life situatie?
Gelukkig maar, bij jouw situatie hoor je geen grote verschillen te ontdekken. Die zie je pas bij grote belasting. Die indices zouden je query wel 100x sneller maken. Wellicht dat je nog andere queries hebt die er profijt van hebben, want ik zou toch neigen naar wel toevoegen.quote:Op woensdag 11 februari 2009 21:03 schreef Chandler het volgende:
[..]
Maar ik heb getest op een database van myISAM en dezelfde database maar dan geconverteerd naar innoDB en het verschil wsa praktisch nihil
Met dit kleine voorbeeld niet, maar met grotere arrays wel.quote:Op woensdag 11 februari 2009 20:10 schreef Light het volgende:
[..]
Kan, ik weet niet of dat een (duidelijke) snelheidswinst oplevert.
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.quote:Op woensdag 11 februari 2009 20:31 schreef cablegunmaster het volgende:
[..]
maar dan krijg ik 0 6 2 te zien ipv de waardes
doe ik toch iets fouts
* gaat napluizen
laatste getal is laatste $aantal maar dan alleen het eerste cijfer
$i is 0
en mn $k echot 1 uit
die 6 komt van art_nrs die wel goed doortellen
[ code verwijderd ]
uitkomst:
$art_nr = 6
$k = 1
doe ik toch iets fout( count is voor arrays en ik nam aan dat er 6 waardes in zitten maar hij vind van niet
)
zelfs met apache testen kom ik hierop uit![]()
[ code verwijderd ]
terwijl bij de foreach hij wel alles er mooi uitgooit![]()
quote:Op woensdag 11 februari 2009 21:37 schreef Light het volgende:
[..]
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.
Het hele row vs table locking voordeel gaat op bij veel writes, dus je testcase is waardeloosquote:Op woensdag 11 februari 2009 21:03 schreef Chandler het volgende:
Nee natuurlijk niet
Maar ik heb getest op een database van myISAM en dezelfde database maar dan geconverteerd naar innoDB en het verschil wsa praktisch nihil
ja toen ik het eenmaal door had heb ik dit geschrevenquote:Op woensdag 11 februari 2009 21:37 schreef Light het volgende:
[..]
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.
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 | $p = count($_SESSION['artikelnr']); // k= aantal regels van het winkelmandje $k = 1; $totaalprijs= 0; for($i = 0; $i < $p; $i++) { if($_SESSION['artikelaantal'][$i] > 0 ) { if(is_numeric($_SESSION['artikelaantal'][$i])) { if($_SESSION['artikelaantal'][$i] <= $_SESSION['voorraad'][$i]) { echo '<tr>'; echo '<td>'.$k.'</td>'; echo '<td>'.$_SESSION['artikelnr'][$i].'</td>'; echo '<td>'.$_SESSION['omschrijving'][$i].'</td>'; echo '<td>'.$_SESSION['artikelaantal'][$i].'</td>'; echo '<td>'.$_SESSION['artikelprijs'][$i].'</td>'; echo '</tr>'; $k = $k+1; $totaalprijs = $totaalprijs +($_SESSION['artikelprijs'][$i] * $_SESSION['artikelaantal'][$i]); } } } } echo "<tr><td colspan =\"4\">Totaal prijs ¤".$totaalprijs."</td></tr></table></form><br/>"; } ?> |
1 |
* shrugs * kon zo ook jaquote:Op donderdag 12 februari 2009 00:38 schreef Roy_T het volgende:
Waarom gebruik je drie if's binnen elkaar, en niet gewoon:
[ code verwijderd ]
(het lijkt me overigens logischer om eerst te kijken of iets numeriek is, voordat je gaat kijken of het groter is dan 0)
In dit geval geen extra haakjes nodig hoorquote:Op donderdag 12 februari 2009 00:41 schreef cablegunmaster het volgende:
* shrugs * kon zo ook jamaar ik vind het zo'n gedoe met && en || dan moet je weer met extra haakjes werken
![]()
het is voor een school project waar niemand meehelpt en ik een hoog cijfer op ga halenquote:Op donderdag 12 februari 2009 00:43 schreef Roy_T het volgende:
[..]
In dit geval geen extra haakjes nodig hoor
Jouw manier werkt, maar is allesbehalve "marktconform" (en zou bij ieder bedrijf onacceptabel zijn).
extra overhead = rekenkracht ?quote:Op donderdag 12 februari 2009 00:58 schreef Roy_T het volgende:
Het idee is iig om geen overbodige statements te gebruiken, dus als het in één if kan: stop het in één if(tenzij het echt onleesbaar wordt, maar dat is hier niet het geval).
Wanneer "is_numeric($_SESSION['artikelaantal'][$i])" false is trouwens, dan voert 'ie de rest van de if niet uit, dus je zorgt niet voor extra overhead
tenzij je foutmeldingen of iets anders wilt triggeren, afhankelijk van wat er fout gaat, dan kom je er niet uit met 1 statement.... maar in dit geval (zonder else statements) is 1 statement wel een stuk netter ja.quote:Op donderdag 12 februari 2009 00:58 schreef Roy_T het volgende:
Het idee is iig om geen overbodige statements te gebruiken, dus als het in één if kan: stop het in één if(tenzij het echt onleesbaar wordt, maar dat is hier niet het geval).
Dat leek mij voor zich te sprekenquote:Op donderdag 12 februari 2009 08:28 schreef Xcalibur het volgende:
tenzij je foutmeldingen of iets anders wilt triggeren, afhankelijk van wat er fout gaat, dan kom je er niet uit met 1 statement.... maar in dit geval (zonder else statements) is 1 statement wel een stuk netter ja.
ik weet dat het met visio kan implementeren maar dat was ook ver van volledig maar je kon wel verbinding maken met de database en alles binnen halen. hoe en wat geen ideequote:Op donderdag 12 februari 2009 11:30 schreef Keiichi het volgende:
Weet iemand toevallig een scriptje/programma die een database structuur graphisch kan weergeven?
DBDesigner 4 kan dat wel volgens mij, als je een Windows app zoekt. Freeware volgens mij.quote:Op donderdag 12 februari 2009 11:30 schreef Keiichi het volgende:
Weet iemand toevallig een scriptje/programma die een database structuur graphisch kan weergeven?
Ws zet ik het wel om, maar goed. Toch vind ik het vervelend dat het uitlezen van zo weinig data zoveel tijd moet kostenquote:Op woensdag 11 februari 2009 21:15 schreef GlowMouse het volgende:
[..]
Gelukkig maar, bij jouw situatie hoor je geen grote verschillen te ontdekken. Die zie je pas bij grote belasting. Die indices zouden je query wel 100x sneller maken. Wellicht dat je nog andere queries hebt die er profijt van hebben, want ik zou toch neigen naar wel toevoegen.
Klopt, daarin heb je gelijk. Maar testen op de huidige server is gewoon niet te doenquote:Op woensdag 11 februari 2009 23:32 schreef Roy_T het volgende:
Het hele row vs table locking voordeel gaat op bij veel writes, dus je testcase is waardeloos
How about lokaal?quote:Op donderdag 12 februari 2009 12:42 schreef Chandler het volgende:
Klopt, daarin heb je gelijk. Maar testen op de huidige server is gewoon niet te doen![]()
Zet alles eens in code blocks (of beter, gebruik een pastebin voor zulke grote lappen code).quote:Op vrijdag 13 februari 2009 01:16 schreef Buonissimo het volgende:
Hoi, ik ben een PHP noob en heb een contactformuliertje online gevonden. Het werkt perfect behalve 1 ding: Ik krijg de woonplaats van de persoon die het invult niet door, de naam, email, en bericht lukt perfect. Hoe komt dit? Hieronder vind je de broncodes van de twee relevante bestanden:
1 |
1 2 | $City = Trim(stripslashes($_POST['City'])); |
En gebruik header("Location: /error.html"); om door te sturen!quote:Op vrijdag 13 februari 2009 01:16 schreef Buonissimo het volgende:
Hoi, ik ben een PHP noob en heb een contactformuliertje online gevonden. Het werkt perfect behalve 1 ding: Ik krijg de woonplaats van de persoon die het invult niet door, de naam, email, en bericht lukt perfect. Hoe komt dit? Hieronder vind je de broncodes van de twee relevante bestanden:
Index.html
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>
Vind ik ook...quote:Op vrijdag 13 februari 2009 10:19 schreef veldmuis het volgende:
Ik ga voor camelCase. CamelCase staat slordig. Vind ik.
Ik heb héél veel code van anderen gezien. Daarin inderdaad wel $camelCase (wat mij betreft prima), maar nooit $CamelCase.quote:Op vrijdag 13 februari 2009 10:15 schreef slacker_nl het volgende:
Dat is gewoon een coding stijl (@hoofdletters voor variablen). Er zijn zat mensen die met Hoofdletters coden. OF CamelCase...
quote:Op vrijdag 13 februari 2009 11:28 schreef Chandler het volgende:
ik doe ook camelCase zelfs met php functies.
vind isSet mooier dan isset :P
ps. weet iemand hoe ik simpel en snel alle values uit een array in een string kan zetten? dus 0=>'a', 1=>'b' naar $str = 'ab';
1 2 3 4 | $a = array(0 => 'a', 1 => 'b'); print join('', $a); ?> |
In een Location-header moet de volledige URL, inclusief http://quote:Op vrijdag 13 februari 2009 08:30 schreef Likkende_Lassie het volgende:
[..]
En gebruik header("Location: /error.html"); om door te sturen!
En helaas is PHP zo ranzig dat het nog werkt ook.quote:Op vrijdag 13 februari 2009 11:28 schreef Chandler het volgende:
ik doe ook camelCase zelfs met php functies.
vind isSet mooier dan isset![]()
Ik wist dat het gemakkelijk was iddquote:Op vrijdag 13 februari 2009 11:30 schreef Tiemie het volgende:
Ach laten we dan maar niet beginnen over zoveel andere functies van PHPquote:Op vrijdag 13 februari 2009 11:39 schreef Roy_T het volgende:
En helaas is PHP zo ranzig dat het nog werkt ook.
En GlowMouse: rete-irritant inderdaad
Anyone?quote:Op donderdag 12 februari 2009 12:56 schreef Chandler het volgende:
Ik heb werkelijk geen idee hoe ik dit zou moeten simuleren?
Ik zou naar een kant en klare app zoeken, tenzij je zelf multithreaded applicaties kunt schrijven. Anders vind je nooit de grenzen van een databaseserver.quote:Op vrijdag 13 februari 2009 11:44 schreef Tiemie het volgende:
[..]
gewoon heel veel inserts doen en tegelijkertijd selects doen op die tabel lijkt me.
Dat gaat mij iig niet lukken, ik ga eens zoeken!quote:Op vrijdag 13 februari 2009 11:47 schreef GlowMouse het volgende:
Ik zou naar een kant en klare app zoeken, tenzij je zelf multithreaded applicaties kunt schrijven. Anders vind je nooit de grenzen van een databaseserver.
Toch apart dat PHP zo gefocused is op lowerCamelCase, want in veel programmeertalen (o.a. Pascal, Python, Java en .NET) kom je wel veel UpperCamelCase tegen.quote:Op vrijdag 13 februari 2009 10:59 schreef Roy_T het volgende:
[..]
Ik heb héél veel code van anderen gezien. Daarin inderdaad wel $camelCase (wat mij betreft prima), maar nooit $CamelCase.
lowerCamelCase voor variabelen en UpperCamelCase voor classes.quote:Op vrijdag 13 februari 2009 13:15 schreef Tijn het volgende:
[..]
Toch apart dat PHP zo gefocused is op lowerCamelCase, want in veel programmeertalen (o.a. Pascal, Python, Java en .NET) kom je wel veel UpperCamelCase tegen.
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 | function calculateTextBox($text, $fontFile, $fontSize, $fontAngle) { $rect = imagettfbbox($fontSize, $fontAngle, $fontFile, $text); $minX = min(array($rect[0], $rect[2], $rect[4], $rect[6])); $maxX = max(array($rect[0], $rect[2], $rect[4], $rect[6])); $minY = min(array($rect[1], $rect[3], $rect[5], $rect[7])); $maxY = max(array($rect[1], $rect[3], $rect[5], $rect[7])); return array("left" => abs($minX), "top" => abs($minY), "width" => $maxX - $minX, "height" => $maxY - $minY, "box" => $rect); } putenv('GDFONTPATH=' . realpath('.')); $im = imagecreatetruecolor(721, 241); $color = imageColorAllocate($im, 0, 0, 0); $back = imagecolorallocate($im, 255, 255, 255); imagefill($im, 0, 0, $back); // lines for ($x = 0; $x < 4; $x++) { imageline($im, 0, $x * 80, 721, ($x * 80), $color); } for ($x = 0; $x < 11; $x++) { imageline($im, $x * 80, 1, $x * 80, 241, $color); } $fontsize = 40; $font = 'test2.ttf'; $x = 0; $y = 0; foreach (range("a", "z") AS $id => $key) { $bbox = calculateTextBox($key, $font, $fontsize, 0); imagettftext ($im, 12, 0, $x + 3, $y + 14, $color, "standard.ttf", $key); imagettftext ($im, $fontsize, 0, $x + (80/2 - $bbox['width']/2), $y + (80 - ($bbox['height']/2)), $color, $font, $key); $x = $x + 80; if ($x > 700) { $x = 0; $y = $y + 80; } } header('Content-Type: image/png'); imagePNG($im); ?> |
1 2 3 4 5 6 | $im = imagecreatetruecolor(721, 241); for ($x = 0; $x < 11; $x++) { imageline($im, $x * 80, 1, $x * 80, 241, $color); } ?> |
1 2 3 4 | $x + (80/2 - $bbox['width']/2), $y + (80 - ($bbox['height']/2)), ?> |
Dan valt de lijn buiten de afbeeldingquote:
En dat snap ik niet helemaal, hoe kan ik de letters dan wel netjes naast elkaar krijgen? of is dit in jou opinie mooi genoeg?quote:Dat moet je niet doen. Zoals je kunt lezen: "the coordinates given by x and y will define the basepoint of the first character". Wil je ze netjes naast elkaar hebben, moet je dit dus niet van het karakter afhankelijk maken.
Door ze allemaal op dezelfde baseline te zetten. Dan staan ze netjes recht. Als je ze allemaal een ander basepoint geeft (zoals je nu doet), staan ze allemaal op een andere hoogte.quote:Op zaterdag 14 februari 2009 09:55 schreef Chandler het volgende:
[..]
hoe kan ik de letters dan wel netjes naast elkaar krijgen?
ah jaquote:Op zondag 15 februari 2009 19:59 schreef GlowMouse het volgende:
Als ze allemaal even groot zijn, $i van 0 t/m grootte-1 laten lopen, en dan $_POST['var'][$i] gebruiken.
heb ik op de vorige pagina ook fout gedaanquote:Op zondag 15 februari 2009 20:15 schreef GlowMouse het volgende:
De juiste spelling is waarschijnlijk ook 'besteld'.
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 | { //verbinden met de server include("content/connect.php"); // tijd nu noteren $tijd = date("Y-m-d H:i:s"); // post dumpen en sessie om te kijken of ik nog iets mis.(over het hoofd zie) echo var_dump($_SESSION)."<br/><br/<br/>"; echo var_dump($_POST)."<br/><br/><br/>"; //werkt <img class="rde_img_smiley" src="http://i.fok.nl/s/smile.gif" width="15" height="15" alt="" /> $sql1 ="INSERT INTO verkooporder (klant_nr,besteldatum) VALUES ('".$_SESSION['klant_nr']."','".$tijd."')"; mysql_query($sql1) or( die()); //laatste vo_nr ophalen werkt het ophalen maar uitlezen niet. $sql3 ="SELECT vo_nr FROM verkooporder ORDER BY vo_nr DESC limit 1"; $test = mysql_query($sql3) or( die()); echo "<br/>Test:".$test['vo_nr']; echo var_dump($test); $test2 = mysql_fetch_assoc($test); echo $test2['vo_nr']; $p = count($_POST['artikel_nr']); for($i = 0; $i < $p; $i++) { $sql2 ="INSERT INTO verkooporderregel(vo_nr,art_nr,besteld,geleverd,vraagprijs) VALUES ('".$test2."','".$_POST['artikel_nr'][$i]."','".$_POST['besteld'][$i]."','0','".$_POST['prijs'][$i]."')"; mysql_query($sql2) or(die()); $sql4 = "UPDATE artikel SET voorverkopen = voorverkopen + ".$_POST['besteld'][$i].", tech_voorraad = tech_voorraad - ".$_POST['besteld'][$i]." WHERE art_nr = '".$_POST['artikel_nr'][$i]."'"; mysql_query($sql4) or(die()); } } ?> |
ik kwam eruit mysql assocquote:Op zondag 15 februari 2009 21:33 schreef GlowMouse het volgende:
*wordt aangemaakt
mysql_query geeft geen array terug, kijk eens op http://www.php.net/mysql
quote:Als ik USE index_naam in de query gebruik die de data uit de tijdelijke tabel haalt dan krijg ik geen resultaten terug.
Ik gebruik de tijdelijke tabel voor een query die later in het script uitgevoerd wordt, ik hoef dan niet de hele DB van een paar gig te doorzoeken, alleen de data in de tijdelijke tabel. Per week komen er ongeveer 100.000 records bij, en ik ben bang dat ik op lange termijn performance problemen krijg als ik geen gebruik maak van de tijdelijke tabel. Gezien de tijdelijke tabel alleen de data van 2 week bevat +/- 200.000 records zou dat imo sneller moeten zijn.quote:Op maandag 16 februari 2009 19:41 schreef GlowMouse het volgende:
Heb je zoveel records per week dat een index nodig is? Kun je niet gewoon de hoofdtabel gebruiken met die jaar/week in je WHERE? Zolang je index met die twee velden begint, zou dat de snelste oplossing zijn mits je queries herschreven kunnen worden zodat ze niet van de temporary table gebruik hoeven maken.
Klopt, ik heb het hier niet helemaal goed vermeld, de query klopt wel. Ik heb USE INDEX toegepast om er zeker van te zijn dat de index ook gebruikt wordt, maar blijkbaar kan een tijdelijke tabel geen gebruik maken van indexen die al aangemaakt zijn, alleen indexen die aangemaakt zijn bij het vullen van de tijdelijke tabel.quote:[..]syntax is FROM table USE INDEX (indexnaam) of FORCE INDEX (indexnaam), maar dan moet die index wel bestaan. Meestal heb je USE INDEX niet nodig omdat MySQLs query optimizer het al goed doet.
Voor zover queries van indices gebruik kunnen maken, hoef je je over grote tabellen geen zorgen te maken zolang de index in het geheugen past (en key_buffer_size voldoende groot is).quote:Op maandag 16 februari 2009 20:19 schreef The_Terminator het volgende:
[..]
Ik gebruik de tijdelijke tabel voor een query die later in het script uitgevoerd wordt, ik hoef dan niet de hele DB van een paar gig te doorzoeken, alleen de data in de tijdelijke tabel. Per week komen er ongeveer 100.000 records bij, en ik ben bang dat ik op lange termijn performance problemen krijg als ik geen gebruik maak van de tijdelijke tabel. Gezien de tijdelijke tabel alleen de data van 2 week bevat +/- 200.000 records zou dat imo sneller moeten zijn.
'CREATE TEMPORARY TABLE' gaat het omquote:Op maandag 16 februari 2009 20:33 schreef GlowMouse het volgende:
Maar gaat het nu om een tijdelijke tabel (die weggaat zodra je MySQLsessie voorbij is) of een tabel met tijdelijke data?
Ik zou even wachten op wanneer CSS3 wordt ondersteunt door de meeste browsers dan kun je gewoon die font neurpleuren op je server en wordt die gedownload door de browser ofzo iets dergelijks... iig externe fonts worde ondersteunt in de toekomst.quote:Op vrijdag 13 februari 2009 23:22 schreef Chandler het volgende:
Ik wil graag comments op mijn kleine stukje image bouwen.
Ik wil namelijk fonts op de juiste manier op de juiste plek laten zien.
[ link | afbeelding ]
[ link | afbeelding ]
gemaakt door de volgende code
[ code verwijderd ]
Alleen vind ik het op een of andere manier net zo dat de letters net niet goed staan ofzoiets... comments?
"Even" wachten?quote:Op maandag 16 februari 2009 23:34 schreef iBolt het volgende:
Ik zou even wachten op wanneer CSS3 wordt ondersteunt door de meeste browsers dan kun je gewoon die font neurpleuren op je server en wordt die gedownload door de browser ofzo iets dergelijks... iig externe fonts worde ondersteunt in de toekomst.
ik vond het een waardeloos boekquote:Op maandag 16 februari 2009 21:08 schreef Biefstuk het volgende:
Is dat PHP en MySQL voor dummies boek iets?
Ben van plan om php te leren of in ieder geval weten toe te passen.
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 | <table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-top:10px;"> <tr> <td width="50%" align="left" valign="top"> <!-- --> <table cellpadding="0" cellspacing="0" border="0" class="addressItem"> <tr> <th>Adres</th> <td>Hoofdstraat 1</td> </tr> <tr> <th>Postcode</th> <td>0000 AA</td> </tr> <tr> <th>Plaats</th> <td>Woonplaats</td> </tr> <tr> <th>Provincie</th> <td>Provincie</td> </tr> <tr> <th>Land</th> <td>Land</td> </tr> </table> <!-- --> </td> <td width="50%" align="right" valign="top"> <!-- --> <table cellpadding="0" cellspacing="0" border="0" class="addressItem"> <tr> <th>Contactpersoon</th> <td>Persoon</td> </tr> <tr> <th>Telefoon</th> <td>0000-000000</td> </tr> <tr> <th>Fax</th> <td></td> </tr> <tr> <th>E-mail</th> <td><a href="mailto:email@email.com">email@email.com</a> </td> </tr> <tr> <th>Website</th> <td><a href="http://www.url.com" target="_blank">www.url.com</a></td> </tr> </table> <!-- --> </td> </tr> </table> |
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 | $match = '!<h2 class="Kop2">([^/].*)<\/h2> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-top:10px;"> <tr> <td width="50%" align="left" valign="top"> <\!-- --> <table cellpadding="0" cellspacing="0" border="0" class="addressItem"> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <\/table> <\!-- --> <\/td> <td width="50%" align="right" valign="top"> <\!-- --> <table cellpadding="0" cellspacing="0" border="0" class="addressItem"> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td>([^/].*)<\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td><a href="mailto:">([^/].*)<\/a> <\/td> <\/tr> <tr> <th>([^/].*)<\/th> <td><a href="" target="_blank">([^/].*)<\/a><\/td> <\/tr> <\/table> <\!-- --> <\/td> <\/tr> <\/table>!im'; ?> |
Gewoon de explode functie eroverheen trekken, dat zou ik in iedergeval doen gezien er toch met vaste gegevens gewerkt wordt.quote:Op dinsdag 17 februari 2009 14:38 schreef Roy_T het volgende:
Jezus, met een regexZou je niet liever gewoon de DOM parsen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | if(isset($_POST['reactie'])) { $naam = htmlspecialchars($_POST['naam']); $bericht = htmlspecialchars($_POST['bericht']); $error = ''; if(strlen($naam) < 2) { $error .= 'De naam moet minimaal 2 letters bevatten.<br>'; } if(strlen($bericht) < 5) { $error .= 'Het bericht moet minimaal 5 tekens bevatten.<br>'; } if(!empty($error)) { echo $error; echo '<br>'; } else { $time = time(); $iSql = "INSERT INTO downloads_reacties (downloadid,door,tijd,bericht) VALUES ('".$sGet."','".$naam."','".$time."','".nl2br($_POST['bericht'])."')"; mysql_query($iSql) or die(mysql_error()); header("Location: ".$_SERVER['REQUEST_URI']); } } ?> |
Kennelijk levert je config.php al output, dan gaat het is mis als je daarna iets met header() probeert. Oplossing: geen output leveren in config.php.quote:Op woensdag 18 februari 2009 10:33 schreef Nashje het volgende:
Ik ben bezig met een reactiescriptje, en krijg de welbekende fout: Warning: Cannot modify header information - headers already sent by (output started at config.php:23) in includes\download.php on line 130.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | session_start(); // Pagina voor database connectie en andere instellingen // Database gegevens: $db['host'] = "localhost"; $db['user'] = "root"; $db['pass'] = "password"; $db['db'] = "database"; // Database connectie mysql_connect($db['host'],$db['user'],$db['pass']); mysql_select_db($db['db']); // Admin gegevens $admin_username = "admin"; $admin_password = "admin"; // Html instellingenn echo ' <title>Downloadsysteem</title> '; ?> |
Die echo veroorzaakt het.quote:Op woensdag 18 februari 2009 10:52 schreef Nashje het volgende:
Dit is de config.php. Op line 23 is niets fout toch?
[ code verwijderd ]
Ehh nee.quote:Op woensdag 18 februari 2009 11:05 schreef The_Terminator het volgende:
[..]
Die echo veroorzaakt het.
al geprobeerd 21 -23 eruit te halen en opnieuw te proberen ?quote:
Ja, vandaar ook mijn reactie 'ehh nee'quote:Op woensdag 18 februari 2009 11:16 schreef cablegunmaster het volgende:
[..]
al geprobeerd 21 -23 eruit te halen en opnieuw te proberen ?want het blijft een output.
Nee, geen whitespace.quote:Op woensdag 18 februari 2009 11:57 schreef Tiemie het volgende:
[..]
Ehh ja. Echo == Output.
Waarschijnlijk staat er na de sluit-tag ook nog whitespace.
Dan heb je dus op meerdere plekken output zitten. Ook in index.php op (of bij) regel 8. Veel duidelijker zijn die foutmeldingen echt niet te krijgen.quote:Op woensdag 18 februari 2009 12:02 schreef Nashje het volgende:
[..]
Nee, geen whitespace.
Heb dit in ieder geval helemaal weggehaald:
// Html instellingenn
echo '
<title>Downloadsysteem</title>
';
Error die ik dan krijg:
Warning: Cannot modify header information - headers already sent by (output started at index.php:8) in includes\download.php on line 130
variabelen camelCase, methoden/attributen PascalCasequote:Op vrijdag 13 februari 2009 10:59 schreef Roy_T het volgende:
[..]
Ik heb héél veel code van anderen gezien. Daarin inderdaad wel $camelCase (wat mij betreft prima), maar nooit $CamelCase.
je moet dat commentaar weghalen. Je mag geen output e.d. voor je sessies enzo hebben (zoals de error zegt. wat staat er op line 130 ?quote:Op woensdag 18 februari 2009 12:02 schreef Nashje het volgende:
[..]
Nee, geen whitespace.
Heb dit in ieder geval helemaal weggehaald:
// Html instellingenn
echo '
<title>Downloadsysteem</title>
';
Error die ik dan krijg:
Warning: Cannot modify header information - headers already sent by (output started at index.php:8) in includes\download.php on line 130
1 |
1 2 3 4 5 6 7 8 9 10 11 12 | ini_set("display_errors", 1); error_reporting(E_ALL); include('config.php'); ?> <b>Menu</b><br> <a href="index.php">Overzicht</a> - <a href="index.php?mode=toevoegen">Voeg download toe</a> - <a href="index.php?mode=admin">Admin</a> <?php if(isset($_SESSION['admin'])) { echo " - <a href=\"index.php?mode=admin_overzicht&act=nieuwcat\">Voeg categorie toe</a> - <a href=\"index.php?mode=logout\">Loguit</a>"; } echo "<br><br>"; |
Dan mis je dingen uit de toekomst en toon je wel dingen van een uur geleden die dus mogelijk wel op dezelfde datum zijn.quote:Op woensdag 18 februari 2009 13:21 schreef cablegunmaster het volgende:
oh ja zelf een vraag hoe kan ik een agenda maken en dat hij alles dan de huidige datum er niet in stopt?
kan dat in een sql query?
select * from kalender where datum < curdate?![]()
hoe kan je dat doen op de datum zelf?quote:Op woensdag 18 februari 2009 13:24 schreef GlowMouse het volgende:
[..]
Dan mis je dingen uit de toekomst en toon je wel dingen van een uur geleden die dus mogelijk wel op dezelfde datum zijn.
Maar ik heb al een date veld in mijn sql.quote:Op woensdag 18 februari 2009 13:26 schreef GlowMouse het volgende:
Met mktime en date moet het lukken.
WHERE datum <> NOW()quote:Op woensdag 18 februari 2009 13:33 schreef cablegunmaster het volgende:
[..]
Maar ik heb al een date veld in mijn sql.
Al hoe moet ik het uit de sql halen
dat alle velden die groter zijn dan de huidige datum?
want ik snap niet hoe ik de datum van nu in een voorwaarde kan zetten.
SELECT SELECT NOW()=DATE(NOW())quote:
Niet. Waar doen ze dat dan volgens jou?quote:Op woensdag 18 februari 2009 12:23 schreef Roy_T het volgende:
Sinds wanneer zorgen comments voor output
quote:Op woensdag 18 februari 2009 12:18 schreef Catch22- het volgende:
[..]
je moet dat commentaar weghalen. Je mag geen output e.d. voor je sessies enzo hebben (zoals de error zegt. wat staat er op line 130 ?
nee select date > now()quote:Op woensdag 18 februari 2009 13:37 schreef GlowMouse het volgende:
[..]
SELECT SELECT NOW()=DATE(NOW())
Geeft 0 terug
Ik denk niet dat je het begrijpt.quote:Op woensdag 18 februari 2009 13:40 schreef cablegunmaster het volgende:
[..]
nee select date > now()
en op een andere tabel < now()
dat is wat ik zocht![]()
Wat GlowMouse zeiquote:Op woensdag 18 februari 2009 13:38 schreef Light het volgende:
[..]
Niet. Waar doen ze dat dan volgens jou?
hoeft ook niet maar het werkt welquote:Op woensdag 18 februari 2009 13:41 schreef GlowMouse het volgende:
[..]
Ik denk niet dat je het begrijpt.
Jij wilde geen dingen van vandaag en die krijg je zo wel.quote:Op woensdag 18 februari 2009 13:48 schreef cablegunmaster het volgende:
[..]
hoeft ook niet maar het werkt wel![]()
ik denk niet dat jij begrijpt wat ik wil.
kan bestquote:Op woensdag 18 februari 2009 13:50 schreef GlowMouse het volgende:
[..]
Jij wilde geen dingen van vandaag en die krijg je zo wel.
Het kan trouwens prima in één query ook.
Ik heb http://simplehtmldom.sourceforge.net/ geprobeerd maar het lukt me gewoon domweg niet om alle gegevens uit te lezen, mijn IE crasht namelijk direct..quote:
Dat is een prima script, ik parse er zo'n 40 sites mee zonder problemen (ook met brakke HTML).quote:Op woensdag 18 februari 2009 14:13 schreef Chandler het volgende:
Ik heb http://simplehtmldom.sourceforge.net/ geprobeerd maar het lukt me gewoon domweg niet om alle gegevens uit te lezen, mijn IE crasht namelijk direct..
Heeft iemand een gemakkelijk scriptje?![]()
Kun je me dan eens helpen?quote:Op woensdag 18 februari 2009 14:18 schreef Roy_T het volgende:
[..]
Dat is een prima script, ik parse er zo'n 40 sites mee zonder problemen (ook met brakke HTML).
Vervelend dat je IE crasht (gebruik je die vrijwillig?), maar dat komt natuurlijk niet door het script. Iets met server en client side enzo
Begin eens met uit te leggen wanneer je browser crasht, en waarom dat komt door een (server side) PHP-scriptquote:
Goed, het volgende stukje laat mijn browser crashen.quote:Op woensdag 18 februari 2009 15:37 schreef Roy_T het volgende:
[..]
Begin eens met uit te leggen wanneer je browser crasht, en waarom dat komt door een (server side) PHP-script
Maar de docs van die library zijn toch vrij helder? Je kunt XPath/CSS-achtige selectors gebruiken, bijvoorbeeld om alle <td>'s te vinden of whatever. Of alle <tr>'s, waarbinnen je dan weer <td>'s zoekt, etc etc etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 | include_once('simplehtmldom/simple_html_dom.php'); // Create DOM from URL $html = file_get_html('test.txt'); // Find all article blocks foreach($html->find('div.item') as $article) { print_r($article)->plaintext; exit(); } ?> |
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 | include_once('simplehtmldom/simple_html_dom.php'); // Create DOM from URL $html = file_get_html('test.txt'); // Find all article blocks foreach($html->find('#addressList') AS $article) { foreach ($article->find('.item') AS $item) { foreach ($item->find('.Kop2') AS $kop) { echo "<h2>" . $kop->plaintext . "</h2>"; } foreach ($item->find(".addressItem") AS $addr) { foreach ($addr->find('tr') AS $tr) { foreach ($tr->find('th') AS $th) { echo $th->plaintext . " "; } foreach ($tr->find('td') AS $td) { echo $td->plaintext; } echo '<br />'; } echo '<hr>'; } } } ?> |
Het zou je browser niet mogen crashen, maar je gebruikt dan ook geen browser maar IE. Ontwikkelaars op IE... jij bent de enige die ik kenquote:Op donderdag 19 februari 2009 09:46 schreef Chandler het volgende:
[..]
Goed, het volgende stukje laat mijn browser crashen.
[ code verwijderd ]
Maar ik denk dat ik gewoon de documentatie maar eens moet doornemen, heb ik al gedaan maar doe het dan nog maar een keer!
1 2 3 4 5 | $this->dom = str_get_dom(curl_exec($curl)); $this->dom->clear(); $this->dom = str_get_dom(curl_exec($curl)); ?> |
Zie je welquote:
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 | $title="Contact"; $email = ($mailto=="pz") ? "pz@bedrijfsnaambv.nl" : "info@bedrijfsnaambv.nl"; ?> <html> <head> <title>Bedrijfsnaambv.nl - <?php echo $title; ?></title> <?php include("inc/metadata.php"); ?> <link href="css/stylesheet.css" rel="stylesheet" type="text/css" /> </head> <body> <table width="940" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="20" rowspan="5" background="gfx/bgleft.gif"> </td> <td height="140" valign="bottom" background="gfx/header.gif" bgcolor="#E3ECFD"><table width="450" height="50" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td><?php include("inc/zoeken.php"); ?></td> </tr> </table></td> <td width="20" rowspan="5" background="gfx/bgright.gif"> </td> </tr> <tr> <td height="25" background="gfx/bg-tabs.jpg"><?php include("inc/hoofdmenu.php"); ?></td> </tr> <tr> <td valign="top" class="bgcontent"> <br /> <!-- contentblok1 --> <table width="844" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="202" valign="top"><table width="202" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="30" background="gfx/bg-hdr.gif" class="title"><strong> <span class="largetitleblue"><?php echo $title; ?></span></strong></td> </tr> <tr> <td height="60" background="gfx/bg-content.gif"><img src="gfx/img-vestigingen.jpg" width="202" height="60" /></td> </tr> <tr> <td valign="top" background="gfx/bg-content.gif" class="tablespace"><table width="202" border="0" cellspacing="3" cellpadding="3"> <tr> <td><?php include("inc/vestigingen.php"); ?></td> </tr> </table></td> </tr> <tr> <td height="7"><img src="gfx/bg-table.png" width="202" height="7" /></td> </tr> </table></td> <td width="12" valign="top"> </td> <td width="630" valign="top" class="title"><table width="630" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="30" background="gfx/bg-hdr-breed.gif" class="title"> <span class="largetitle">Contact formulier Digitale vestiging</span></td> </tr> <tr> <td valign="top" background="gfx/bg-content-breed.gif"><br /> <? if (!$submit) { ?> <script Language="JavaScript"> <!-- function Validatie(theForm) { if (theForm.naam.value == "") { alert("Uw naam invullen a.u.b."); theForm.naam.focus(); return (false); } if (theForm.from.value == "") { alert("Uw email adres invullen a.u.b."); theForm.from.focus(); return (false); } if (theForm.telefoon.value == "") { alert("Uw telefoon nummer invullen a.u.b."); theForm.telefoon.focus(); return (false); } if (theForm.onderwerp.value == "") { alert("Een onderwerp invullen a.u.b."); theForm.onderwerp.focus(); return (false); } return (true); } // --> </script> <form method="post" action="/cgi-bin/mail-a-form" onSubmit="return Validatie(this)"> <INPUT TYPE="hidden" NAME="to" VALUE="<?php echo $email; ?>"> <INPUT TYPE="hidden" NAME="subject" VALUE="Formulier verstuurd vanaf bedrijfsnaambv.nl"> <INPUT TYPE="hidden" NAME="nextpage" VALUE="http://www.bedrijfsnaambv.nl/contact.php?submit=ok"> <blockquote>Voor meer informatie of opmerkingen, vul dan hieronder de gegevens volledig in.<br /><em>Velden met een * zijn verplicht.</em></blockquote><br /> <table width="450" border="0" align="center" cellpadding="3" cellspacing="3"> <tr> <td width="200" valign="top" bgcolor="#F5F8FF"><div align="right">Bedrijfsnaam:</div></td> <td valign="top"><input name="bedrijfsnaam" type="text" maxlength="50"></td> </tr> <tr> <td width="200" valign="top" bgcolor="#F5F8FF"><div align="right">Contact persoon:</div></td> <td valign="top"><input name="naam" type="text" maxlength="50"> *</td> </tr> <tr> <td width="200" valign="top" bgcolor="#F5F8FF"><div align="right">E-mailadres:</div></td> <td valign="top"><input name="from" type="text" maxlength="100"> *</td> </tr> <tr> <td valign="top" bgcolor="#F5F8FF"><div align="right">Telefoon nummer:</div></td> <td valign="top"><input name="telefoon" type="text" maxlength="15"> *</td> </tr> <tr> <td valign="top" bgcolor="#F5F8FF"><div align="right">Uw vestiging:</div></td> <td valign="top"><select name="VST" style="width: 168px"> <option></option> <option value="PPS">Almere</option> <option value="SAT">Baarn</option> <option value="BSM">Bussum</option> <option value="DFT">Delft</option> <option value="KVK">Den Haag</option> <option value="LEI">Leiden</option> <option value="VOL">Purmerend</option> <option value="IJM">Velserbroek</option> <option value="WBW">Wenckebachweg, A'dam</option> <option value="WDZ">W.de Zwijgerlaan, A'dam</option> <option value="ZS">Zaandam</option> <option value="ZP">Zeeburgerpad, A'dam</option> <option value="COR">Zwaag</option> </select> *</td> </tr> <tr> <td width="200" valign="top" bgcolor="#F5F8FF"><div align="right">Onderwerp:</div></td> <td valign="top"> <input name="onderwerp" type="text" maxlength="50" value="Digitale Vestiging"> </td> </tr> <tr> <td width="200" valign="top" bgcolor="#F5F8FF"><div align="right">Reactie:</div></td> <td valign="top"><textarea name="reactie" cols="30" rows="5"></textarea></td> </tr> <tr> <td width="200"> </td> <td><input type="submit" name="submit" value="verstuur"></td> </tr> </table> </form><br /> <? } else { ?> <blockquote>Hartelijk dank voor uw reactie.<br />Uw email zal zo spoedig mogelijk in behandeling worden genomen.</blockquote> <br /><br /> <? } ?> </td> </tr> <tr> <td height="7"><img src="gfx/bg-table-breed.png" width="630" height="7" /></td> </tr> </table></td> </tr> </table> <!-- contentblok1 --> <br /> <!-- contentblok2 --> <?php include("inc/content2.php"); ?> <!-- contentblok2 --> <br /> </td> </tr> <tr> <td height="5" background="gfx/line.gif"><img src="gfx/transparant.gif" width="1" height="1" /></td> </tr> <tr> <td height="50" bgcolor="#72C2FF"><?php include("inc/footer.php"); ?></td> </tr> </table> </body> </html> |
Los van echte code, wat is volgens jou de logische flow waarop dat zou moeten werken? User verstuurt formulier, en dan?quote:Op donderdag 19 februari 2009 12:01 schreef DeTolk het volgende:
Nu vraag ik mij af hoe dit te realiseren is.
quote:Op donderdag 19 februari 2009 13:22 schreef Roy_T het volgende:
[..]
Los van echte code, wat is volgens jou de logische flow waarop dat zou moeten werken? User verstuurt formulier, en dan?
We kunnen hier wel meteen code neerplempen, maar je leert er denk ik meer van door eerst zelf te bedenken (desnoods in pseudo code) hoe de flow in elkaar zit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $to = null; switch ($_POST['VST']) { case 'BSM': $to = 'bussum@xxxx.nl'; break; case 'DFT': $to = 'delft@xxxx.nl'; break; } if ($to) { mail($to, etc etc etc); } ?> |
quote:Op donderdag 19 februari 2009 11:14 schreef tankertuig het volgende:
Uit een rss feed haal ik deze informatie: code (0123456789)
Het nummer wil ik in mijn database stoppen... kan ff niet meer vinden hoe ik alleen het nummer hieruit haal om wat mee te doen :S Kan iemand me even helpen?
1 2 3 4 5 | if (preg_match("/(\d+)/", $string, $matches)) { print $matches[1]; # dit is het nummer wat je wilt.. } ?> |
Of je maakt een hash aan:quote:Op donderdag 19 februari 2009 14:35 schreef Roy_T het volgende:
Klinkt goed :) Bij deze is je code voor 75% klaar. Nu alleen het kloppen nog :)
[ code verwijderd ]
Kun je hier iets mee?
1 2 3 4 5 | $locatie2mail = array("locatie1" => 'email@locatie1.domain.nl', "locatie2" => 'email@locatie2.domain.nl'); $to_mail = $locatie2mail[$_POST[vestiging]]; ?> |
array_key_exists() geeft ook true als de key bestaat en de bijbehorende value null is. Kan handig zijn, lijkt me hier niet het geval. null is namelijk geen geldig mailadresquote:Op donderdag 19 februari 2009 19:04 schreef slacker_nl het volgende:
nee, array_key_exists oid moet je daarvoor gebruiken.
Deze dus
http://nl3.php.net/manual/en/function.array-key-exists.php
1 2 3 4 | { // mail verzenden } |
1 2 3 4 5 | SELECT o.id, o.naam, o.adres, ..., o.land FROM orders as o ORDER BY o.id DESC LIMIT x |
Je moet nietsquote:Op donderdag 19 februari 2009 19:04 schreef slacker_nl het volgende:
nee, array_key_exists oid moet je daarvoor gebruiken.
Deze dus
http://nl3.php.net/manual/en/function.array-key-exists.php
Het lijkt me dat je in dit geval een hash hebt die overeenkomt met de values die je in je selectiebox hebt zitten voor de locatie. En dus, als je een locatie toevoegt dat je hash ook gevuld is met die locatie.. Maar goed, je zou array_key_exists icm met isset of isempty kunnen gebruiken als je wilt.quote:Op donderdag 19 februari 2009 19:38 schreef Light het volgende:
[..]
array_key_exists() geeft ook true als de key bestaat en de bijbehorende value null is. Kan handig zijn, lijkt me hier niet het geval. null is namelijk geen geldig mailadresOverigens zou ik !empty() adviseren. Dan worden dingen als lege strings ook niet meer geaccepteerd. Of er snelheidsverschil is, weet ik niet.
Ik gebruik array_key_exists liever om te checken of een key bestaatquote:Op donderdag 19 februari 2009 21:21 schreef Roy_T het volgende:
[..]
Je moet niets
Veel te lang om te typen, terwijl isset() ook werkt en gewoon zo gebruikt mag worden volgens de docs
Hoe bedoel je? Als je een $array = array('key1' => 'value1') hebt, dan zal isset($array['key1']) true geven, en isset($array['key2']) false. Lijkt me toch een duidelijke check om te zien of een key bestaat?quote:Op donderdag 19 februari 2009 21:40 schreef slacker_nl het volgende:
[..]
Ik gebruik array_key_exists liever om te checken of een key bestaat, isset zegt daar vrij weinig over.
Uit de documentatie:quote:Op donderdag 19 februari 2009 21:53 schreef Roy_T het volgende:
[..]
Hoe bedoel je? Als je een $array = array('key1' => 'value1') hebt, dan zal isset($array['key1']) true geven, en isset($array['key2']) false. Lijkt me toch een duidelijke check om te zien of een key bestaat?
In diezelfde documentatie staat in de opmerkingen van gebruikers echter dat isset zo'n 5 keer sneller is op Windows (1,5 maal op Linux en Mac OS) in vergelijking met array_key_exists. Als NULL dus voor kan komen als value moet je array_key_exists gebruiken, anders is isset een snellere optie. Maar voor de netheid is array_key_exists de beste keuze.quote:isset() does not return TRUE for array keys that correspond to a NULL value, while array_key_exists() does.
quote:Op donderdag 19 februari 2009 21:53 schreef Roy_T het volgende:
[..]
Hoe bedoel je? Als je een $array = array('key1' => 'value1') hebt, dan zal isset($array['key1']) true geven, en isset($array['key2']) false. Lijkt me toch een duidelijke check om te zien of een key bestaat?
1 2 3 4 5 6 7 8 | $array = array("hello" => "world", "how" => "are", "you" => null); $k = 'test'; print "value :" . $array[$k] . "\n"; print "isset :" . isset($array[$k]) . "\n"; print "array_key :" . array_key_exists($k, $array) . "\n"; ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |