Waarschijnlijk krijg je onder bepaalde voorwaarden een oneindige loop.quote:Op vrijdag 12 januari 2007 21:27 schreef wonderer het volgende:
[..]
Ja, dat wel...
Maar dan snap ik nog niet waarom hij dan soms loopt te mieren en meestal niet. Hij wordt wel vaak aangeroepen, kan het daaraan liggen?
En proberen te ontdekken welke voorwaarden is zeker onbegonnen werk?quote:Op vrijdag 12 januari 2007 21:42 schreef Light het volgende:
[..]
Waarschijnlijk krijg je onder bepaalde voorwaarden een oneindige loop.
Ik blijf bij een oneindige loop. Het aantal keren dat je die regel aanroept is niet zozeer het probleem, een loop die 1 keer oneindig wordt (while(true)) wel.quote:Op vrijdag 12 januari 2007 21:27 schreef wonderer het volgende:
[..]
Ja, dat wel...
Maar dan snap ik nog niet waarom hij dan soms loopt te mieren en meestal niet. Hij wordt wel vaak aangeroepen, kan het daaraan liggen?
Wat voor problemen? En wat is de query? En wat doe je met $result?quote:Heb ook problemen met $result=mysql_db_query($myDB,$query,$dblink); en een aantal dingen die daaruit voortvloeien... waar kan dat op duiden?
Neuh. Hoe is die loop? Dus wat is de for(each) of while regel van die loop waarin regel 585 zit?quote:Op vrijdag 12 januari 2007 21:44 schreef wonderer het volgende:
[..]
En proberen te ontdekken welke voorwaarden is zeker onbegonnen werk?
quote:Op vrijdag 12 januari 2007 21:45 schreef Light het volgende:
[..]
Ik blijf bij een oneindige loop. Het aantal keren dat je die regel aanroept is niet zozeer het probleem, een loop die 1 keer oneindig wordt (while(true)) wel.
[..]
Wat voor problemen? En wat is de query? En wat doe je met $result?
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 | $d=connectDB(); $qroom=quote_smart($kamer,$d); $qroom=make_room($qroom); $success=settype($ID,"int"); $res=runquery("SELECT * FROM chat_kamer_".$qroom." WHERE ID > '".$ID."'",$d); if(mysql_num_rows($res)!=0){ while($row=mysql_fetch_array($res)){ $id=$row["ID"]; $username=$row["username"]; $chatname=parse_chatname($row["chatname"], $username); $kleur=$row["kleur"]; $sentence=parse_sentence($row["sentence"],$row["systemmess"]); $line=lineformat($id, $chatname, $kleur, $sentence, $row["adminmess"], $username, $row["systemmess"]); $lines.=$line.'<%split%>'; $lid=$row["ID"]; } $lines=substr($lines,0,-9); $callback=$lid.'<%split%>'.$lines; return $callback; } else{ return ''; } ?> |
Hmm... ik heb hier eens naar gekeken, maar ik kan niet vinden hoe die loop oneindig kan worden.quote:Op vrijdag 12 januari 2007 22:01 schreef wonderer het volgende:
[..]
[ code verwijderd ]
$ID wordt meegegeven in de functie. Functie wordt gebruikt om te zien of er nieuwe dingen gezegd zijn en zo ja, laat ze dan zien. Wordt elke twee seconden aangeroepen via een javascript.
$result is dezelfde als $d. 't Is mijn databaseverbindingsfunctie, die dus eerst aangeroepen wordt en gebruikt voor de query en de magic quotes gedoe.
Correct. En er zijn een paar mogelijke redenen waarom 30 seconden niet genoeg is. Zo kun je gewoon zoveel code hebben gemaakt dat het niet meer binnen 30 seconden uit te voeren is door de pc. Maar da's niet waarschijnlijk.quote:Op zaterdag 13 januari 2007 00:10 schreef hornage het volgende:
jongens,
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/path/to/chatscript.php
betekent simpelweg dat alles bewerkingen die gedaan worden om de pagina te laden meer dan 30 seconden in beslag nemen. Vanaf het moment dat de pagina aangevraagd wordt totdat ie klaar met laden is mag niet meer dan 30 seconden in een standaardinstelling.
1 2 3 4 5 6 7 | $i=0; while (true) { $i++; } echo $i; ?> |
Queries controleren is idd ook een goed plan.quote:Als dit alle code is waarin hij blijft hangen kan je even de query testen in bijvoorbeeld phpmyadmin. Als je daarin wel gewoon snel output krijgt ligt het aan je script.
Kijk wat er allemaal geladen en geiclude wordt. Dan moet je vast en zeker wel wat vinden.
Hmm.. goed puntquote:Op vrijdag 12 januari 2007 23:34 schreef wonderer het volgende:
Zijn er andere manieren om een database verbinding aan te maken?
En wat zou er bijvoorbeeld gebeuren als ID 0 was? De huidige meest recente IDs liggen rond de 500.000 (niet dat er zoveel records in zitten, maar ik laat hem doortellen).
1 2 3 4 5 6 7 8 | ( [0] => 054 [1] => 121 [2] => 232 [3] => 45822 [4] => 12 } |
quote:Op zaterdag 13 januari 2007 11:11 schreef SuperRembo het volgende:
Zoeken in een array, gokje: array_search()
Dan moet het hele OO concept beter verwerkt worden in PHP.quote:Op zaterdag 13 januari 2007 12:25 schreef JeRa het volgende:
Arrays zijn nou typisch van die dingen in PHP waarvan ik zou willen dat ze net zoals in Java als extendable class werden geïntroduceerd. Dan had je niet overal meer die losse functies als sort() en count() liggen en was bovenstaand probleem gereduceerd tot Array.indexOf() of desnoods gewoon Array.findKey().
Ik vind dat ze al een redelijke basis hebben voor OOP in PHPquote:Op zaterdag 13 januari 2007 17:19 schreef Light het volgende:
[..]
Dan moet het hele OO concept beter verwerkt worden in PHP.
Ze maken wel een nieuwe verbinding aan (zelfde weer, $d=connectDB();) in de functies... hoeft dat niet? Kan dat anders? Misschien kan ik in de functie runquery inbouwen dat ie alleen verbinding moet maken als er geen verbinding is, maar dan weet ik niet hoe ik die magic_quotes_gpc moet doen...quote:Op zaterdag 13 januari 2007 10:55 schreef JeRa het volgende:
Met die loop lijkt me zo niets mis. Doen parse_chatname() en parse_sentence() nog iets vreemds, zoals verbindingen maken met de DB en trage queries executen ofzo?
Een goede start is het doorgeven van de $db uit het hoofdscript. Die verbinding heb je namelijk al gemaakt dus dan hoeven die functies dat niet telkens opnieuw te doen. Ik heb sterk het vermoeden dat die twee functies zo slecht in elkaar zitten dat zij de oorzaak zijn van die 30+ seconden runtimequote:Op zaterdag 13 januari 2007 18:34 schreef wonderer het volgende:
[..]
Ze maken wel een nieuwe verbinding aan (zelfde weer, $d=connectDB();) in de functies... hoeft dat niet? Kan dat anders? Misschien kan ik in de functie runquery inbouwen dat ie alleen verbinding moet maken als er geen verbinding is, maar dan weet ik niet hoe ik die magic_quotes_gpc moet doen...
Heb je een linkje naar een tut waar goed wordt uitgelegd hoe je functies (en database dingen) opbouwt? Er moet best wel een hoop gedaan worden voor de zin er mooi leesbaar uit komt rollen...quote:Op zaterdag 13 januari 2007 18:49 schreef JeRa het volgende:
[..]
Een goede start is het doorgeven van de $db uit het hoofdscript. Die verbinding heb je namelijk al gemaakt dus dan hoeven die functies dat niet telkens opnieuw te doen. Ik heb sterk het vermoeden dat die twee functies zo slecht in elkaar zitten dat zij de oorzaak zijn van die 30+ seconden runtime
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if($_POST['submit']="submit") { $id = $_POST['ID']; $datum = $_POST['datum']; $offertenummer = $_POST['offertenummer']; $ordernummer = $_POST['ordernummer']; $order = $_POST['order']; $bedrag = $_POST['bedrag']; if (is_array($id) && (count($id))) { $query = 'UPDATE (ID,datum,offertenummer,ordernummer,offerte,bedrag) VALUES (' . $id[0] . ', ' . $datum[0] . ', ' . $offertenummer[0] . ', ' . $ordertenummer[0] . ', ' . $order[0] . ', ' . $bedrag[0] . ')'; $num = count($id); for ($i = 0; $i < $num; $i++) { $query .= ',(' . $id[$i] . ', ' . $datum[$i] . ', ' . $offertenummer[$i] . ', ' . $ordernummer[$i] . ', ' . $order[$i] . ', ' . $bedrag[$i] . ')'; } mysql_query($query); } } ?> |
Waarom niet gewoon een loop schrijven die per array-regel een volledige query uitvoert? En waarom gebruik je daarvoor de update query en niet de insert query?quote:Op zondag 14 januari 2007 10:39 schreef qu63 het volgende:
[ code verwijderd ]
hoe kan ik deze query nou goed laten gaan?
$id t/m $bedrag moeten meerdere waarden krijgen (een array dus) en die moeten allemaal de database in. Er komen geen nieuwe rijen bij, het wordt dus alleen maar geupdate.
ik keek al bij Multiple Queries op dev.mysql.com maar ik weet niet of dat allemaal goed werkt enzo..
iemand tips?
mij leek een enkele query makkelijker om uit te voeren, maar dat was idd mijn optie als dit niet werktequote:Op zondag 14 januari 2007 10:43 schreef zwambtenaar het volgende:
[..]
Waarom niet gewoon een loop schrijven die per array-regel een volledige query uitvoert?
ik haal de waarden uit mn database, daar bouw ik een mooi update-formulier omheen. Dit formulier kan dus ge-submit worden en de nieuwe waarden moeten weer de database inquote:Op zondag 14 januari 2007 10:43 schreef zwambtenaar het volgende:
[..]
Waarom niet gewoon een loop schrijven die per array-regel een volledige query uitvoert? En waarom gebruik je daarvoor de update query en niet de insert query?
Ik begrijp het inderdaad. Als een soort tabel-/spreadsheetoverview waarmee je in één keer vele records kunt editten.quote:Op zondag 14 januari 2007 10:49 schreef qu63 het volgende:
[..]
ik haal de waarden uit mn database, daar bouw ik een mooi update-formulier omheen. Dit formulier kan dus ge-submit worden en de nieuwe waarden moeten weer de database in
juistemquote:Op zondag 14 januari 2007 10:50 schreef zwambtenaar het volgende:
[..]
Ik begrijp het inderdaad. Als een soort tabel-/spreadsheetoverview waarmee je in één keer vele records kunt editten.
Volgens mij doe je de eerste regel (met index 0) nu dubbel.quote:Op zondag 14 januari 2007 10:39 schreef qu63 het volgende:
[ code verwijderd ]
hoe kan ik deze query nou goed laten gaan?
[...]
iemand tips?
ohja 8)7quote:Op zondag 14 januari 2007 12:27 schreef SuperRembo het volgende:
[..]
Volgens mij doe je de eerste regel (met index 0) nu dubbel.
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 | <table width="50%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>Datum</td> <td>Naam</td> <td>Offertenummer</td> <td>Ordernummer</td> <td>Order</td> <td>Bedrag</td> </tr> <tr><input type="hidden" name="id" value="1"> <td>vandaag</td> <td>Ik</td> <td><input name="offertenummer" value="" size="10"></td> <td><input name="ordernummer" value="" size="10"></td> <td><input name="order" value="ja" size="10">ja/nee</td> <td>¤<input name="bedrag" value="352,79" size="10"></td> </tr> <tr><input type="hidden" name="id" value="2"> <td>5</td> <td>5</td> <td><input name="offertenummer" value="" size="10"></td> <td><input name="ordernummer" value="5" size="10"></td> <td><input name="order" value="5" size="10">ja/nee</td> <td>¤<input name="bedrag" value="5" size="10"></td> </tr> </table> <input type="submit" name="submit" value="submit"> </form> |
1 2 3 | <input type="text" name="offertenummer[]" value="" size="10"> <input type="text" name="offertenummer[]" value="" size="10"> |
1 2 3 4 5 6 7 | $offertenummer = $_POST["offertenummer"]; echo $offertenummer[0]; echo $offertenummer[1]; echo $offertenummer[2]; ?> |
dat komt omdat ik er al een id uit heb geknikkerdquote:Op zondag 14 januari 2007 12:44 schreef HuHu het volgende:
Dan moet je van die input names een array maken.
[ code verwijderd ]
[ code verwijderd ]
Let op dat een array bij 0 begint met tellen en jij je ID's bij 1 laat beginnen.
Aha...quote:Op zondag 14 januari 2007 12:45 schreef qu63 het volgende:
[..]
dat komt omdat ik er al een id uit heb geknikkerd
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 | //dit poept dus alle waarden in een tabelletje.. while ($row = mysql_fetch_assoc($result)) { echo "<tr>n<td>".$row['tijd']."</td>n"; echo "<td>".$row['km']."</td>n"; echo "<td>n<input type="text" name="prijs[".$row['tijd']."][".$row['km']."]" value="".$row['prijs']."">n"; echo "<input type="hidden" name=oud[".$row['tijd'].']['.$row['km']."] value="".$row['prijs']."">n</td>n</tr>n"; } //en dit is de update functie. de rest vavn het script heb ik achterwege gelaten omdat dat alleen maar checks zijn of er iets anders gedaan moet worden.. function update() { //nieuwe waarden? $km = $_POST['km_nieuw']; $prijs = $_POST['prijs_nieuw']; $tijd = $_POST['tijd_nieuw']; if (is_array($km) && is_array($prijs) && is_array($tijd) && (count($km) == count($prijs)) && (count($km) == count($tijd))) { $query = 'INSERT INTO qu63 (tijd, km, prijs) VALUES (' . $tijd[0] . ', ' . $km[0] . ', ' . $prijs[0] . ')'; $num = count($km); for ($i = 0; $i < $num; $i++) { $query .= ',(' . $tijd[$i] . ', ' . $km[$i] . ', ' . $prijs[$i] . ')'; } mysql_query($query); } //if(($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] > 0) && ($_POST['prijs_nieuw'] > 0)) { //mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].'),('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].'),('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].'),('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].'),('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')'); //mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.intval($_POST['prijs'][$tijd][$km]).','.$tijd.','.$km.')'); //$aangepast++; //} //Bij het begin beginnen :) reset($_POST['oud']); //De array bevat tijd, afstand en prijs. //Dat is niet in 1 lus uit te lezen, dus doen we het met twee. while (list($tijd, $tmp) = each($_POST['oud'])) { while (list($km, $prijs) = each($tmp)) { //Als er een andere prijs staat dan zetten we die in de database if($_POST['prijs'][$tijd][$km] != $prijs) { mysql_query('UPDATE qu63 SET prijs = '.intval($_POST['prijs'][$tijd][$km]).' WHERE tijd = '.$tijd.' AND km = '.$km); $aangepast++; } } } } ?> |
dat werkt iig ja..quote:Op zondag 14 januari 2007 12:44 schreef HuHu het volgende:
Dan moet je van die input names een array maken.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_DATABASE); $id = $_POST['ID']; $datum = $_POST['datum']; $naam = $_POST['naam']; $offertenummer = $_POST['offertenummer']; $ordernummer = $_POST['ordernummer']; $order = $_POST['order']; $bedrag = $_POST['bedrag']; $nieuw = array($id,$datum,$naam,$offertenummer,$ordernummer,$order,$bedrag); //print_r($nieuw); //echo $nieuw[3][1]; if (is_array($nieuw) && (count($nieuw))) { $num = count($nieuw); for ($i = 0; $i < $num; $i++) { // foreach($id as $k => $w) { mysql_query("REPLACE 'order' ('ID', 'datum', 'naam', 'offertenummer', 'ordernummer', 'order', 'bedrag') VALUES('" . $nieuw[0][$i] . "', '" . $nieuw[1][$i] . "', '" . $nieuw[2][$i] . "', '" . $nieuw[3][$i] . "', '" . $nieuw[4][$i] . "', '" . $nieuw[5][$i] . "', '" . $nieuw[6][$i] . "')"); } } ?> |
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 | ( [0] => Array ( [1] => 1 [2] => 2 [3] => 3 ) [1] => Array ( [vandaag] => vandaag [5] => 5 [123] => 123 ) [2] => Array ( [1] => Ik [2] => 5 [3] => 123 ) [3] => Array ( [1] => [2] => [3] => 12 ) [4] => Array ( [1] => [2] => 5 [3] => 789 ) [5] => Array ( [1] => ja [2] => 5 [3] => 55 ) [6] => Array ( [1] => 352,79 [2] => 5 [3] => 333 ) ) |
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 | <table width="50%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>Datum</td> <td>Naam</td> <td>Offertenummer</td> <td>Ordernummer</td> <td>Order</td> <td>Bedrag</td> </tr> <tr><input type="hidden" name="ID[1]" value="1"> <td><input type="hidden" name="datum[vandaag]" value="vandaag">vandaag</td> <td><input type="hidden" name="naam[1]" value="Ik">Ik</td> <td><input name="offertenummer[1]" value="" size="10"></td> <td><input name="ordernummer[1]" value="" size="10"></td> <td><input name="order[1]" value="ja" size="10">ja/nee</td> <td>€<input name="bedrag[1]" value="352,79" size="10"></td> </tr> <tr><input type="hidden" name="ID[2]" value="2"> <td><input type="hidden" name="datum[5]" value="5">5</td> <td><input type="hidden" name="naam[2]" value="5">5</td> <td><input name="offertenummer[2]" value="" size="10"></td> <td><input name="ordernummer[2]" value="5" size="10"></td> <td><input name="order[2]" value="5" size="10">ja/nee</td> <td>€<input name="bedrag[2]" value="5" size="10"></td> </tr> <tr><input type="hidden" name="ID[3]" value="3"> <td><input type="hidden" name="datum[123]" value="123">123</td> <td><input type="hidden" name="naam[3]" value="123">123</td> <td><input name="offertenummer[3]" value="12" size="10"></td> <td><input name="ordernummer[3]" value="789" size="10"></td> <td><input name="order[3]" value="55" size="10">ja/nee</td> <td>€<input name="bedrag[3]" value="333" size="10"></td> </tr> </table> <input type="submit" name="submit" value="submit"> </form> |
Ja natuurlijk is dit mogelijkquote:Op zondag 14 januari 2007 21:14 schreef broodmonkeh het volgende:
Ik heb een datum opgeslagen in de database , nu wil ik zeg maar een overzicht maken van alle gegevens met die datum ouder als een jaar
Dus ik sla het zo op: 2007-01-14 en ik wil zeg maar alle data na 2008-01-14 in een overzicht hebben.
Is dit mogelijk?
met NOW() komt er ook 2007-01-14 uit , dus maakt opzich niet zoveel uit toch? Dat INTERVAL-statement ga ik nu even uitzoeken.quote:Op zondag 14 januari 2007 21:24 schreef fate het volgende:
[..]
Ja natuurlijk is dit mogelijk.
Heb je je data als now() opgeslaan? Dan is het heel wat handiger dan als je het er letterlijk 2007-01-14 inzet...
Je moet maar eens zoeken mbv het INTERVAL-statement in MySQL hoe je data er zo het best gaat uithalen. (Ik geef niet de code omdat je er anders niets van leert)
Jawel, want op DATE en DATETIME velden kan je sql datum en tijd functies gebruiken. op een varchar veld niet.quote:Op zondag 14 januari 2007 22:47 schreef broodmonkeh het volgende:
[..]
met NOW() komt er ook 2007-01-14 uit , dus maakt opzich niet zoveel uit toch?
ik had hem al als DATE veld , gebruikte alleen geen NOW() maar ik had de datum al bepaald met date() en dat in de database gezet.quote:Op zondag 14 januari 2007 22:48 schreef Swetsenegger het volgende:
[..]
Jawel, want op DATE en DATETIME velden kan je sql datum en tijd functies gebruiken. op een varchar veld niet.
Als het maar een DATE veld is. Dan lijkt je methode me nog steeds nodeloos ingewikkeld, mits je een andere datum dan *nu* in de database wil hebben.quote:Op zondag 14 januari 2007 22:55 schreef broodmonkeh het volgende:
[..]
ik had hem al als DATE veld , gebruikte alleen geen NOW() maar ik had de datum al bepaald met date() en dat in de database gezet.
jep dat is ook het gevalquote:Op zondag 14 januari 2007 22:59 schreef Swetsenegger het volgende:
[..]
Als het maar een DATE veld is. Dan lijkt je methode me nog steeds nodeloos ingewikkeld, mits je een andere datum dan *nu* in de database wil hebben.
1 2 3 4 5 6 7 8 | function delete_cookie ( cookienaam ) { var cookie_date = new Date ( ); // current date & time cookie_date.setTime ( cookie_date.getTime() - 1 ); document.cookie = cookienaam += "=; expires=" + cookie_date.toGMTString(); } </script> |
http://www.sitemasters.be/?pagina=tutorials/tutorials&cat=4&id=160quote:Op zondag 14 januari 2007 23:38 schreef profielnaam het volgende:
Ik probeerde in eerste instantie mbv javascript een cookie te verwijderen, maar dit werkt niet zo te zien. de situatie is als volgt:
ik heb een domein waarop de meeste mensen binnenkomen via de index.html op deze pagina wordt een cookie gezet. als de user verder browsed naar een van de andere sites bijv. subdomein.hoofdomein.com dan moet de cookie die eerder op de mainpage gezet is verwijderd worden,
ik probeer dit nu wel met javascript te doen, omdat ik geen PHP ondersteuning heb ik op deze server, misschien dat ik dit er nog bij ga nemen..
ik kwam uit op deze javascript code, welke de cookie expiration time in het verleden zou moeten zetten en daardoor automatisch verwijdert.
De cookie blijft wel staan dus ik doe iets fout..
hopen maar dat iemand me anders wel kan helpen met PHP code hiervoor.
dit is de javascript code iedergeval
[ code verwijderd ]
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |