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++; } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |