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