Ow jee, denk dat ik nu heel veel moet lezen...quote:Op zondag 26 juli 2009 23:19 schreef Roönaän het volgende:
[..]
Bedenk even dat je de boel ook nog door time() moet halen..
Je kunt het natuurlijk ook gewoon hier vragen!quote:Op zondag 26 juli 2009 23:53 schreef F4T4L_3RR0R het volgende:
[..]
Ow jee, denk dat ik nu heel veel moet lezen...
Bij deze!quote:Op maandag 27 juli 2009 00:15 schreef GlowMouse het volgende:
[..]
Je kunt het natuurlijk ook gewoon hier vragen!
quote:Op maandag 27 juli 2009 00:17 schreef LeNick het volgende:
tvp
Succes: http://nl2.php.net/manual/en/book.pcre.phpquote:Op maandag 27 juli 2009 00:24 schreef F4T4L_3RR0R het volgende:
[..]
Bij deze!
Ik hoef niet alles voorgekauwd te hebben hoor, maar een duwtje in de goede richting kan geen kwaad.
$string = "bla bla bla bla 13:12 bla bla bla"
Hoe vis ik daar de tijd uit zonder te exploden of substr te gebruiken?
Dus zonder regex, zonder explode en zonder substr?quote:Op maandag 27 juli 2009 17:49 schreef F4T4L_3RR0R het volgende:
Kan iemand mij verder op pad helpen met de tijd uit een $ halen en in een nieuwe $ te zetten? (zonder gebruik te maken van regex)
Juist.quote:Op maandag 27 juli 2009 19:24 schreef Roönaän het volgende:
[..]
Dus zonder regex, zonder explode en zonder substr?
De datum kan 1-1-2009 zijn maar soms ook 01-01-2009. Zelfde met de tijd, deze kan 9:00 of 09:00 zijn. Substr is dan niet mogelijk.quote:Op maandag 27 juli 2009 20:12 schreef ralfie het volgende:
geen regex kan ik me voorstellen, maar waarom zou je in godesnaam geen explode of zelfs substr willen gebruiken ??
1 2 3 4 5 6 | if($price<$artikel[$row['artId']]['prijs'] || !isset($artikel[$row['artId']]['prijs'])){ $artikel[$row['artId']]['prijs']=$price; } echo $row['artId'].' '.$price.' '.$artikel[$row['artId']]['prijs'].'<br />'; ?> |
1 2 3 4 | 3 14,95 14,95 3 9,95 9,95 3 14,95 14,95 |
1 2 3 4 | 3 14,95 14,95 3 9,95 9,95 3 14,95 9,95 |
Maar wat Fatal_error wil, kan heel goed met een regex. En dat wordt dan geen ingewikkelde regex.quote:Op maandag 27 juli 2009 20:15 schreef GlowMouse het volgende:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Als die eerste twee (995 en 1495) getallen zijn, dan klopt het dat 995 < 1495. En die laatste twee zijn vast strings, dan is 9 > 1 en dus 9,95 > 14,95.quote:Op maandag 27 juli 2009 22:51 schreef Swetsenegger het volgende:
nee, blijkbaar gaat het vergelijken van een float in een string niet goed. Omdat ik het in de database toch als centen opsla, laat ik de number_format er nu pas na het vergelijk op los en dat werkt zoals verwacht.
995 is blijkbaar wel kleiner dan 1495, maar 9,95 is blijkbaar niet kleiner dan 14,95.
Ja dan vraag je ook wel om problemen eigenlijkquote:Op maandag 27 juli 2009 22:51 schreef Swetsenegger het volgende:
nee, blijkbaar gaat het vergelijken van een float in een string niet goed.
Heb op aanraden (don't ask why) al zoveel mogelijk regex vervangen door alternatieven.quote:Op maandag 27 juli 2009 23:00 schreef Light het volgende:
[..]
Maar wat Fatal_error wil, kan heel goed met een regex. En dat wordt dan geen ingewikkelde regex.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function striphtml($trimmed) { $arrhtml = explode("\n", $trimmed); $resulthtml = array(); for ($ihtml = 2, $sizehtml = count($arrhtml); $ihtml < ($sizehtml - 1); $ihtml++) { $resulthtml[] = $arrhtml[$ihtml]; } return $resulthtml; } $clean = implode("\n", striphtml($trimmed)); ?> |
quote:Op maandag 27 juli 2009 23:33 schreef F4T4L_3RR0R het volgende:
[..]
Heb op aanraden (don't ask why) al zoveel mogelijk regex vervangen door alternatieven.
Maar ben toch benieuwd naar de regex oplossing.
1 2 3 | $regex = '/(\d{1,2})-(\d{1,2})-(\d{4})\s+(\d{1,2}):(\d{2})/'; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function striphtml($trimmed) { $arrhtml = explode("\n", $trimmed); $resulthtml = array(); for ($ihtml = 2, $sizehtml = count($arrhtml); $ihtml < ($sizehtml - 1); $ihtml++) { $resulthtml[] = $arrhtml[$ihtml]; } return $resulthtml; } $clean = implode("\n", striphtml($trimmed)); ?> |
1 2 3 4 5 6 7 | function striphtml($trimmed) { return array_slice(explode("\n", $trimmed), 2); } $clean = implode("\n", striphtml($trimmed)); ?> |
1 2 3 4 5 6 | if(preg_match('/([01]?[0-9]|2[0-4]):[0-5][0-9]/', $string, $m)) { $time = $m[0]; } else { // geen tijd gevonden } |
Ja dat bedacht ik me ook toen ik de vreemde resultaten zagquote:Op maandag 27 juli 2009 23:33 schreef SuperRembo het volgende:
[..]
Ja dan vraag je ook wel om problemen eigenlijk
Altijd eerst berekeningen uitvoeren, en pas op het allerlaatst omzetten naar tekst.
1 2 3 4 5 6 7 | 0 - 55 - 15 - 1 0 - 55 - 25 - 2 0 - 55 - 35 - 3 0 - 55 - 45 - 4 0 - 55 - 55 - 5 1 - 55 - 35 - 7 |
1 2 3 4 5 6 | 0 - 55 - 25 - 2 0 - 55 - 45 - 4 0 - 55 - 55 - 5 1 - 55 - 35 - 7 |
1 2 3 4 5 6 7 8 | FROM testtabel WHERE confectie_id = '" . substr($_POST['test'], 1, strlen($_POST['maat']) -1) . "' AND (user_id = '" . $_POST['user'] . "' OR user_id = '0') AND nummer IN ('" . implode("','", array_keys($noemers)) . "') GROUP BY user_id, nummer ORDER BY user_id |
Die voor de tijd werkt voortreffelijk! Wat gebeurd er trouwens als er 2 keer een tijdvermelding in staat? Net getest, dan geeft hij de eerst gevonden tijd door. Maar dit kan geen fouten veroorzaken?quote:Op dinsdag 28 juli 2009 07:21 schreef Roönaän het volgende:
Bizar die newline code.
[ code verwijderd ]
Kan toch gewoon als
[ code verwijderd ]
Raar ook dat een striphtml geen tags weghaald of iets anders html gerelateerds doet.
Voor de tijd:
[ code verwijderd ]
Daar moet hij de eerste twee regels en de laatste regel verwijderen.quote:charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Inhoud mailtje
----NextPart_048F8BC8A2197DE2036A
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 | if (stripos($headers, "boundary=") !== false) { $splitplain = explode("Content-Type: text/plain;", $message); $splithtml = explode("Content-Type: text/html;", $splitplain[1]); $trimmed = trim($splithtml[0]); function striphtml($trimmed) { $arrhtml = explode("\n", $trimmed); $resulthtml = array(); for ($ihtml = 2, $sizehtml = count($arrhtml); $ihtml < ($sizehtml - 1); $ihtml++) { $resulthtml[] = $arrhtml[$ihtml]; } return $resulthtml; } $clean = implode("\n", striphtml($trimmed)); } else { $clean = $message; } $body = trim(str_replace(array("=\n", "=20", "=3D"), array("", "", "="), $clean)); ?> |
(-1 toegevoegd)quote:function striphtml($trimmed) {
return array_slice(explode("\n", $trimmed), 2, -1);
}
$clean = implode("\n", striphtml($trimmed));
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | if (stripos($headers, "boundary=") !== false) { $splitplain = explode("Content-Type: text/plain;", $message); $splithtml = explode("Content-Type: text/html;", $splitplain[1]); $trimmed = trim($splithtml[0]); $slicedmail = array_slice(explode("\n", $trimmed), 2, -1); $clean = implode("\n", $slicedmail); } else { $clean = $message; } $body = trim(str_replace(array("=\n", "=20", "=3D"), array("", "", "="), $clean)); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if (stripos($headers, "boundary=") !== false) { $splitplain = explode("Content-Type: text/plain;", $message); $splithtml = explode("Content-Type: text/html;", $splitplain[1]); $slicedmail = array_slice(explode("\n", trim($splithtml[0])), 2, -1); $clean = implode("\n", $slicedmail); } else { $clean = $message; } $body = trim(str_replace(array("=\n", "=20", "=3D"), array("", "", "="), $clean)); ?> |
Je moet het zien als dat er allemaal vaste gegevens zijn per top_id/nummer, als een gebruiker een van deze gegevens aanpast wil ik alle 'vaste' gegevens die niet veranderd zijn maar ook de gegevens die wel veranderd zijn. En na dit alles wil ik de veranderde gegevens met het zelfde nummer (top_id/nummer) overschrijven over de top_id/nummer van gebruiker 0, zodat deze wegvalt.quote:Op woensdag 29 juli 2009 18:42 schreef Roönaän het volgende:
Wat is "gebruiker 0", zijn dat je default setting oid?
1 2 3 4 5 6 | 1 - 10 - 1 - 101 0 - 10 - 2 - 100 0 - 10 - 3 - 100 0 - 10 - 4 - 100 1 - 10 - 4 - 99 |
1 2 3 4 | 0 - 10 - 2 - 100 0 - 10 - 3 - 100 1 - 10 - 4 - 99 |
1 2 3 | preg_match('/([01]?[0-9]|2[0-4]):[0-5][0-9]/', $string, $m) ?> |
Dat is helemaal nieuw voor mij, wel even slikken.quote:Op vrijdag 31 juli 2009 01:06 schreef GlowMouse het volgende:
Ja hoor, dat is mogelijk. Zie http://nl3.php.net/manual/en/reference.pcre.pattern.syntax.php
1 2 3 | preg_match('/\s([01]?[0-9]|2[0-4]):[0-5][0-9]\s/', $body, $m); ?> |
Moet je even $m[1] gebruiken ipv $m[0].quote:Op vrijdag 31 juli 2009 01:24 schreef F4T4L_3RR0R het volgende:
[..]
Dat is helemaal nieuw voor mij, wel even slikken.
De verplichte spatie heb ik nu zo gedaan:
[ code verwijderd ]
Edit: maar dan neemt hij de spaties wel mee in $m.
Nu nog even uitzoeken hoe ik de : toe kan voegen als verplichting (als er geen spatie staat) aan het einde van de tijd.
500*50.000 zou inderdaad kunnen, maar is het niet slimmer om per medewerkers (500+/-) per afdelingen (60 +/-) per melding (stuk of 10 +/-) (=maximaal 300.000 entries per dag) een teller bij te houden?quote:Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
500*50.000/dag is niks, kun je mooi een tabel mee vullen. Beetje letten op je datatypes (medewerkerID unsigned smallint/2 bytes, afdelingID unsigned tinyint/1 byte, meldingID unsigned mediumint 2 bytes, dag date 3 bytes), zit je op 200 MB aan data per dag. Plus indices die erbij komen. Kan je prima een maand bijhouden.
Dat + datum erbij dus, lijkt me het minst zwaarst voor de databasequote:Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
Of als je de tijdstippen niet interesseer, tabel aanmaken met medewerker|afdeling|melding|views, UNIQUE op de eerste drie kolommen en dan views ophogen via INSERT ... IF EXISTS UPDATE ofzo.
300.000 per dag, maar nog acceptabel inderdaad. Opzich wel jammer dat het tijdstip dan niet opgeslagen wordt.. maar ik vrees dat dat een beetje teveel vreet.quote:Op vrijdag 31 juli 2009 22:25 schreef GlowMouse het volgende:
Oh, die 500 is per afdeling. Dan medewerker|afdeling|melding|datum|views inderdaad. Views zal wel niet meer passen in 2 bytes, 50.000 zit al dicht bij de limiet. Kom je op 11 bytes/rij.
30.000 rijen per dag, 330 kB/dag, goed te doen om jaren bij te houden. Maar 50.000 updates voor elke 30.000 gebruikers is wel een ouch, dat zou me een grotere zorg zijn
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
1 |
1 2 3 4 5 | FROM log WHERE medewerker_id = '1' GROUP BY `datum`,`melding_id` ORDER BY melding_id,datum |
Als je PHP's eigen sessiesysteem gebruikt wel ja.quote:Op zaterdag 1 augustus 2009 01:32 schreef gieling het volgende:
had ik naar gekeken maar is het niet zo dat de sessieid bij elk bezoek verandert?
1 |
Als je die waarden alleen gebruikt voor marketing informatie: Niet. Gewoon je statistieken programma voor gebruiken.quote:Op vrijdag 31 juli 2009 22:02 schreef BaggerUser het volgende:
Database vraagje..
Ik heb een database met simpel gezegd
medewerkers (500+/-)
afdelingen (60 +/-)
melding (stuk of 10 +/-)
een meldingen kan voor 1 of meerdere afdeling gelden en dus ook bekeken worden via verschillende afdelingen.
een buitenstaander kan via elke afdeling een melding zien via een medewerker (een melding is verder niet gekoppeld aan een gebruiker, alleen op het moment van bekijken wordt er een getal opgehoogd bij de medewerker.)
Nu wil ik per dag gaan bijhouden hoe vaak een melding is bekeken door een buitenstaander gekoppeld aan de gebruiker en via welke afdeling (dus dat ik van de afgelopen 7 dagen, en als het haalbaar is van de afgelopen maand hoevaak dat is)
nu komt de grap, zo'n melding kan soms wel 50.000 keer op een dag bekeken worden per gebruiker. Hoe krijg ik dat een beetje normaal in de database?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function compare($string, $filename){ $stringArray = explode(" ",$string); // Array with loose words of the string $fileArray = file($filename); printArray($stringArray); printArray($fileArray); for($index=0;$index<sizeof($stringArray);$index++){ for($counter=0;$counter<sizeof($fileArray);$counter++){ echo "index: $index en counter: $counter <br>"; echo "$stringArray[$index] => $fileArray[$counter] <br>"; $compare = strcasecmp($stringArray[$index],$fileArray[$counter]); echo "$compare <br>"; if(strcasecmp($stringArray[$index],$fileArray[$counter])==0){ echo "match!!! <br>"; } } } } compare('hallo dit is een test', 'F:\\XXX\\UsbWebserver\\Root\\YYY\\ZZZ\\woorden.txt'); ?> |
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 | 1 => dit 2 => is 3 => een 4 => test 0 => hallo 1 => test index: 0 en counter: 0 hallo => hallo -2 index: 0 en counter: 1 hallo => test -12 index: 1 en counter: 0 dit => hallo -4 index: 1 en counter: 1 dit => test -16 index: 2 en counter: 0 is => hallo 1 index: 2 en counter: 1 is => test -11 index: 3 en counter: 0 een => hallo -3 index: 3 en counter: 1 een => test -15 index: 4 en counter: 0 test => hallo 12 index: 4 en counter: 1 test => test 0 match!!! |
Bedankt, dat werkt idd.quote:Op zaterdag 1 augustus 2009 23:15 schreef Roönaän het volgende:
Dit komt omdat file() de newlines bewaard. Je zou een array_map met trim kunnen proberen.
1 2 3 4 5 6 7 8 | function sortArray(&$array){ ksort($array); foreach(array_keys($array) as $i){ sortArray($array[$i]); } } ?> |
Helaas, m'n glazen bol is stuk.quote:Op zaterdag 1 augustus 2009 23:42 schreef uppie83 het volgende:
En uiteindelijk doet dit de truc wel. Ik krijg er echter een shitload aan foutmeldingen bij.
1 2 3 4 5 6 7 8 9 10 11 | function sortArray(&$array){ if(!is_array($array)) { return; } ksort($array); foreach(array_keys($array) as $i){ sortArray($array[$i]); } } ?> |
Voor freelance is ZCE misschien nog enigszins relevant. In mijn werk stukken minder. Hoef me ook niet meer zo nodig als zodanig te positioneren. Werk genoeg.quote:Op zondag 2 augustus 2009 17:57 schreef Xcalibur het volgende:
Roonaan: ben jij geen ZCE meer, of staat het gewoon niet meer in je sig?
Heeft dat nou in de praktijk meerwaarde?
Ik heb het wel eens overwogen, maar ik heb nog nooit een klant gehad die er naar vroeg zeg maar...
Er zijn veel mensen die zoiets hebben van "ZCE " "Zend "quote:Op zondag 2 augustus 2009 22:42 schreef Xcalibur het volgende:
Enigszins relevant klinkt ook niet als een vereiste
Niet alleen Apache installeren, XAMPP installeren.quote:Op maandag 3 augustus 2009 03:38 schreef F4T4L_3RR0R het volgende:
Even een stomme vraag:
Ik wil eenl PHP scriptje op een thuisserver draaien. Daarvoor heb ik Apache en PHP geïnstalleerd. Moet ik ook MySQL installeren? Ik ga geen gebruik maken van databases, maar zag wel allemaal SQL verwijzingen in de php.ini.
Nope, je hoeft geen mysql, (dus ook geen xampp) te draaien als je geen db nodig hebt.quote:Op maandag 3 augustus 2009 03:38 schreef F4T4L_3RR0R het volgende:
Even een stomme vraag:
Ik wil eenl PHP scriptje op een thuisserver draaien. Daarvoor heb ik Apache en PHP geïnstalleerd. Moet ik ook MySQL installeren? Ik ga geen gebruik maken van databases, maar zag wel allemaal SQL verwijzingen in de php.ini.
Ja, het is EEN antwoord.... maar om nou te zeggen dat dit een antwoord op de gestelde vraag is... neuhquote:Op maandag 3 augustus 2009 04:07 schreef Ofyles2 het volgende:
[..]
Niet alleen Apache installeren, XAMPP installeren.
Overigens moet je voor MySQL de root wel beveiligen met een wachtwoord (veiligheidshalve).
Hmm sorry, ik had het vermoeden dat mensen op jullie niveau de fout al uit de code zouden herkennen ;)quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function sortArray(&$array){ ksort($array); foreach(array_keys($array) as $i){ sortArray($array[$i]); } } $test = analyzeString('blablablablabla'); printArray($test); sortArray($test); printArray($test); ?> |
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 | 1 => 111 2 => 11 2 => 1 => 80 2 => 57 4 => 3 3 => 10 3 => 1 => 10 3 => 2 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114 Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115 1 => 1 => 111 2 => 11 2 => 1 => 80 2 => 57 3 => 10 4 => 3 3 => 1 => 10 3 => 2 |
En ik had gehoopt/verwacht dat die uitvoer je in ieder geval in een richting zou helpen.quote:Op dinsdag 4 augustus 2009 20:58 schreef uppie83 het volgende:
[..]
Hmm sorry, ik had het vermoeden dat mensen op jullie niveau de fout al uit de code zouden herkennen
Nee, ik snapte er geen hout van, want ik stopte er een array in, en de foutmelding was dat er een array in moest.quote:Op dinsdag 4 augustus 2009 21:15 schreef Light het volgende:
[..]
En ik had gehoopt/verwacht dat die uitvoer je in ieder geval in een richting zou helpen.
Oh, dat werkt wel , ik snap alleen niet waarom dit wel werkt...quote:Roonaan heeft al een oplossing gegeven.
Je hebt een array in een array:quote:Op dinsdag 4 augustus 2009 21:21 schreef uppie83 het volgende:
[..]
Nee, ik snapte er geen hout van, want ik stopte er een array in, en de foutmelding was dat er een array in moest.
[..]
Oh, dat werkt wel *O* , ik snap alleen niet waarom dit wel werkt... -O-
Het enige extra is dat er nu een check op zit of het wel een array is, terwijl ik zelf al 100% zeker was dat het een array was.
1 2 3 4 5 6 7 8 9 10 11 12 | array( 1 => array( 1 => 111, 2 => 11 ), 2 => array( 1 => 80, 2 => 57 ) ); ?> |
1 2 3 | array(1 => 111, 2 => 11); ?> |
1 2 3 4 | word_ID = een gekoppeld woord aan dit bedrijf source_company_word_ID = een ander woord source_branche_ID = het ID van de branche van de koppeling. |
Nee, DISTINCT niet, maar daarmee 'verlies' ik toch ook data?quote:
Het begint bij een duidelijker vraagstelling Maar LEFT JOIN zal er wel niet bij hoeven omdat ik maar één tabel zie.quote:
Dan pakt hij alleen berichten waar zowel hilversum als php in voor komenquote:Op donderdag 6 augustus 2009 11:12 schreef Darkomen het volgende:
http://search.twitter.com/search.atom?q=Hilversum
http://search.twitter.com/search.atom?q=Php
Of
http://search.twitter.com/search.atom?q=Hilversum+php
Werkt dat niet?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //Create the connection handle $curl_conn = curl_init(); //Set up the URL to query Twitter $user_followers = "https://twitter.com/statuses/followers/username.xml"; //Set cURL options curl_setopt($curl_conn, CURLOPT_URL, $user_followers); //URL to connect to curl_setopt($curl_conn, CURLOPT_GET, 1); //Use GET method curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); //Use basic authentication curl_setopt($curl_conn, CURLOPT_USERPWD, 'username:password'); //Set u/p curl_setopt($curl_conn, CURLOPT_SSL_VERIFYPEER, false); //Do not check SSL certificate (but use SSL of course), live dangerously! curl_setopt($curl_conn, CURLOPT_RETURNTRANSFER, 1); //Return the result as string // Result from querying URL. Will parse as xml $output = curl_exec($curl_conn); // close cURL resource. It's like shutting down the water when you're brushing your teeth. curl_close($curl_conn); echo $output; ?> |
http://dev.mysql.com/doc/refman/5.0/en/kill.htmlquote:Op donderdag 6 augustus 2009 11:37 schreef Keiichi het volgende:
In de MySQL client voer ik wel een queries uit die ontzettend veel output hebben (Omdat ik weer eens LIMIT oid ben vergeten).
Is er een manier om die op te laten houden, zonder dat de client word afgesloten. (Omdat ik dan mijn query weer opnieuw moet bedenken )
Ik vraag me af wanneer ik dat dan als laatst geprobeerd heb.quote:Op donderdag 6 augustus 2009 12:08 schreef GlowMouse het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/kill.html
Goed lezen: met de verkeerde ben je ook je connectie kwijt. Maar zelfs dan als je de client opnieuw start, kun je met pijltje omhoog je query toch gewoon terugkrijgen? Bij de standaard client in een linux shell lukt dat wel dacht ik.
1 2 3 4 5 6 7 8 9 10 | /* controlleer of de bestanden bestaan die minimaal benodigd zijn om het systeem te draaien */ if (!$this->checkFiles()) { throw new Exception('Site mist besturings bestanden, site stopt'); } ?> |
1 2 3 4 5 6 7 8 9 10 | $path = ''; $last = ''; for ($i = 0; $i < $x; $i++) { // creer path $path .= "/" . $this->urlSegments[$i]; $last = $this->urlSegments[$i]; } ?> |
Juist wel, stel dat je volgend jaar een keer een melding krijgt van een klant dat de website het niet doet, dan wil je dus wel terug kunnen zien wanneer dat was, welk bestand het mis ging etc etc.quote:Op vrijdag 7 augustus 2009 13:31 schreef Chandler het volgende:
@Scorpie; klopt, in deze valt ook niet echt iets te loggen hé? als de bestanden van de site er al niet zijn hoef ik ook niets te loggen, nadat de opzet goed is wil ik idd een nette error logger schrijven die eventueel de fouten emailt / opslaat oid.
Ik zit nu op mijn werk, kan pas vanavond ernaar kijken helaasquote:Maar nu zit ik met een vraag; ik wil dus bestanden includen zoals models/error/error.php echter kan ik dan niet bij de aangemaakte classes oid? zie foutmelding jals je het script draait
BTW, let even op. Exceptions gooien in PHP is een 'dure' aangelegenheid:quote:Op vrijdag 7 augustus 2009 14:23 schreef Chandler het volgende:
Ik heb alle tijd, zal eens kijken hoe andere mensen hun error classes schrijven
Met globals gaan werken.quote:Op vrijdag 7 augustus 2009 16:03 schreef Darkomen het volgende:
Ik ben voor het eerst met classes bezig [ímg]http://i.fokzine.net/s/redface.gif[/ímg] en heb 2 classes 'datyabase' en 'script'
beide include ik in een file, pagina.php
Ik start de db class;
$db = new Connect_database();
start het script
$script = new Script();
Voer een functie uit,
$script->haaluitdb();
Maar hoe kan de functie 'haaluitdb' een functie uit de class 'db' aanroepen?
$db->Query(); werkt niet.
Bedoel je niet controllers/error/error.php ?quote:Op vrijdag 7 augustus 2009 13:31 schreef Chandler het volgende:
Maar nu zit ik met een vraag; ik wil dus bestanden includen zoals models/error/error.php echter kan ik dan niet bij de aangemaakte classes oid? zie foutmelding jals je het script draait
Mja, maar als je gaat vragen of je globals moet gaan gebruiken om classes te laten samenwerken, dan moet je serieus even naar de frameworks kijken hoe zij dit inrichten. Leren zegt niets over of je zelf iets breidt, maar of je ook naar andere code kijkt om daar de beste dingen uit over te nemen en in je eigen sausje te dopen.quote:Op zaterdag 8 augustus 2009 08:29 schreef Chandler het volgende:
roonaan hoe vaak heb jij zelf zaken gemaakt die al duizenden keren gemaakt zijn? Ik wil graag leren en dat doe ik door te doen. Ps dit bericht komt via mobiel internet gehe
1 2 3 4 5 6 7 8 9 10 11 12 13 | $id=$_GET['id']; if (!isset($id)){ $id = $confg['start']; } if (file_exists("php/".$id.".php")){ //if file exists, include file, otherwise errormessage include ("php/".$id.".php"); } else{ include("php/error.php"); } ?> |
1 2 3 4 5 6 7 8 | if (isset($_GET['id'])){ $id=$_GET['id'] } else{ $id = $confg['start']; } ?> |
Nee het is ook geen echte switch, maar wat ik ermee bedoel is dat ik dit gebruik om te switchen tussen verschillende pagina's in de website.quote:Op zondag 9 augustus 2009 14:42 schreef GlowMouse het volgende:
Ik zie geen switch
$id wordt niet gecontroleerd, nu kan ik elk bestand includen.
Wat je moet doen is debuggen: hier en daar var_dump($varnaam) neerzetten en kijken wat er gebeurt.
Tis niet alleen PHP, maar ook (My)SQL voor dummies topic.quote:Op woensdag 12 augustus 2009 08:43 schreef Scorpie het volgende:
Ik denk niet eens dat dat zozeer een PHP-gerelateerd issue is ursel, volgens mij heeft elke grote applicatie dat vraagstuk.
PHP heeft een functie mysql_ping(). Ik neem aan dat zoiets ook beschikbaar is in andere talen.quote:Op woensdag 12 augustus 2009 09:18 schreef Xcalibur het volgende:
Kan je niet je connectie checken bij iedere query die je doet / met een timer? Kan dat met een simpele isset misschien? En als die niet meer bestaat opnieuw connecten?
Qua performance moet dat weinig uitmaken lijkt me
Lijkt me in ieder geval beter dan bij iedere query een nieuwe connectie opzetten
quote:Op woensdag 12 augustus 2009 09:51 schreef Light het volgende:
[..]
PHP heeft een functie mysql_ping(). Ik neem aan dat zoiets ook beschikbaar is in andere talen.
quote:Note: Since MySQL 5.0.13, automatic reconnection feature is disabled.
Je hebt ook geen auto reconnect nodig. Met die ping-functie kijk je of de connectie nog werkt. Zo niet, dan sluit je de connectie (zodat alles aan jouw kant in ieder geval netjes is afgesloten) en open je een nieuwe. Je kunt ook meteen de nieuwe resource identifier opslaan (en gebruiken voor de queries en andere db-acties).quote:
Ahh, w8 idd, alleen reconnecten is disabled.quote:Op woensdag 12 augustus 2009 10:22 schreef Light het volgende:
[..]
Je hebt ook geen auto reconnect nodig. Met die ping-functie kijk je of de connectie nog werkt. Zo niet, dan sluit je de connectie (zodat alles aan jouw kant in ieder geval netjes is afgesloten) en open je een nieuwe. Je kunt ook meteen de nieuwe resource identifier opslaan (en gebruiken voor de queries en andere db-acties).
Kan wel. Ligt eraan hoe alles ingesteld staat. Maar niet bevoorderlijk iig.quote:Op woensdag 12 augustus 2009 12:08 schreef GlowMouse het volgende:
Andere ini-file kan niet, maar je kunt wel overriden met httpd.conf, zie http://ie.php.net/configuration.changes
ah.. thnxquote:Op woensdag 12 augustus 2009 12:08 schreef GlowMouse het volgende:
Andere ini-file kan niet, maar je kunt wel overriden met httpd.conf, zie http://ie.php.net/configuration.changes
1 2 3 4 5 6 7 8 | <artnr>12345</artnr> <omschrijving>Heel goed product</omschrijving> <prijs_ex>8.50</prijs_ex> <voorraad>N</voorraad> <levertijd>3</levertijd> <aantal_op_voorraad>10+</aantal_op_voorraad> </product> |
Kost dat niet extreem veel resources op je server?quote:Op woensdag 12 augustus 2009 13:45 schreef Xcalibur het volgende:
Ik zou eerst de XML inlezen en die parsen naar een array. En dan de array checken op artikelnummer. Ik wil meestal meer dingen doen met die info dan alleen checken of iets bestaat, dus dan zijn arrays wel handig
Als dat niet nodig is: je kunt misschien ook wel gewoon het ding inlezen, en in de string zoeken naar de tekst "<artnr>12345</artnr>"?
Edit: de XML inlees- en parsefunctie heb ik uit de comments van de betreffende pagina op php.net geloof ik
Ligt eraan hoevaak het gebeurt Als je dezelfde xml file heel vaak nodig hebt, moet je hem 1x importeren in een database.quote:Op woensdag 12 augustus 2009 14:25 schreef wobbel het volgende:
[..]
Kost dat niet extreem veel resources op je server?
Of in een Zend_Search_Lucene, afhankelijk van je zoekacties.quote:Op woensdag 12 augustus 2009 14:45 schreef GlowMouse het volgende:
[..]
Ligt eraan hoevaak het gebeurt Als je dezelfde xml file heel vaak nodig hebt, moet je hem 1x importeren in een database.
Er wordt regelmatig gezocht....quote:Op woensdag 12 augustus 2009 14:45 schreef GlowMouse het volgende:
[..]
Ligt eraan hoevaak het gebeurt Als je dezelfde xml file heel vaak nodig hebt, moet je hem 1x importeren in een database.
Ik ging ervan uit dat het een eenmalige actie was jaquote:Op woensdag 12 augustus 2009 14:25 schreef wobbel het volgende:
[..]
Kost dat niet extreem veel resources op je server?
Ik heb de var_dump geprobeerd. Deze wordt echter ook niet weergegeven Het enige dat ik met de volgende code te zien krijg is de inhoud van $confg['start'], zelfs de var_dump is nergens meer terug te vinden.quote:Op zondag 9 augustus 2009 14:42 schreef GlowMouse het volgende:
Ik zie geen switch
$id wordt niet gecontroleerd, nu kan ik elk bestand includen.
Wat je moet doen is debuggen: hier en daar var_dump($varnaam) neerzetten en kijken wat er gebeurt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <div id="inhoud"> // < ?php niet echt comment var_dump($_GET['id']); $id=$_GET['id']; if (!isset($id)){ $id = $confg['start']; } if (file_exists("php/".$id.".php")){ //if file exists, include file, otherwise errormessage include ("php/".$id.".php"); } else{ include("php/error.php"); } // ? > niet echt comment </div> ?> |
Dat is eigenlijk meer omdat fok bij de php code automatisch php openings en sluitingshaakjes neerzet. Zelf heb ik ze in mijn div zitten.quote:Op woensdag 12 augustus 2009 19:13 schreef Anthraxx het volgende:
Waarom mix je je php tags? Je opent er 1 waar je een div plaatst. Die hoort duidelijk buiten de <?php tags. Verder open je er weer 1 terwijl je die daarboven al hebt.
Met de volgende link: index.php?id=nieuwsquote:Op woensdag 12 augustus 2009 19:29 schreef Anthraxx het volgende:
Ah okay. Als je var_dump doet op alleen _GET ? Staat id er tuusen? En zet er eerat een exit(); achter. Misschien meer duidelijk dan.
Ja.quote:Op donderdag 13 augustus 2009 20:48 schreef Swetsenegger het volgende:
kan je 1 element in een array unsetten?
1 2 3 | unset($array[$key_to_unset]); ?> |
maar ik vindt em wel logischquote:Op donderdag 13 augustus 2009 21:19 schreef Swetsenegger het volgende:
Hmz, wel omslachtig
Niet direct, dan moet je dingen combineren. Is het niet handiger om te zorgen dat de volgorde van de elementen goed komt te staan bij het vullen van de array?quote:Op donderdag 13 augustus 2009 20:09 schreef Swetsenegger het volgende:
Kijk ik er nou overheen of is er geen functie om een element in een array naar het begin te verplaatsen?
Dat staan ze ook. Tot ik ergens op klikquote:Op donderdag 13 augustus 2009 21:29 schreef Light het volgende:
[..]
Niet direct, dan moet je dingen combineren. Is het niet handiger om te zorgen dat de volgorde van de elementen goed komt te staan bij het vullen van de array?
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 | ( [CC40FF] => Array ( [3] => Array ( [maat] => large [prijs] => 1495 [voorraad] => 2 ) [5] => Array ( [maat] => mediu [prijs] => 995 [voorraad] => 1 ) ) [D1D1D1] => Array ( [4] => Array ( [maat] => mediu [prijs] => 1495 [voorraad] => 1 ) ) ) |
Nergens op klikken dan Soms is de oplossing zo simpelquote:Op donderdag 13 augustus 2009 21:50 schreef Swetsenegger het volgende:
[..]
Dat staan ze ook. Tot ik ergens op klik
Je weet toch welke kleur er gekozen is? Met array_keys() kun je een lijstje maken van alle beschikbare kleuren (en dan heb je altijd dezelfde volgorde, aangenomen dat de volgorde van de array hetzelfde is). Vervolgens gebruik je de geselecteerde kleur om de belangrijke informatie daarvan te achterhalen. Dan heb je niet eens een foreach-loop nodig.quote:Dit moet op een detailpagina komen van een webshop, zoiets als dit:
http://www.perfectlybasic(...)-01370030651105.aspx
Zoals je ziet heb je dus meerdere kleuren. En zodra je op een kleur klikt krijg je een andere foto en andere maat info. De ANDERE kleuren in de array moeten dan alleen als kleurblok geparsed worden, de rest mag genegeerd.
dus ik wil een foreach loop maken voor bovenstaande array, waarbij ik een tellertje mee laat lopen. En als die teller groter dan 1 is parse ik alleen de key. Maar dat betekent dus dat de kleur die ik gekozen heb vooraan moet staan in de array
Ik denk dat dat meevalt zolang je wel consequent een patroon handhaaft. Dus altijd alle kleuren in dezelfde volgorde en de geselecteerde kleur vooraan. Met letters of cijfers zou ik het niet doen, die hebben een natuurlijke sortering. Bij kleuren is dat veel minder.quote:Op donderdag 13 augustus 2009 22:04 schreef Roönaän het volgende:
Je kan de unieke kleuren toch opvragen met een array_unique op de array_keys? Is het voor de eindgebruiker niet verwarrend als de volgorde van de kleuren veranderd?
quote:Op donderdag 13 augustus 2009 22:18 schreef Swetsenegger het volgende:
Bij de eerste keer dat ik op de pagina kom heb je nog geen specifieke kleur gekozen. Dus parse ik de eerste. En daarna kan je een kleur kiezen, maar de rest van de info moet ook op het scherm....
Maar ik snap wat jullie bedoelen. Eens zien of ik er mee verder kom.
1 2 3 4 5 6 7 | $availableColours = array_keys($colouredItems); if(!isset($selectedColour) || !in_array($selectedColour, $availableColours)) { $selectedColour = $availableColours[0]; } $itemDetails = $colouredItems[$selectedColour]; ?> |
Er wordt gesorteerd op kleur als het uit DB komt, en dan gaat het de array in.quote:Op donderdag 13 augustus 2009 22:43 schreef Roönaän het volgende:
Zelf zou ik nog een expliciete sort op de kleuren doen,zodat deze niet afhangt van de db insert volgorde. Misschien op hui of eventueel op een site brede palet.
Is het overigens een soort dhtml site met hidden divs die je wisselt, dat je al deze info van alle kleuren altijd uit de db haalt?
Dan moet ik weer een extra query draaien.quote:Op donderdag 13 augustus 2009 22:51 schreef Roönaän het volgende:
Je hebt die uitgebreide info van de andere kleuren toch niet nodig op die pagina?
Dus zou je af kunnen met een losse query op de kleuren met een sort of een join met een palette tabel zeg maar
Dat zou ook kunnen, maar zelfs als ik refresh blijft het probleem bestaan.quote:Op donderdag 13 augustus 2009 23:19 schreef Xcalibur het volgende:
Ik denk dat hij wil wisselen zonder de pagina te refreshen?
Anders zou het hele volgorde probleem niet bestaan volgens mij?
1 2 3 4 5 6 7 | $query="select e.id, hex(e. kleur) AS kleur, e.maat, e.prijs, e.voorraad, a.naam, a.merk, a.omschrijving from eigenschappen e join artikelen a on (e.artId=a.id) where e.artID=".$id." order by kleur"; ?> |
dat is die paarse blouse?quote:Op vrijdag 14 augustus 2009 08:28 schreef Swetsenegger het volgende:
Voor de duidelijkheid ga naar http://fashioninthecity.nl/index.php kies links blouses & tunieken -> Katoen. En klik dan op het meest rechtse artikel. Dan wordt de flow duidelijk. En de pagina waarop je dan terecht komt moet zoiets als dit worden: http://www.perfectlybasic(...)-01370030651105.aspx
Dan krijg je een pagina met de array erin die ik moet gaan parsenquote:Op vrijdag 14 augustus 2009 08:44 schreef Xcalibur het volgende:
[..]
dat is die paarse blouse?
Ik krijg dan een blanco pagina (wel layout, geen content). Op de kleur klikken idem.
Mja, maar je zit niet continue data over te pompen die je niet gebruikt. Je wilt immers alleen de verschillende kleuren weten en de overige info van 1 specifieke kleur/artikel. Maar goed, dit gaat op zich ook wel werken op natuurlijk.quote:Op vrijdag 14 augustus 2009 08:28 schreef Swetsenegger het volgende:
Dan moet ik weer een extra query draaien.
Waarom in IE niet?quote:Op vrijdag 14 augustus 2009 08:49 schreef Swetsenegger het volgende:
[..]
Dan krijg je een pagina met de array erin die ik moet gaan parsen
Tenminste... in elke browser anders dan IE
al sla je me dood.quote:
1 2 3 4 5 | echo'<pre>'; print_r($array); echo'</pre>'; ?> |
Ik zit nu op een macquote:Op zaterdag 15 augustus 2009 22:16 schreef Roönaän het volgende:
Swets. Kijk even op www.xenocode.com/browsers handige site voor in je toolkit. Als je op je lokale IE7/IE8 vervolgens ook de web development tools hebt geinstalleerd komen die ook naar voren in de xenocode IE6/IE7, dus dat is wel weer handig. Eventueel kan je ook Safari testen, maar ik meen me te herinneren dat je zelf al wel een Mac had toch?
Ik gebruik hem hier bij mij om ie6 te testen. Dan hoef je anderen niet te vragen.quote:Op zaterdag 15 augustus 2009 22:17 schreef Swetsenegger het volgende:
[..]
Ik zit nu op een mac
wacht ff ik heb nog een vpn tunneltje waarmee ik ff IE kan bekijken. Wat voegt deze tool toe Roonaan?
-edit- probleem gevonden
Eigenlijk moet IE6 gewoon dood. Net als webhosters die nog MySQL 3.23 gebruiken.quote:Op zondag 16 augustus 2009 00:39 schreef Roönaän het volgende:
[..]
Ik gebruik hem hier bij mij om ie6 te testen. Dan hoef je anderen niet te vragen.
En ik maar denken dat jij not that kind of developer was..quote:Op zondag 16 augustus 2009 00:45 schreef Light het volgende:
[..]
Eigenlijk moet IE6 gewoon dood. Net als webhosters die nog MySQL 3.23 gebruiken.
Uiteindelijk is de klant koning uiteraard En zolang IE6 nog een redelijke groep gebruikers heeft, kun je het niet helemaal laten vallen. Ik heb het laatst nog voor een paar sites nagekeken, van de ca. 85% IE gebruikers heeft zo'n 17% IE6. Da's dus zo'n 14-15% van het totaal aantal bezoekers, en da's te veel om helemaal links te laten liggen.quote:Op zondag 16 augustus 2009 01:31 schreef Roönaän het volgende:
[..]
En ik maar denken dat jij not that kind of developer was..
Vorige week nog een IE6-only oplevering gedaan voor bank tools. (6 tools eigenlijk, maar goed)
1 |
1 2 3 4 | $regEx = "/\<td colspan=\"2\" class=\"smallest\"\>Postorder<br /\>(.*?)\<br /\>Afhalen<br /\>/ise"; preg_match_all($regEx, $content, $matches); ?> |
1 2 3 | preg_match('|<td colspan="2" class="smallest">Postorder<br /><img src="/img/layout/vi(.*?).gif" width="60" height="10" border="0"><br />Afhalen<br />|',$content,$matches); ?> |
Dan moet die bestandsnaam wel altijd even lang zijn. Anders ben je nog weer bezig met extra functies om uit te zoeken waar de bestandsnaam eindigt. Kan natuurlijk wel.quote:Op zondag 16 augustus 2009 22:37 schreef Xcalibur het volgende:
Dat levert niet het resultaat op wat je wilde (/img/layout/vi115.gif), maar alleen 115.
Verder lijkt dit me niet echt de manier om een regex te bouwen (met zoveel harde string erin zeg maar), op deze manier kan je het net zo goed met een string-functie doen volgens mij.
1 2 3 | preg_match('#<img.*src="(.*)".*>#Ui', $content, $matches); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 | require ("php/XXX/secFunctions.php"); session_start(); $_SESSION['sessionString'] = randomString(5); <form action=" echo $_SERVER["PHP_SELF"]; " method="POST"> <img width="150" height="100" border='0' src=test.php alt=”secImage”> <input size="50" maxlength="60" type="text" name="sec"><br /> echo "session:"; Print_r ($_SESSION); </form> ?> |
1 2 3 4 5 6 | require ("php/XXX/secFunctions.php"); session_start(); createSecImage(150, 100, 100, $_SESSION['sessionString']); ?> |
Nou ja, dat bedoel ik dusquote:Op zondag 16 augustus 2009 22:50 schreef Light het volgende:
[..]
Dan moet die bestandsnaam wel altijd even lang zijn. Anders ben je nog weer bezig met extra functies om uit te zoeken waar de bestandsnaam eindigt. Kan natuurlijk wel.
Dit is een stuk korter (en niet getest):
[ code verwijderd ]
Hij was idd greedy. Ik had de modifier U moeten gebruiken, ipv u.quote:Op maandag 17 augustus 2009 08:28 schreef Xcalibur het volgende:
[..]
Nou ja, dat bedoel ik dus
Deze is een stuk flexibeler en overzichtelijker, je bestandsnaam staat altijd voor de sluittag van de img bijvoorbeeld.
Ik denk dat deze wel greedy is of niet? Als er twee images instaan pakt hij de opentag van de eerste en de sluittag van de tweede, en is je resultaat alles wat er tusseninstaan. Maar daar is een modifier voor om dat te fixen, maar die weet ik even niet uit m'n hoofd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | foreach ($prijzen as $dienst->d_prijs){ echo $dienst->d_prijs.'<br>'; $prijs = explode('.',($dienst->d_prijs/100)); if($prijs[1]){ echo $prijs[1].'<br>'; echo strlen($prijs[1]).'<br>'; $prijs[1] = (strlen($prijs[1]=='1')) ? '.'.$prijs[1].'0' : '.'.$prijs[1]; echo $prijs[1].'<br>'; echo strlen($prijs[1]).'<br>'; } $dienst->d_prijs = $prijs[0].$prijs[1]; echo $dienst->d_prijs.'<br><br>'; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 1 .10 3 10.10 1050 5 1 .5 2 10.5 |
Dat lijkt me niet nee.quote:Op maandag 17 augustus 2009 21:15 schreef Darkomen het volgende:
Ik sla het dus al ook op in hele centen ;-)
maar ik ga mn gebruikers geen centen voorschotelen zodat ze het in hun hoofd moeten omrekenen.
(Van http://nl2.php.net/sprintf)quote:Example #8 sprintf(): formatting currency
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted will output "123.10"
?>
De haakjes staan ook niet goedquote:Op maandag 17 augustus 2009 21:30 schreef Darkomen het volgende:
HenryHill, daar begin je dus al met een gedeeld bedrag.
@glowmuis, ja daar gaat het fout, bij strlen==1
heb het even omgedraaid, strlen=2 en dan gaat het wel goed?!
Ja, daar was ik al bang voor, dat je dat zou zeggenquote:Op maandag 17 augustus 2009 21:30 schreef Darkomen het volgende:
HenryHill, daar begin je dus al met een gedeeld bedrag.
Als het dan toch via MySQL gaat, dan raad ik DECIMAL aan.quote:Op maandag 17 augustus 2009 21:37 schreef HenryHill het volgende:
[..]
Ja, daar was ik al bang voor, dat je dat zou zeggen
Sla gewoon het bedrag in hele centen op in je database. Als je het getal wilt afdrukken, deel het eerst door 100 en geef het mee aan de sprintf-functie. Komt helemaal goed.
Ik heb geen idee. Maar misschien weten ze het in Het grote (?) .NET en MSSQL topic welquote:Op dinsdag 18 augustus 2009 14:04 schreef Swetsenegger het volgende:
Ik moet recursief een aantal records uit MSSQL DB trekken, hoe kan ik dat het beste doen?
Eerste record wordt met SELECT * FROM db WHERE parent=x uit de db gehaald. Vervolgens zou ik met het id van dat record deze exercitie moeten herhalen. Hoe doe ik dat het makkelijkst? Een join ofzo?
Weet je wat nu het erge is, ik zit een stukje code van een paar dagen geleden te bekijken, daar gebruik ik wel gewoon number_format!quote:
Hmm, recursief... heeft het toevallig met een tree te maken? Zo ja, dan zou je misschien het Nested Set Model uit Managing Hierarchical Data in MySQL eens moeten bekijken.quote:Op dinsdag 18 augustus 2009 14:04 schreef Swetsenegger het volgende:
Ik moet recursief een aantal records uit MSSQL DB trekken, hoe kan ik dat het beste doen?
Eerste record wordt met SELECT * FROM db WHERE parent=x uit de db gehaald. Vervolgens zou ik met het id van dat record deze exercitie moeten herhalen. Hoe doe ik dat het makkelijkst? Een join ofzo?
quote:Op dinsdag 18 augustus 2009 20:08 schreef HenryHill het volgende:
[..]
Hmm, recursief... heeft het toevallig met een tree te maken? Zo ja, dan zou je misschien het Nested Set Model uit Managing Hierarchical Data in MySQL eens moeten bekijken.
Hehe... had gekundquote:Op dinsdag 18 augustus 2009 20:26 schreef Swetsenegger het volgende:
[..]
Nee the nested set heb ik al een hele tijd terug toegepast in een database driven menu wat ik mijn cms gebruik. Nee in dit geval is het een redelijk rudimentaire parent/child verhouding in een situatie waar nested set niet echt gaat werken.
1 2 3 4 5 | from medewerker as level1 left join medewerker as level2 on (level1.med_id = level2.med_manager_id) left join medewerker as level3 on (level2.med_id = level3.med_manager_id) where level1.med_naam = 'Jansen' |
enkele = is toewijzenquote:Op woensdag 19 augustus 2009 13:38 schreef Pizzahut het volgende:
klein vraagje tussendoor, ik weet dat == een is gelijk aan betekend maar wat is .= en === eigenlijk?
1 2 3 4 | $var = 3 echo $var; ?> |
1 |
1 2 3 4 5 6 7 8 | $var="3"; //OF $var = 3; if($var==3){ echo 'true'; }else{ echo 'false'; } ?> |
1 |
1 2 3 4 5 6 7 8 | $var ="3"; //$var=3; geeft 'true' terug. if($var===3){ echo 'true'; }else{ echo 'false'; } ?> |
1 |
1 2 3 4 5 | $var = 'foo'; $var.= 'bar'; echo $var; ?> |
1 |
1 2 3 4 | 2 2 21-09-2009 27-09-2009 3 1 25-08-2009 31-08-2009 4 3 18-08-2009 26-09-2009 |
1 2 3 4 5 6 7 8 | unix_timestamp(vanaf) AS vanaf, unix_timestamp(tot) AS tot FROM reserveringen WHERE kamer = '" . $DB->escape($_POST['kamers']) . "' AND (vanaf >= '" . $vanaf_tijd . "' OR tot <= '" . $tot_tijd . "') LIMIT 1 |
1 2 3 4 5 6 7 | unix_timestamp(vanaf) AS vanaf, unix_timestamp(tot) AS tot FROM reserveringen WHERE kamer = '2' AND '1250719200' BETWEEN vanaf AND tot LIMIT 1 |
Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?quote:Op woensdag 19 augustus 2009 13:44 schreef Swetsenegger het volgende:
[..]
enkele = is toewijzen
dubbele == is vergelijken
3 dubbel === is vergelijken op inhoud EN type.
enkele met .= is koppelen.
Voorbeeld:
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
quote:Op vrijdag 21 augustus 2009 18:23 schreef Pizzahut het volgende:
[..]
Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?
1 2 3 4 5 | $i = 1; if($i === '1') echo "$i === '1'"; if($i === 1) echo "$i === 1"; ?> |
quote:Op vrijdag 21 augustus 2009 18:23 schreef Pizzahut het volgende:
[..]
Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?
1 2 3 4 5 6 7 | $x=2 if ($x===2) { //true; } ?> |
Even voor de duidelijkheid:quote:Op woensdag 19 augustus 2009 13:51 schreef Chandler het volgende:
Ik kom even ergens niet uit. Voor een resereringssysteem gebruik ik een tabel met de volgende gegevens.
id - kamer - vanaf - tot
int - varchar - timestamp - timestamp
nu heb ik in de database de volgende gegevens
[ code verwijderd ]
Nu wil ik controlleren of kamer 1 beschikbaar is tussen 18 en 19 aug, echter krijg ik dat niet goed voor elkaar
Hoe doet men dit? ik probeerde het zo
[ code verwijderd ]
Wat doe ik fout?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1. RrrrrrrR X------X 2. RrrrrrrR X--X 3. RrrrrrrR X------X 4. RrrrrrrR X--X 5. RrrrrrrR X--------------X 6. RrrrrrrR |
1 2 3 | RewriteRule ^blog$ index.php?page=1 (dit is mijn frontpage) RewriteRule ^blog/([0-9][0-9])$ index.php?page=7&id=$1 (mijn lees blog pagina) |
De meeste hotels willen dat je voor 12 uur vertrekt op de vertrekdag, en je kunt pas je kamer op na 3 of 4 uur 's middags. Dan kun je dus een dubbele reservering hebben voor een dag (persoon A vertrekt en persoon B komt aan). Of je moet dat op een andere manier ondervangen.quote:Op vrijdag 21 augustus 2009 20:04 schreef HenryHill het volgende:
Oh, en een gratis tip van mij: sla geen datumranges op, maar een rij per dag waarop een kamer bezet is (elke datum-rij krijgt dan een FK-verwijzing naar de reservering zelf). Dit maakt je queries een heel stuk makkelijker.
Een dag loopt van 12 uur 's middags tot 12 uur 's middags de volgende dag. M.a.w.: als je laatst opgeslagen dag 21 Aug is, dan heb je tot 22 Aug 12 uur om uit te checken. Opgelost.quote:Op vrijdag 21 augustus 2009 21:05 schreef Light het volgende:
[..]
De meeste hotels willen dat je voor 12 uur vertrekt op de vertrekdag, en je kunt pas je kamer op na 3 of 4 uur 's middags. Dan kun je dus een dubbele reservering hebben voor een dag (persoon A vertrekt en persoon B komt aan). Of je moet dat op een andere manier ondervangen.
1 2 3 4 5 6 7 | FROM G_Producten WHERE Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' AND ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' ORDER BY ProductTitel ASC LIMIT 40 |
1 2 3 4 5 6 7 8 9 | FROM G_Producten WHERE ( Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' AND ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' ) OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' ORDER BY ProductTitel ASC LIMIT 40 |
1 2 3 4 5 6 7 8 9 | FROM G_Producten WHERE Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' AND ( ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' ) ORDER BY ProductTitel ASC LIMIT 40 |
1 2 3 4 5 6 7 8 9 10 11 12 | FROM G_Producten WHERE ( Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' AND ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' ) OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' ORDER BY ProductTitel ASC LIMIT 40 |
1 2 3 4 5 6 7 8 9 10 11 12 | FROM G_Producten WHERE Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' AND ( ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' ) ORDER BY ProductTitel ASC LIMIT 40 |
Die === is vooral onmisbaar omdat het gedrag van == nogal idioot is:quote:
1 2 3 4 5 6 7 8 | var_dump($a);// --> bool(true) $a = (0 === 'foo'); var_dump($a);// --> bool(false) $a = (true == 'foo'); var_dump($a);// --> bool(true) $a = (true === 'foo'); var_dump($a);// --> bool(false) |
Je kunt ook gewoon true == false aantonen op die manierquote:Op maandag 24 augustus 2009 07:36 schreef SuperRembo het volgende:
[..]
Die === is vooral onmisbaar omdat het gedrag van == nogal idioot is:
[ code verwijderd ]
preg_match?quote:Op maandag 24 augustus 2009 14:28 schreef Chandler het volgende:
Ik heb nog even een vraag; mijn vorige is net opgelost (Bedankt HenryHill).
eregi komt in de toekomstige versie 6 van php te vervallen, hoe en met welke functie moet ik nu strings checken? ik wil bv een string checken of het alleen bestaat uit a-zA-Z0-9-_ en niets meer..
Anyone?
klooi eens met je meta info en UTF-8quote:Op dinsdag 25 augustus 2009 10:55 schreef Flaccid het volgende:
Ok simpele vraag hier: Ik wil een pagina includen die tekens als ë, á etc bevat. Echter komt hiervoor in de plaats dit dingetje: �
Hoe krijg ik toch de accenten daarop, zonder rare alt-codes te hoeven gebruiken?
Ik weet niet hoe ik met Ajax moet werkenquote:Op dinsdag 25 augustus 2009 15:21 schreef de_DDoSwachter het volgende:
idd, daarvoor is nou juist ajax uitgevonden. En dan is het een koud kunstje om even een loader-animatie tussendoor te gooien.
Weet jij een manier om zonder javascript én zonder refresh te controleren of de schrijfactie gereed is?quote:Op dinsdag 25 augustus 2009 16:18 schreef Darkomen het volgende:
Is totaal niet moeilijk, standaard httprequest scriptje zoeken, http.readystate checken.
Is wel alleen javascript trouwens.
Je kunt met PHP flush() aan het begin van je script alvast wat naar de browser sturen, maar dat werkt niet altijd.quote:Op dinsdag 25 augustus 2009 16:27 schreef de_DDoSwachter het volgende:
[..]
Weet jij een manier om zonder javascript én zonder refresh te controleren of de schrijfactie gereed is?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function recursief($parent){ $query="SELECT q.id,q.dateandtime,q.codeSupplier,q.codeSitecom,q.description,q.FOBunit,q.FOBpa,q.FOBpackage,q.FOBcasing,q.FOBtotal,q.typeCasing,q.typePackage,q.CE,q.FOC,q.Incoterm,q.MOQ,q.MSQ,q.leadtimeForcasted,q.leadtime,q.parent, q.child, s.SUPPLIER, p.type FROM quotations q JOIN supplier s on (q.supplier=s.id) JOIN product_range p on (q.productRange=p.id) where q.parent=".$parent; $r=mssql_query($query); if(mssql_num_rows($r)!=0){ $rij = mssql_fetch_assoc($r); $row[] = $rij; //echo $rij['id']."<br />"; recursief($rij['id']); }else{ return $row; } } ?> |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function recursief($parent,$row){ $query="SELECT q.id,q.dateandtime,q.codeSupplier,q.codeSitecom,q.description,q.FOBunit,q.FOBpa,q.FOBpackage,q.FOBcasing,q.FOBtotal,q.typeCasing,q.typePackage,q.CE,q.FOC,q.Incoterm,q.MOQ,q.MSQ,q.leadtimeForcasted,q.leadtime,q.parent, q.child, s.SUPPLIER, p.type FROM quotations q JOIN supplier s on (q.supplier=s.id) JOIN product_range p on (q.productRange=p.id) where q.parent=".$parent; $r=mssql_query($query); if(mssql_num_rows($r)!=0){ $rij = mssql_fetch_assoc($r); $row[]= $rij; //echo $rij['id']."<br />"; recursief($rij['id'],$row); }else{ return($row); } } ?> |
1 |
Dat was al aangepast, maar werkt nog steeds niet.quote:Op dinsdag 25 augustus 2009 18:31 schreef SuperRembo het volgende:
1. Je recursie werkt niet o.a. doordat je $row niet by reference meegeeft.
Hoe bedoel je?quote:2. Recursie is hier niet nodig, kan makkelijk (en waarschijnlijk sneller) in een loop.
Mjah, het is geen performance app. Wordt door 1 persoon gebruikt om een lijstje bij te houden.quote:3. Waarschijnlijk is het veel sneller als je eerst een lijst met id's ophaalt door alleen de quotations tabel te query-en. Daarna haal je al de gegevens op die je nodig hebt door te joinen tegen andere tabellen.
Jaquote:4. Ik hoop dat je de inhoud van $parent goed controleerd.
Hoezo?quote:5. Wat een bende, zelfs voor een testscripje
Zo iets:quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function getQuotations($id) { $rows = array(); while (true) { $sql = " SELECT q.id, q.dateandtime FROM quotations q WHERE q.parent = $id"; $r = mssql_query($sql); if (mssql_num_rows($r) == 0) break; $row = mssql_fetch_assoc($r); $rows[]= $rows; $id = $row['id']; } return $rows; } ?> |
Ja dan heb ik de id's. Dan een query draaien waarin ik de rest er mee uittrek. Ik geef toe, dit is chiquerquote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | require ("php/XXX/secFunctions.php"); // hierin staan de functies 'randomString($length)' en 'createSecImage($width, $height, $percentage, $text)' session_start(); session_register('sessionString'); $_SESSION['sessionString'] = randomString(5); <form action=" echo $_SERVER["PHP_SELF"]; " method="POST"> <img width="150" height="100" border="0" src="image.php?random='.microtime(true).'" alt=”secImage”> <br /> <input size="50" maxlength="60" type="text" name="sec"><br /> echo "session:"; Print_r ($_SESSION); </form> ?> |
1 2 3 4 5 | require ("php/XXX/secFunctions.php"); // hierin staan de functies 'randomString($length)' en 'createSecImage($width, $height, $percentage, $text)' session_start(); createSecImage(150, 100, 100, $_SESSION['sessionString']); ?> |
1 2 3 | var_dump ($array); ?> |
1 |
1 2 3 4 | $array=sort($array); var_dump($array); ?> |
1 |
1 |
Je moet de sort niet assignenquote:Op woensdag 26 augustus 2009 10:11 schreef Swetsenegger het volgende:
Dan geef je toch een header('location:.'$_SERVER['PHP_SELF'].'); na het instellen van de sessie.
Ik heb wat raars:
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
Ik verwacht uit de laatste
[ code verwijderd ]
Ah! Shit ja zie het nu, zo staat het ook gewoon in de manualquote:Op woensdag 26 augustus 2009 10:29 schreef ursel het volgende:
[..]
Je moet de sort niet assignen
Dus alleen sort($array);
Je $array is nu namelijk een boolean, of het sorten gelukt is ja of nee.
Die zocht ik! die mysql manual is zo onoverzichtelijk als de netequote:Op woensdag 26 augustus 2009 22:28 schreef GlowMouse het volgende:
SELECT MAX(id) FROM table
Wel zorgen dat id een PK is of een index heeft.
Je moet gewoon weten wat je zoektquote:Op woensdag 26 augustus 2009 22:32 schreef Swetsenegger het volgende:
[..]
Die zocht ik! die mysql manual is zo onoverzichtelijk als de nete
een pk?quote:Op woensdag 26 augustus 2009 22:28 schreef GlowMouse het volgende:
SELECT MAX(id) FROM table
Wel zorgen dat id een PK is of een index heeft.
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 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | /* tabellen: tinyPoll id (int) title (varchar * 64) comment (text) date_started (date) date_ended (date) answers (tinyint) votes (int) views (int) tinyPollAnswers id (int) pollID (int) answer (varchar * 64) votes (int) tinyPollVotesIp id (int) ip (varchar * 64) hostname (varchar * 128) unique ON ip & hostname tinyPollVotes ipID (int) pollID (int) answerID (int) votedate (date) unique on pollID & ipID */ class tinyPoll { private $db; var $dateFormat = '%y %M %d'; function __construct($db) { $this->db = $db; } public function loadPoll($id = 0, $ip = '', $hostname = '') { $poll = false; $sql = "SELECT tinyPoll.* FROM tinyPoll WHERE UNIX_TIMESTAMP(date_started) < NOW() "; if ($id != 0) { $sql .= " AND `id` = '" . $this->db->escape($id) . "'"; } else { $sql .= " ORDER BY `id` DESC"; } $sql .= " LIMIT 1"; $query = $this->db->query($sql); $items = $this->db->num_rows($query); if ($items == 1) { // load poll $poll = $this->db->fetch_assoc($query); $poll['canvote'] = 1; // load answers $query = $this->db->query("SELECT * FROM tinyPollAnswers WHERE pollID = '" . $this->db->escape($id) . "' LIMIT " . $poll['answers']); $items = $this->db->num_rows($query); if ($items == $poll['answers']) { for ($x = 0; $x < $items; $x++) { // save answers to array! $tmp = $this->db->fetch_assoc($query); $poll['ansers'][$tmp['id']] = array("answer" => $tmp['answer'], "votes" => $tmp['votes']); } } // check for current user if ($ip != '' && $hostname != '') { $query = $this->db->query("SELECT tinyPollVotes.answerID FROM tinyPollVotes LEFT JOIN tinyPollVotesIp ON tinyPollVotesIp.id = tinyPollVotes.ipID WHERE tinyPollVotesIp.ip = '" . $this->db->escape($ip) . "' AND tinyPollVotesIp.hostname = '" . $this->db->escape($hostname) . "' AND tinyPollVotes.pollID = '" . $this->db->escape($id) . "' LIMIT 1"); $items = $this->db->num_rows($query); if ($items != 0) { // vote found, user can't vote! $poll['canvote'] = 0; } } } return $poll; } public function listPolls($start = 0, $num = 10) { // list polls $start = !is_numeric($start) ? 0 : $start; $num = !is_numeric($num) ? 10 : $num; $arr = array(); // make query for loading polls $query = $this->db->query("SELECT tinyPoll.id, tinyPoll.title, tinyPoll.comment, tinyPoll.votes, UNIX_TIMESTAMP(tinyPoll.date_ended) AS closedDate FROM tinyPoll WHERE UNIX_TIMESTAMP(date_started) < NOW() LIMIT " . $start . ", " . $num); $items = $this->db->num_rows($query); if ($items > 0) { // loop number of found polls for ($x = 0; $x < $items; $x++) { $tmp = $this->db->fetch_assoc($query); // save poll settings to array $arr[$tmp['id']] = array("title" => $tmp['title'], "comment" => $tmp['comment'], "votes" => $tmp['votes'], "closed" => ($tmp['closedDate']>time()) ? 0 : 1); } } // return polls array return $arr; } public function votePoll($pollID, $answerID, $ip, $hostname) { // check if poll exists and is open $query = $this->db->query("SELECT tinyPoll.id FROM tinyPoll LEFT JOIN tinyPollAnswers ON tinyPollAnswers.pollID = tinyPoll.id WHERE tinyPoll.id = '" . $this->db->escape($pollID) . "' AND tinyPollAnswers.id = '" . $this->db->escape($answerID) . "' AND UNIX_TIMESTAMP(date_ended) > NOW() LIMIT 1"); $items = $this->db->num_rows($query); // vote not found? if ($items == 0) { // insert vote IP into database $query = $this->db->query("INSERT INTO `tinyPollVotesIp` (`id`, `ip`, `hostname`) VALUES ('', '" . $this->db->escape($ip) . "', '" . $this->db->escape($hostname) . "') ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id);"); $ipID = $this->db->insert_id(); // try to insert the vote in the poll table, if exists, return same ID $query = $this->db->query("INSERT INTO `tinyPollVotes` (`ipID`, `pollID`, `answerID`, `votedate`) VALUES ('" . $this->db->escape($ipID) . "', '" . $this->db->escape($pollID) . "', '" . $this->db->escape($answerID) . "', NOW()) ON DUPLICATE KEY UPDATE ipID = LAST_INSERT_ID(ipID);"); if ($this->db->affected_rows()) { // update poll $this->db->query("UPDATE tinyPoll SET votes = votes +1 WHERE id = '" . $this->db->escape($pollID) . "' LIMIT 1"); // update poll answers $this->db->query("UPDATE tinyPollAnswers SET votes = votes +1 WHERE id = '" . $this->db->escape($answerID) . "' AND pollID = '" . $this->db->escape($pollID) . "' LIMIT 1"); return true; } } return false; } } ?> |
Nou mijn poll script is 70 regels lang. Dit is bijna 2 keer zo lang Maar ik heb niet inhoudelijk naar verschillen gekeken.quote:Op donderdag 27 augustus 2009 11:55 schreef Chandler het volgende:
@Swetsenegger: Lang? eerder heel kort zul je bedoelen?
Precies mijn gedachte, alsof je je eigen website steeds gaat verhuizen qua database types al is het wel handig als je een script schrijft voor 100.000.000 mensen zoals wordpress oid...quote:
Ookal verhuis je het wel ben je alsnog screwed want je queries zullen toch niet meer werkenquote:Op donderdag 27 augustus 2009 12:21 schreef Chandler het volgende:
[..]
Precies mijn gedachte, alsof je je eigen website steeds gaat verhuizen qua database types al is het wel handig als je een script schrijft voor 100.000.000 mensen zoals wordpress oid...
@Swets; 70 regels? mag ik die eens zien?
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 | function show_poll($value){ if ($value==''){ $query="SELECT Poll_Id FROM Polls WHERE Archive=0 ORDER BY Poll_id DESC LIMIT 1"; $result=mysql_query($query); $row=mysql_fetch_assoc($result); $value=$row['Poll_Id']; } $query="SELECT COUNT(*)as aantal FROM Poll_Answers a JOIN Polls as p ON(a.Poll=p.Poll_id) WHERE Poll=".$value." AND (ip='".$_SERVER['REMOTE_ADDR']."' OR archive=1)"; $result=mysql_query($query); $row=mysql_fetch_assoc($result); if($row['aantal']!=0){ return display_poll_results($value); }else{ return display_poll_questions($value); } } function display_poll_results($poll){ $query="SELECT Poll_Name FROM Polls WHERE Poll_Id=".$poll; $result=mysql_query($query); $row_name = mysql_fetch_assoc($result); $query="SELECT COUNT(*) as votes FROM Poll_Answers WHERE Poll=".$poll; $result=mysql_query($query); $row_votes = mysql_fetch_assoc($result); $query="SELECT q.Question as name, q.Poll_Question_Id as question, COUNT(a.Question) as vote FROM Poll_Questions q LEFT JOIN Poll_Answers a ON(q.Poll_Question_Id=a.Question) WHERE q.Poll=".$poll." GROUP BY q.Question ORDER BY q.Poll_Question_Id ASC"; $result=mysql_query($query); $display = "<span class=\"highlight\">Poll - ".$row_name['Poll_Name']." - ". $row_votes['votes']." stemmen - Dank je wel voor je stem!</span>"; if (!empty($error)){ $display.=" ".$error."\r\n<hr />\r\n"; }else{ $display.="\r\n<hr />\r\n"; } $display.= "<table style=\"width:95%;\">\r\n"; while ($row = mysql_fetch_assoc($result)){ $background[$row['question']]=round(200-($row['vote']/($row_votes['votes']/100)*2)); //200 en *2 ivm 200px brede bar ipv 100 $percentage[$row['question']]=round($row['vote']/($row_votes['votes']/100)); $votes[$row['question']]=$row['vote']; $display.= "<tr><td class=\"highlight2\">- ".$row['name']."</td>\r\n"; $display.= "<td><div style=\"width:200px;height:20px;border:solid 1px rgb(29,40,99);background-image:url(image/progress_front.jpg);background-repeat:no-repeat;background-position:-"; if($background[$row['question']]===NULL){ $display .="200"; }else{ $display .= $background[$row['question']]; } $display .="px 0;text-align:center;line-height:20px;color:white;\">"; if($percentage[$row['question']]!=''){ $display .= $percentage[$row['question']]; }else{ $display .= "0"; } $display .="%</div></td>\r\n<td>"; if($votes[$row['question']]===NULL){ $display .="0"; }else{ $display .= $votes[$row['question']]; } $display .=" stemmen</td></tr>\r\n"; } $display.= "</table>\r\n"; return $display; } function display_poll_questions($poll){ $query="SELECT Poll_Name FROM Polls WHERE Poll_Id=".$poll; $result=mysql_query($query); $row_name = mysql_fetch_assoc($result); $query="SELECT * FROM Poll_Questions WHERE Poll=".$poll." ORDER BY Poll_Question_Id ASC"; $result=mysql_query($query); $display = "<span class=\"highlight\">Poll - ".$row_name['Poll_Name']."</span>\r\n<hr />\r\n"; $display.= "<form style=\"margin:0\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\r\n"; while ($row = mysql_fetch_assoc($result)){ $display.= "<input type=\"radio\" name=\"poll_question\" value=\"".$row['Poll_Question_Id']."\" id=\"label".$row['Poll_Question_Id']."\" /> <label class=\"highlight2\" for=\"label".$row['Poll_Question_Id']."\">".$row['Question']."</label><br />\r\n"; } $display.= "<input type=\"hidden\" name=\"poll\" value=\"".$poll."\" />\r\n"; $display.= "<p class=\"highlight2\" style=\"line-height:22px;height:22px;\">Type het getal over : <img style=\"border:solid 1px rgb(09,20,79);vertical-align:middle;\" src=\"/system/php_captcha.php\" alt=\"captcha\" /> <input class=\"input\" style=\"height:20px;vertical-align:middle;font-size:18px;\" type=\"text\" name=\"captcha\" id=\"captcha\" size=\"5\" maxlength=\"5\" /></p>\r\n"; $display.= "<p><input type=\"submit\" name=\"submit\" value=\"Stem!\" /></p></form>"; return $display; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if($_SERVER['REQUEST_METHOD']=='POST'){ //Captcha $key=substr($_SESSION['key'],0,5); if($_POST['captcha']!=$key){ die('vergeet het getal niet over te tikken!'); } If(is_numeric($_POST['poll']) && is_numeric($_POST['poll_question'])){ $query="INSERT INTO Poll_Answers (Question,Poll,ip) VALUES(".$_POST['poll_question'].",".$_POST['poll'].",'".$_SERVER['REMOTE_ADDR']."')"; if($result=mysql_query($query)){ header('location:'.$_SERVER['PHP_SELF']); }else{ $error=' - U heeft al gestemd'; } }else{ die('Zonder keuze kan je niet stemmen'); } } ?> |
Mjah ik ben niet van de template engines.quote:Op donderdag 27 augustus 2009 12:44 schreef Xcalibur het volgende:
Oh, wat ranzig al die html in je script
iemand?quote:Op donderdag 27 augustus 2009 11:38 schreef Swetsenegger het volgende:
Ik vind het wat lang voor een simpel polletje maar ik heb er nog niet echt inhoudelijk naar gekeken
Ik heb een vraagje. Ik heb een site die wat tweets naar twitter verstuurt. En i9n die tweets staat een euro teken. Nu doe ik dat met & euro; zodat ik een crossplatform euroteken krijg. Maar.... voor twitter zijn ook allerlei desktop applicaties en die zijn in de regel NIET webbased. En in plaats van een mooi teken zie die nu dus de html entity.
Zend dan gewoon het euroteken daadwerkelijk mee, maar dan heb ik het probleem dat een ¤ er op bv OSX of Linux er als æ ofzo uitziet.
Hoe krijg ik een cross platform, cross applicatie euroteken?
Ik ook niet, maar het minste wat je kunt doen is je echo's helemaal na je php-code zetten.quote:Op donderdag 27 augustus 2009 12:50 schreef Swetsenegger het volgende:
[..]
Mjah ik ben niet van de template engines.
Ik ben gek op Smartyquote:Op donderdag 27 augustus 2009 12:50 schreef Swetsenegger het volgende:
[..]
Mjah ik ben niet van de template engines.
eh, ik zet alle output in een var en return die.quote:Op donderdag 27 augustus 2009 12:52 schreef GlowMouse het volgende:
[..]
Ik ook niet, maar het minste wat je kunt doen is je echo's helemaal na je php-code zetten.
Mjah, in zend staat het bij mij keurig met wit regels en idented. Blijkbaar staan de tabs hier anders ingesteld En dat scheelt zeker geen 60 regels.quote:Op donderdag 27 augustus 2009 12:53 schreef HuHu het volgende:
Ik denk toch dat ik moet zeggen dat de extra regels die Chandler gebruikt vooral bestaan uit dingen die de leesbaarheid ten goede komen: witregels.
Verder plaatst Chandler ook de { op een eigen regel, terwijl Swetsenegger die op de vorige regel aan het einde laat staan. Al met al dus weinig verschil.
Je vergeet dat hij 40 regels database comment heeft bovenaan zijn script.quote:Op donderdag 27 augustus 2009 12:56 schreef Swetsenegger het volgende:
[..]
eh, ik zet alle output in een var en return die.
[..]
Mjah, in zend staat het bij mij keurig met wit regels en idented. Blijkbaar staan de tabs hier anders ingesteld En dat scheelt zeker geen 60 regels.
Beter: je returnt de data die je nodig hebt voor de output. Serieus, als ik zo'n script tegenkom als het jouwe dan begin ik liever opnieuw.quote:Op donderdag 27 augustus 2009 12:56 schreef Swetsenegger het volgende:
[..]
eh, ik zet alle output in een var en return die.
35quote:Op donderdag 27 augustus 2009 12:57 schreef Moozzie het volgende:
[..]
Je vergeet dat hij 40 regels database comment heeft bovenaan zijn script.
eh sorryquote:Anyways shut it
Dan begin je opnieuwquote:Op donderdag 27 augustus 2009 12:58 schreef GlowMouse het volgende:
[..]
Beter: je returnt de data die je nodig hebt voor de output. Serieus, als ik zo'n script tegenkom als het jouwe dan begin ik liever opnieuw.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |