Nou!quote:Op dinsdag 20 februari 2007 08:14 schreef Swetsenegger het volgende:
Tering wat veel PHP topics
Zal waarschijnlijk niet aan ons liggenquote:Op dinsdag 20 februari 2007 08:14 schreef Swetsenegger het volgende:
Tering wat veel PHP topics
1 |
trek hem eerst door een regexp waarbij je alle whitespace karakters vervang door 1 enkele spatie (of een puntkomma of een andere mooie delimiter)quote:Op dinsdag 20 februari 2007 10:53 schreef Geqxon het volgende:
Ik heb weer een leuke
[ code verwijderd ]
Hoe ga ik van deze string alle stukken los eruit halen? Ik heb een explode gepakt met als delimiter een "t", echter kreeg ik als resultaat... dat er niks ge-explode was. Als delimiter een " " pakken (een tab gecopy/paste) zorgde ervoor dat er slechts delen werden ge-explode.
Het formaat:Het begint met een getal dat eindigd op een punt , dan een tab. Daarna twee cijfers, gescheiden door een dash, en als het tweede getal uit 1 digit bestaat zit er nog een spatie tussen De productie-code, is altijd aan één stuk, en vaak van verschillende lengtes. Een datum, die ik overigens ook in $linedate heb zitten, en makkelijker eruit te halen is Een html-code, met een anchor erin. Ook dit is consistent.
quote z'n post en kijk naar zijn "t"quote:Op dinsdag 20 februari 2007 10:53 schreef GI het volgende:
exploden op "t"parser doet raar ik wou zeggen exploden op slasht
Ik heb hard gegoogled, en hard nagedacht, en het enige wat ik vond was een pagina waar ik voor moest betalen. Kun je mij misschien een klein beetje op weg helpen, dan kan ik de rest denk ik zelf welquote:Op dinsdag 20 februari 2007 11:02 schreef Swetsenegger het volgende:
[..]
trek hem eerst door een regexp waarbij je alle whitespace karakters vervang door 1 enkele spatie (of een puntkomma of een andere mooie delimiter)
1 2 3 4 | $lineitems = preg_split ("/s+/", $line); echo "tt<td>". print_r($lineitems) . "</td>n"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ( [0] => [1] => 91. [2] => 5-11 [3] => 5ACX06 [4] => 18 [5] => Feb [6] => 07 [7] => <a [8] => target="_blank" [9] => href="http://www.tv.com/family-guy/the-tan-aquatic-with-steve-zissou/episode/904191/summary.html">The [10] => Tan [11] => Aquatic [12] => with [13] => Steve [14] => Zissou</a> [15] => ) |
1 2 3 4 | $lineitems = preg_split ("/t/", $line); echo "tt<td>". print_r($lineitems) . "</td>n"; ?> |
1 2 3 4 5 | ( [0] => 91. 5-11 5ACX06 18 Feb 07 <a target="_blank" href="http://www.tv.com/family-guy/the-tan-aquatic-with-steve-zissou/episode/904191/summary.html">The Tan Aquatic with Steve Zissou</a> ) |
dan is het inderdaad niet door tabs gescheiden.quote:Op dinsdag 20 februari 2007 11:35 schreef Geqxon het volgende:
Aannemend dat daar een backslash voor de t hoort, krijg ik deze mooie output:
[ code verwijderd ]
Aangezien ik alleen de het "5-11" deel nodig heb, zat ik ook even te kijken naar een regex die kijkt naar wat tussen de whitespace en de - zit ,en wat tussen de - en de whitespace.
1 2 3 4 5 6 | $line = preg_replace('/[<>]/', ' ', $line); # < en > zijn irritant :) $line = preg_replace('/(^s+|s*$)/', '', $line); # Remove left over white space chars.. $line = preg_split('/s+/', $line); print_r($line); ?> |
Regexps zijn leuke dingen, maar een regexp gebruiken voor iets als een simpele trim() is een behoorlijke over-kill.quote:Op dinsdag 20 februari 2007 13:59 schreef slakkie het volgende:
Ik zou het zo gedaan hebben, beetje meer perl georienteerd.
[ code verwijderd ]
Ik kom van perl, wij kennen de trim functie niet. Zie hier.quote:Op dinsdag 20 februari 2007 17:49 schreef SuperRembo het volgende:
[..]
Regexps zijn leuke dingen, maar een regexp gebruiken voor iets als een simpele trim() is een behoorlijke over-kill.
integreer maar naar onze standaarden of we halen rita erbijquote:Op dinsdag 20 februari 2007 20:10 schreef slakkie het volgende:
[..]
Ik kom van perl, wij kennen de trim functie niet. Zie hier.
http://en.wikipedia.org/wiki/Trim_(programming)#Perl
Wij doen het zo
Ik denk dat je een denkfout maak. Leg eens uit waarom je 2 maal hetzelfde script wil includen?quote:Op dinsdag 20 februari 2007 22:07 schreef PekkeMan het volgende:
ah ik zie dat er ook een speciaal topic is voor php problemen
ik had al een topic aangemaakt: php bestand dubbel-includen probleempje
maar ik blijf nog steeds met het probleem zitten.
ik wil op eenzelfde pagina 2 keer hetzelfde script includen, maar dat wil niet, ook niet met include_once. Hij maakt de pagina niet af op de regel waar de 2e include staat.
iemand een oplossing?
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 | // bestand waar de berichten in komen te staan $file = "reactie.txt"; // maximaal aantal berichten wat bewaard wordt $max = 25; // escapefunctie function s($val) { $val = nl2br(htmlspecialchars($val)); return get_magic_quotes_gpc() ? stripslashes($val) : $val; } // kijken of het bestand reactie.txt al bestaat if(file_exists($file)) { // zo ja, includen include ($file); } else { // zo niet, maak dan de array $messages bekend $messages = array(); } // kijken of er wel berichten zijn... if(count($messages) > 0) { echo "<a href="xxxxx/reacties.php' target='_blank'>". count($messages) ." reactie(s)</a>"; } else { echo "<a href='xxxxxx/reacties.php' target='_blank'>Geen reacties!</a>"; exit; } ?> |
Ja, dat komt door jouquote:Op dinsdag 20 februari 2007 08:14 schreef Swetsenegger het volgende:
Tering wat veel PHP topics
Dat lijkt misschien overzichtelijk, maar als je met 50 artikelen aan komt dan is het dat niet meer.quote:Op dinsdag 20 februari 2007 23:34 schreef PekkeMan het volgende:
bij elk artikel wil ik dit (reactie)scriptje plaatsen. Het script laat zien hoeveel reacties er zijn. Deze heb ik dan weer opgeslagen onder verschilledne mappen map01, 02 etc. per artikel01, artikel02, 1 map met reactiescript en database in de vorm van txt bestand. (wel erg omslachtig, maar ik kan geen betere en voor mij overzichtelijke reactiescripts vinden)
overzichtelijk
artikel01.php - map01 (met daarin database, reactiescript, script dat laat zien op artikel01.php hoeveel reacties er zijn(deze include ik))
artikel012php - map02 (met daarin database, reactiescript, script dat laat zien op artikel02.php hoeveel reacties er zijn(deze include ik))
Aan het script kan ik zo niets vreemds zien. Of ik kijk er gewoon overheen, dat kan ook.quote:en de geincludeerde files zijn precies hetzelfde verder. Script hieronder. Ik begin te vermoeden dat t script dit misschien tegenhoudt, maar waarom, geen idee![]()
[ code verwijderd ]
Ja hoor, kijk maar eens op http://nl2.php.net/manual/en/security.magicquotes.disabling.phpquote:Op woensdag 21 februari 2007 15:26 schreef Tijn het volgende:
Ik ben een website aan het maken op een webhost waar magic quotes aanstaat. Behoorlijk irritant, al m'n POST-data enzo heeft nu allemaal rare slashes erin, zonder dat ik daarop zit te wachten.
Ik kan wel constant m'n data door een stripslahes() halen, maar is er misschien een manier om magic quotes gewoon uit te zetten voor mijn website?
Bedanktquote:Op woensdag 21 februari 2007 15:39 schreef Light het volgende:
[..]
Ja hoor, kijk maar eens op http://nl2.php.net/manual/en/security.magicquotes.disabling.php
1 2 3 | preg_replace("#[/*](.*?)[/*]#", "<li>\2</li>", $tekst); ?> |
nee hij wil alles tussenquote:Op woensdag 21 februari 2007 22:12 schreef Geqxon het volgende:
Wat is het resultaat dat je bereiken wilt? Backslash-twee ?
Deze zoektquote:Op woensdag 21 februari 2007 22:03 schreef super-muffin het volgende:
Waarom word dit niet gevonden in mijn preg_replace?
Dat moet \1 zijn.quote:Op woensdag 21 februari 2007 22:12 schreef Geqxon het volgende:
Wat is het resultaat dat je bereiken wilt? Backslash-twee ?
ik heb de functie op php.net wat aangepast. Hie komen prachtige thumbs uitquote:Op woensdag 21 februari 2007 22:17 schreef gieling het volgende:
Hoi, ik verklein met een script een afbeelding d.m.v. o.a. de imagecopyresampled-functie. Alleen is het probleem dat de thumbnail wat vaag wordt t.o.v. het origineel. Komt dit door het verkleinen van de foto of door het (verkeerd gebruik?) van de bovengenoemde functie?
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 | function resize_photo($new_name,$new_width,$new_height,$filename){ // Content type header('Content-type: image/jpeg'); // nieuwe resolutie bepalen list($width_orig, $height_orig) = getimagesize($filename); if(empty($new_height)){ $new_height = round(($new_width / $width_orig) * $height_orig); }elseif(empty($new_width)){ $new_width = round(($new_height / $height_orig) * $width_orig); }elseif ($new_width && ($width_orig < $height_orig)) { $new_width = ($new_height / $height_orig) * $width_orig; }else{ $new_height = ($new_width / $width_orig) * $height_orig; } // Resample $image_p = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); // Output imagejpeg($image_p, $new_name, 80); imagedestroy($image); return array($new_width,$new_height); } ?> |
Verbaast me dat ze vaag worden. Ligt natuurlijk ook aan het origineel. En in de volgende regel is die 80 de compressie he. als je die op 100 zet zal de kwaliteit beter wordenquote:Op woensdag 21 februari 2007 22:38 schreef gieling het volgende:
Mm - tnx! Maar krijg in principe hetzelfde resultaat dus denk dat het door het verkleinen komt! Tnx iig ^O^
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if($_SERVER['REQUEST_METHOD'] == 'GET') { $result0 = "SELECT * FROM link WHERE MATCH(trefwoorden,beschrijving,titel) AGAINST('+$trefwoord*' IN BOOLEAN MODE) ORDER BY rank DESC"; $query0 = mysql_query($result0) or die("Er is iets fout gegaan!"); $resultaten0 = mysql_num_rows($query0); $pages=intval($resultaten0/$count); $result = "SELECT * FROM link WHERE MATCH(trefwoorden,beschrijving,titel) AGAINST('+$trefwoord*' IN BOOLEAN MODE) ORDER BY rank DESC LIMIT $page,$count"; $query = mysql_query($result) or die("Er is iets fout gegaan!"); mysql_close(); ?> |
Het is wel eens eerder aangekaart in deze reeks dat de resample-functie van GD een minder scherp resultaat oplevert dan wat bijvoorbeeld Photoshop doet met z'n bicubic algoritme.quote:Op donderdag 22 februari 2007 09:47 schreef Swetsenegger het volgende:
[..]
Verbaast me dat ze vaag worden.
http://dev.mysql.com/doc/refman/5.0/en/replace.htmlquote:Op donderdag 22 februari 2007 13:49 schreef Geqxon het volgende:
Ik hou het kort: Is het mogelijk binnen 1 query een item binnen mijn MySQL database te verwijderen en te inserten, en is dat volgens de ongeschreven regels 'netjes'?
Ja, dat kan met UPDATEquote:Op donderdag 22 februari 2007 13:49 schreef Geqxon het volgende:
Ik hou het kort: Is het mogelijk binnen 1 query een item binnen mijn MySQL database te verwijderen en te inserten, en is dat volgens de ongeschreven regels 'netjes'?
Dat is een mooie, enige puntje is dat hij het niet altijd moet replacen. Op het moment voert hij eerst een DELETE query uit, waarbij er enkele unieke eigenschappen moeten matchen (ik werk dus helaas niet op ID). Daarna een Insert, met dezelfde unieke eigenschappen, en nog enkele andere gegevens.quote:Op donderdag 22 februari 2007 14:08 schreef GI het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/replace.html
waarom wil je dit in 1 query doen? Voordat het qua performance wat uitmaakt moet je het wel heel veel records updatenquote:Op donderdag 22 februari 2007 14:18 schreef Geqxon het volgende:
[..]
Dat is een mooie, enige puntje is dat hij het niet altijd moet replacen. Op het moment voert hij eerst een DELETE query uit, waarbij er enkele unieke eigenschappen moeten matchen (ik werk dus helaas niet op ID). Daarna een Insert, met dezelfde unieke eigenschappen, en nog enkele andere gegevens.
hoe wordt de XML ingelezen?quote:Op donderdag 22 februari 2007 16:58 schreef Tiemie het volgende:
nu wil ik deze xml opnieuw inladen maar als ik dan document.flash_movie.Play(); doe laad ie dezelfde waarden in, als ik op F5 druk is het wel aangepast.
Schoonheidsperfectiequote:Op donderdag 22 februari 2007 23:32 schreef Xcalibur het volgende:
[..]
waarom wil je dit in 1 query doen? Voordat het qua performance wat uitmaakt moet je het wel heel veel records updaten
Gewoon een query maken die als extra eis meeneemt dat de data niet ouder dan 24 uur mag zijn. Als je de datum in een DATETIME of een Unix Timestamp (unsigned int) opslaat dan moet dat lukken.quote:Op vrijdag 23 februari 2007 00:12 schreef Geqxon het volgende:
Het gaat bij mij om een cache-script. Om het script uit te leggen:Eerst kijken of de gezochte data in de database bestaat, en kijken hoe recent deze data is. Als de data gevonden is, en jonger dan 24 uur is >>> Laden Als de data niet gevonden is, of ouder dan 24 uur >>> Uit een exterene website laden, de delete query gevolgd door de insert query om de vers opgehaalde data in de database te stoppen.
Werkt prima, maar imho wil ik het net ietsjes strakker hebben. Vandaar. Maar ik zie al een optie, namelijk de check om te kijken of de data uberhaupt wel bestaat (mysql_num_rows), gaat goed komen.
dan heb je wel een extra query nodig om de data ouder dan 24 uur op te zoeken en weg te gooien...quote:Op vrijdag 23 februari 2007 08:37 schreef Light het volgende:
Gewoon een query maken die als extra eis meeneemt dat de data niet ouder dan 24 uur mag zijn. Als je de datum in een DATETIME of een Unix Timestamp (unsigned int) opslaat dan moet dat lukken.
Draai die 'opschoonquery' 1 keer per dag ofzo zou ik zeggen. Dat maakt het allemaal een stuk eenvoudiger denk ik.quote:Op vrijdag 23 februari 2007 09:11 schreef Xcalibur het volgende:
[..]
dan heb je wel een extra query nodig om de data ouder dan 24 uur op te zoeken en weg te gooien...
Tenzij je die niet weggooit natuurlijk
1 2 3 | " WHERE Expires > " . time() . " ?> |
quote:Op vrijdag 23 februari 2007 10:08 schreef Geqxon het volgende:
Omdat "time()" de huidige waarde in de vorm van een UNIX timestamp presenteert. Het veld "Expires" is dan ook een doodsimpele integer van 11 tekens lang, in plaats van het imho bloated MySQL date format.
Afhankelijk van hoe je je CMS in elkaar hebt gezet kun je ervoor kiezen om twee opeenvolgende line breaks om te toveren in een nieuwe paragraaf? Dan moet je natuurlijk wel de paragrafen tekst goed bepalen, omdat je daar de <p>...</p> omheen moet zettenquote:Op vrijdag 23 februari 2007 10:56 schreef super-muffin het volgende:
Ik ben bezig met een soort van CMS, maar het lukt me niet om paragrafen netjes te krijgen. Ik kan wel nl2br gebruiken, maar ik heb liever dat er van zelf paragrafen worden gemaakt van de nieuwe lijnen zonder zelf html of ubb in te voeren.
Ieder zijn ding. Ik werk liever gewoon met timestamps als integers, universeel. Pas bij het tonen in de browser zet ik het in DD-MM-YYYY formaat.quote:Op vrijdag 23 februari 2007 11:06 schreef Swetsenegger het volgende:
[..]
Goh er zitten ook - in je database veld... wat bloated. En je kan er ongeveer 1000 keer handiger mee uit de voeten.
Een integer van 11 tekens lang?quote:Op vrijdag 23 februari 2007 10:08 schreef Geqxon het volgende:
Het veld "Expires" is dan ook een doodsimpele integer van 11 tekens lang
Niet eens, MySQL slaat tijd en datum intern ook op aan de hand van timestamps. Op het moment dat je een SELECT doet of de waarden vergelijkt aan de hand van zo'n datum/tijd dan zet MySQL de boel automagisch om naar een bepaalde representatie.quote:Op vrijdag 23 februari 2007 11:06 schreef Swetsenegger het volgende:
[..]
Goh er zitten ook - in je database veld... wat bloated. En je kan er ongeveer 1000 keer handiger mee uit de voeten.
Laat eens wat code zien? Dan weten we ook meteen hoe je je cookies probeert op te slaan. Er is niet zoiets als het activeren van cookies in PHP, aangezien het in feite een HTTP-header is.quote:Op vrijdag 23 februari 2007 19:01 schreef Wiehoe het volgende:
Nu moet ik ineens voor school bezig met PHP een aantal oprdachten maken waaronder de basis van cookies. Wanneer ik een script maak met een cookie er in, en het in xampp laad gebeurd er niets. Weet iemand toevallig of cookies aangezet moeten worden in xampp ofzo?
Ik heb zelf mijn internet explorer al ingesteld dat er een prompt komt wanneer een cookie opgeslagen zou moeten worden. Maar hij prompt ook niet.
1 2 3 4 5 6 7 | $count++; setcookie('count', $count); error_reporting(E_ALL); echo($count); ?> |
Allereerst zul je de superglobal $_COOKIE['count'] moeten gebruiken om de cookie op te vragen. Verder is het slim om een expire time op te geven in setcookie, zoiets als dit:quote:Op vrijdag 23 februari 2007 19:54 schreef Wiehoe het volgende:
[ code verwijderd ]
Dit moet dus oplopen volgens zo'n php boek.
1 2 3 4 5 6 7 | $count = $_COOKIE['count'] + 1; setcookie('count', $count, time() + 3600); error_reporting(E_ALL); echo $_COOKIE['count']; ?> |
Daarom ben ik ook absoluut geen fan van boeken om een taal te leren, zeker niet als de taal zelf in constante ontwikkeling is.quote:Op vrijdag 23 februari 2007 20:02 schreef Wiehoe het volgende:
Ik vind het overigens maar raar dat het dan in zo'n boek helemaal verkeerd staat beschreven.
nog een reden om gewoon datetime te gebruiken.quote:Op vrijdag 23 februari 2007 17:52 schreef JeRa het volgende:
[..]
Niet eens, MySQL slaat tijd en datum intern ook op aan de hand van timestamps. Op het moment dat je een SELECT doet of de waarden vergelijkt aan de hand van zo'n datum/tijd dan zet MySQL de boel automagisch om naar een bepaalde representatie.
Niets méér, wel makkelijker met de datesub functie van mysql en dergelijke.quote:Verder ben ik benieuwd naar wat jij denkt meer te kunnen met een DATETIME / TIMESTAMP veld dan met een eigen timestamp die pas in de frontend voor presentatie wordt omgezet?
Is het niet zo dat met INT(11) ik elke keer 11 tekens aan geheugen reserveer?quote:Op vrijdag 23 februari 2007 17:50 schreef JeRa het volgende:
[..]
Een integer van 11 tekens lang?
Een INT(11) betekent niets anders dan dat je een integer veld hebt die bij een geactiveerde optie ZEROFILL een getal weergeeft dat wordt geprepad met nullen totdat het 11 nummers bevat. Zonder die optie betekent die 11 helemaal niéts.
Daarom is het ook zo dat ik het persoonlijk fijner vind. Zo maakt phpMyAdmin bv. er weer "03 December 2007" van, moet ik het bij query's weer omzetten met MYSQL_DATEFORMAT (oid) enz. enz. Ik moet bekennen dat ik er al lang niet mee gewerkt hebt, dus ik kan niet concreet zijn met mijn voorbeelden.quote:Op vrijdag 23 februari 2007 17:52 schreef JeRa het volgende:
[..]
Niet eens, MySQL slaat tijd en datum intern ook op aan de hand van timestamps. Op het moment dat je een SELECT doet of de waarden vergelijkt aan de hand van zo'n datum/tijd dan zet MySQL de boel automagisch om naar een bepaalde representatie.
Verder ben ik benieuwd naar wat jij denkt meer te kunnen met een DATETIME / TIMESTAMP veld dan met een eigen timestamp die pas in de frontend voor presentatie wordt omgezet?
Nadeel is wel dat MySQL (vaak overbodige) informatie opslaat zoals milliseconden en timezones en dus meer schijfruimte nodig heeft om iets op te slaan wat je waarschijnlijk nooit nodig zult hebben. Als je veel om performance geeft en je ontzettend veel records hebt (miljoenen in mijn geval) wil je de DATETIME toch echt vermijdenquote:Op vrijdag 23 februari 2007 20:53 schreef Swetsenegger het volgende:
[..]
nog een reden om gewoon datetime te gebruiken.
Dat is relatief, het ligt er maar net aan waar je de bewerkingen doet. Ik vind het persoonlijk veel gemakkelijker om alle tijdsberekeningen met unix epoch timestamps in PHP te doen en MySQL de resultaten daarvan te voeren in plaats van date/time strings aan MySQL door te geven. 90% van de dingen die ik zo doe gaan gemakkelijker (en ook duidelijker in de code) door timestamps te gebruiken, en voor die overige 10% gebruik ik timestamp -> datetime conversies in MySQL (dezelfde die MySQL impliciet toch al zou gebruiken als je DATETIME gebruikt)quote:[..]
Niets méér, wel makkelijker met de datesub functie van mysql en dergelijke.
Bij lange na niet, een signed of unsigned integer in MySQL neemt gewoon 4 bytes in beslagquote:Op vrijdag 23 februari 2007 20:56 schreef Geqxon het volgende:
[..]
Is het niet zo dat met INT(11) ik elke keer 11 tekens aan geheugen reserveer?
Ik ben ook iemand van presentatie in de presentatielaag en niet in de opslaglaag, dus ik zou ook voor de timestamps gaan. Een RDBMS zie ik als een handig systeem om snel informatie aan elkaar te koppelen, maar wat ik vervolgens met die informatie doe laat ik toch echt aan de presentatielaag overquote:[..]
Daarom is het ook zo dat ik het persoonlijk fijner vind. Zo maakt phpMyAdmin bv. er weer "03 December 2007" van, moet ik het bij query's weer omzetten met MYSQL_DATEFORMAT (oid) enz. enz. Ik moet bekennen dat ik er al lang niet mee gewerkt hebt, dus ik kan niet concreet zijn met mijn voorbeelden.
Ik heb er in het verleden redelijk wat last van gehad, vandaar dat ik het nu weer gewoon met integers doe, en het pas in de frontend omzet. Zo kan ik er ook makkelijk mee rekenen
Wat mij van Oracle SQL bij staat, is dat als ik een Varchar2(30) in mijn database heb, dat hij dan altijd 30 tekens aan geheugen inneemt, ongeacht wat er in staat. Daarom is het juist zo belangrijk dat je kijkt welke data in je database komt, en hoe groot dat normaliter is. Maar dat is zo te horen dus niet met MySQL integersquote:Op vrijdag 23 februari 2007 21:02 schreef JeRa het volgende:
[..]
Bij lange na niet, een signed of unsigned integer in MySQL neemt gewoon 4 bytes in beslagdie 11 is alléén voor ZEROFILL, that's it.
Daar gaat iets helemaal foutquote:Op vrijdag 23 februari 2007 21:07 schreef Geqxon het volgende:
[..]
Wat mij van Oracle SQL bij staat, is dat als ik een Varchar2(30) in mijn database heb, dat hij dan altijd 30 tekens aan geheugen inneemt, ongeacht wat er in staat. Daarom is het juist zo belangrijk dat je kijkt welke data in je database komt, en hoe groot dat normaliter is. Maar dat is zo te horen dus niet met integers
Lees de TT nog eens JeRa vooral na de blokhakenquote:Op vrijdag 23 februari 2007 21:00 schreef JeRa het volgende:
[..]
Nadeel is wel dat MySQL (vaak overbodige) informatie opslaat zoals milliseconden en timezones en dus meer schijfruimte nodig heeft om iets op te slaan wat je waarschijnlijk nooit nodig zult hebben. Als je veel om performance geeft en je ontzettend veel records hebt (miljoenen in mijn geval) wil je de DATETIME toch echt vermijden
Voordat ik wist dat mysql van die handige datum functies had deed ik ook zo ingewikkeldquote:Dat is relatief, het ligt er maar net aan waar je de bewerkingen doet. Ik vind het persoonlijk veel gemakkelijker om alle tijdsberekeningen met unix epoch timestamps in PHP te doen en MySQL de resultaten daarvan te voeren in plaats van date/time strings aan MySQL door te geven. 90% van de dingen die ik zo doe gaan gemakkelijker (en ook duidelijker in de code) door timestamps te gebruiken, en voor die overige 10% gebruik ik timestamp -> datetime conversies in MySQL (dezelfde die MySQL impliciet toch al zou gebruiken als je DATETIME gebruikt)
Waarom laat je MySQL niet meteen alle HTML genereren?quote:Op vrijdag 23 februari 2007 21:17 schreef Swetsenegger het volgende:
[..]
Lees de TT nog eens JeRa vooral na de blokhaken
[..]
Voordat ik wist dat mysql van die handige datum functies had deed ik ook zo ingewikkeld
kom kom... beetje nuanceren mag wel. De datum functies van mysql zijn gewoon verdomd handig voor wat de gemiddelde hobby-ist er mee doet.quote:Op vrijdag 23 februari 2007 21:20 schreef JeRa het volgende:
[..]
Waarom laat je MySQL niet meteen alle HTML genereren?
De functies die PHP biedt leveren ook een scala aan mogelijkheden, de vraag is waarom je de datum/tijd representatie in de opslaglaag al wilt hebben en niet pas bij de presentatie. Enerzijds valt er wat voor te zeggen voor het type data (je gebruikt een veld met een bepaald type om data met een bepaald type op te slaan) maar anderzijds is het voor veel dummies een stuk gemakkelijker om simpelweg te vergelijken tussen secondes aangezien ontzettend veel elementen in PHP dit ook vereisenquote:Op vrijdag 23 februari 2007 21:23 schreef Swetsenegger het volgende:
[..]
kom kom... beetje nuanceren mag wel. De datum functies van mysql zijn gewoon verdomd handig voor wat de gemiddelde hobby-ist er mee doet.
Ik gebruik het tot op heden alleen om zaken van een dag geleden (of een week of een maand) uit de database te trekken. dan is datesub gewoon verdomd handig. Ik hoef niet eerst in php de tijd te definieren voordat ik iets uit mijn db trek.quote:Op vrijdag 23 februari 2007 21:30 schreef JeRa het volgende:
[..]
De functies die PHP biedt leveren ook een scala aan mogelijkheden, de vraag is waarom je de datum/tijd representatie in de opslaglaag al wilt hebben en niet pas bij de presentatie. Enerzijds valt er wat voor te zeggen voor het type data (je gebruikt een veld met een bepaald type om data met een bepaald type op te slaan) maar anderzijds is het voor veel dummies een stuk gemakkelijker om simpelweg te vergelijken tussen secondes aangezien ontzettend veel elementen in PHP dit ook vereisen
Nee, in plaats daarvan definiëer je 'm in de opslaglaag. Ik zie geen verschil.quote:Op vrijdag 23 februari 2007 21:35 schreef Swetsenegger het volgende:
[..]
Ik gebruik het tot op heden alleen om zaken van een dag geleden (of een week of een maand) uit de database te trekken. dan is datesub gewoon verdomd handig. Ik hoef niet eerst in php de tijd te definieren voordat ik iets uit mijn db trek.
Het bespaart me moeite want met een timestamp moet ik nadenken enquote:Op vrijdag 23 februari 2007 21:46 schreef JeRa het volgende:
[..]
Nee, in plaats daarvan definiëer je 'm in de opslaglaag. Ik zie geen verschil.
Niet... dat gekut met tijd in php is gewoon ranzig.quote:Op vrijdag 23 februari 2007 21:57 schreef Geqxon het volgende:
Nu we toch over timestamps aan het miepen zijn
[ code verwijderd ]
Het resultaat? De timestamp van vandaag, exact op 00:00:00. Ik vind het enorm ranzige code, en vroeg mij af hoe ik dat netter ga krijgen?
strtotime('00:00') ofzo?quote:Op vrijdag 23 februari 2007 21:57 schreef Geqxon het volgende:
Nu we toch over timestamps aan het miepen zijn
[ code verwijderd ]
Het resultaat? De timestamp van vandaag, exact op 00:00:00. Ik vind het enorm ranzige code, en vroeg mij af hoe ik dat netter ga krijgen?
Gelukkig hebben we ook negatieve timestampsquote:Op vrijdag 23 februari 2007 21:59 schreef Swetsenegger het volgende:
[..]
Het bespaart me moeite want met een timestamp moet ik nadenken en
WHERE thedate<=DATE_SUB(NOW(), INTERVAL 1 DAY)
is gewoon easy en gemakkelijk en helder leesbaar enzo. Dat snap ik over een jaar nogAl dat gereken met microsecondes heb ik als voormalig uurwerkmaker een pleurishekel.
Ik bedoel, het hele idee van microtime is om te huilen natuurlijk. Het aantal microseconden verstreken sinds 1 januari 1970? Welke bosmongool heeft dat verzonnen? Hou dan in godesnaam gewoon de algemeen geaccepteerde epoch aan van 01-01-0000.
Nee, javascript is daar lekker inquote:Op vrijdag 23 februari 2007 22:00 schreef Swetsenegger het volgende:
[..]
Niet... dat gekut met tijd in php is gewoon ranzig.
Ehm, waarom begin je opeens over microtime? time() is voldoende hoorquote:Op vrijdag 23 februari 2007 21:59 schreef Swetsenegger het volgende:
[..]
Het bespaart me moeite want met een timestamp moet ik nadenken en
WHERE thedate<=DATE_SUB(NOW(), INTERVAL 1 DAY)
is gewoon easy en gemakkelijk en helder leesbaar enzo. Dat snap ik over een jaar nogAl dat gereken met microsecondes heb ik als voormalig uurwerkmaker een pleurishekel.
Ik bedoel, het hele idee van microtime is om te huilen natuurlijk. Het aantal microseconden verstreken sinds 1 januari 1970? Welke bosmongool heeft dat verzonnen? Hou dan in godesnaam gewoon de algemeen geaccepteerde epoch aan van 01-01-0000.
Ik ruik een tweede milenium bug... en dat is waarom mijn opa altijd zei: DD-MM-YYYY !quote:Note: If the number of the year is specified in a two digit format, the values between 0-69 are mapped to 2000-2069 and 70-100 to 1970-2000.
Nog steeds gezeikquote:Op vrijdag 23 februari 2007 22:13 schreef JeRa het volgende:
[..]
Ehm, waarom begin je opeens over microtime? time() is voldoende hooren het refereert natuurlijk naar de standaard Unix times, die vooral op unix-like systemen wordt gebruikt.
Ontzettend handig als je relatief wilt werken, bijvoorbeeld wilt weten hoeveel tijd er tussen twee data zit. Als je dat wilt doen met DATETIME moet je eerst allerlei vage conversiefuncties gaan gebruikenquote:
SELECT unix_timestamp(date1) -quote:Op vrijdag 23 februari 2007 22:18 schreef JeRa het volgende:
[..]
Ontzettend handig als je relatief wilt werken, bijvoorbeeld wilt weten hoeveel tijd er tussen twee data zit. Als je dat wilt doen met DATETIME moet je eerst allerlei vage conversiefuncties gaan gebruiken
1 2 3 | str_replace("<%$tag%>" , $data , $this->output); } |
1 |
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 | $MySQL_Landen_Select = "SELECT * FROM CMS_Countries ORDER BY Country ASC"; $MySQL_Landen_Query = mysql_query ( $MySQL_Landen_Select ) or die ( $error->MySQL ( __FILE__, $MySQL_Landen_Select, __LINE__ ) ); echo "<table width="100%">"; echo '<tr><td>-</td>'; while($obj = mysql_fetch_object($MySQL_Landen_Query)){ echo '<td>'; echo $obj->Country; echo'</td>'; } echo'<tr>'; echo'<td>LaagsteIQ</td>'; while($obj = mysql_fetch_object($MySQL_Landen_Query)){ echo'<td>'; echo $obj->IQLaag; echo'</td>'; } echo'</tr>'; echo'<tr>'; echo'<td>HoogsteIQ</td>'; while($obj = mysql_fetch_object($MySQL_Landen_Query)){ echo'<td>'; echo $obj->IQHoog; echo'</td>'; } echo'</tr>'; echo "</table>"; ?> |
Staat nu in script, gewoon 1 tabel met 3 rijenquote:Op zaterdag 24 februari 2007 14:19 schreef Swetsenegger het volgende:
hoe ziet je database model er eigenlijk uit? heb je 1 tabel of 2 tabellen voor deze gegevens?
moet met tabel, ivm kopieeren plakken naar andere progsels enzo, maar waarom wordt die query geleegd na 1e object?quote:Op zaterdag 24 februari 2007 14:34 schreef Swetsenegger het volgende:
dan zou ik gewoon in een cel divjes onder elkaar gooien en zo voor elke kolom een cel.
Die while-loop zorgt ervoor dat je de resultset helemaal leegtrektquote:Op zaterdag 24 februari 2007 14:37 schreef wobbel het volgende:
[..]
moet met tabel, ivm kopieeren plakken naar andere progsels enzo, maar waarom wordt die query geleegd na 1e object?
1 2 3 | $POSTCONTENT = "<div align='center'><a href='{$URL}' target='_blank'><img src='{$THUMB1}' border='0'></a> <a href='{$URL}' target='_blank'><img src='{$THUMB2}' border='0'></a></div>{$POST_DESCR}"; ?> |
Was net bezig de quotes aan te passen ja... nu werkt het als een speerquote:Op zondag 25 februari 2007 15:11 schreef ralfie het volgende:
ziet ernaar uit dat je je quotjes niet geescaped hebt
probeer je tekst eerst eens door mysql_real_escape_string() te halen
1 2 3 | SELECT MAX(ID)+1 AS ID FROM wp_posts ?> |
ik heb met die fetch_row geklooitquote:Op zondag 25 februari 2007 17:37 schreef SuperRembo het volgende:
Wat heb je dan geprobeerd? Op php.net staat vrij duidelijk uitgelegd hoe je mysql_fetch_assoc gebruikt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ID = "SELECT MAX(ID)+1 AS ID FROM wp_posts"; $GUID = "http://localhost/{$POSTJAAR}/$POSTMAAND/{$POSTDAG}/{$POSTNAME}/"; $BLOGPOST = mysql_fetch_assoc($result01); /* Result Library */ $result01 = mysql_query($ID) or die (result01); $query_post2cat = "INSERT INTO wp_post2cat (post_id, category_id) VALUES ('{$BLOGPOST}', '{$CATEGORIE}')"; $result03 = mysql_query($query_post2cat) or die (result03); $query01 = "INSERT INTO wp_posts (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_category, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count) VALUES ('', '1', '{$POSTIME}', '{$POSTIME}', '{$POSTCONTENT}', '{$POSTITLE}', '{$CATEGORIE}', '', 'future', 'open', 'open', '', LOWER('{$POSTNAME}'), '', '', NOW(), DATE_SUB(NOW(), INTERVAL 1 HOUR), '', '0', LOWER('{$GUID}'), '0', 'post', '', '0')"; $result02 = mysql_query($query01) or die (result02); ?> |
1 |
je kunt niet eerst de gegevens uit een query uitlezen en daarna je query pas makenquote:Op zondag 25 februari 2007 19:06 schreef JortK het volgende:
Ik kom er toch niet helemaal uit
Ik heb deze source (een deel)
[ code verwijderd ]
Ik krijg deze foutmelding:
[ code verwijderd ]
Zou iemand een blik willen werken waarom ik deze melding krijg?
Het gaat er dus om dat ik met de variabele BLOGPOST query_post2cat wil vullen
(bijna?) alle functies in php die bestanden kunnen inlezen kunnen ook bestanden op andere servers (webpagina's dus ook) inlezen. Kijk dus eens naar functies als file(), file_get_contents(), fopen(). Als je specifieke informatie moet vinden in die tekst, moet je waarschijnlijk wel met regexp's gaan werken: zie http://nl3.php.net/manual/nl/ref.pcre.phpquote:Op zondag 25 februari 2007 19:24 schreef bleiblei het volgende:
Ik ben momenteel aan het zoeken naar een PHP functie maar krijg em niet gevonden.
Ik wil namelijk tekst van een website inlezen.
Beetje a la RSS feed maar dan zonder dat die tekst via RSS aangeboden wordt.
Het inlezen van tekst die op een andere website staat.
Kan dat in PHP?
Hij werkt inmiddels ook weer... ik heb gedurende de dag zoveel zitten kloten dat de hele volgorde naar ze malle moer isquote:Op zondag 25 februari 2007 19:32 schreef ralfie het volgende:
[..]
je kunt niet eerst de gegevens uit een query uitlezen en daarna je query pas maken![]()
kijk nog eens naar de voorbeelden op bijv php.net en met name de volgorde van mysql_connect, mysql_query en mysql_fetch_assoc. weet je uberhaupt wel wat deze functies doen?
[..]
(bijna?) alle functies in php die bestanden kunnen inlezen kunnen ook bestanden op andere servers (webpagina's dus ook) inlezen. Kijk dus eens naar functies als file(), file_get_contents(), fopen(). Als je specifieke informatie moet vinden in die tekst, moet je waarschijnlijk wel met regexp's gaan werken: zie http://nl3.php.net/manual/nl/ref.pcre.php
Je kan hem includen of je kan misschien met file_get_contents of file wat proberen.quote:Op zondag 25 februari 2007 19:24 schreef bleiblei het volgende:
Ik ben momenteel aan het zoeken naar een PHP functie maar krijg em niet gevonden.
Ik wil namelijk tekst van een website inlezen.
Beetje a la RSS feed maar dan zonder dat die tekst via RSS aangeboden wordt.
Het inlezen van tekst die op een andere website staat.
Kan dat in PHP?
Half off topic: die uppercase variable namen zijn niet gangbaar. De conventie is dat variable namen lowercase zijn (en constants uppercase).quote:
Waarom wil je eigenlijk MAX(id)+1 ophalen? Je kunt beter het ID veld in de database op auto-increment zetten. Dan zorgt mysql er zelf voor dat het volgende beschikbare nummer wordt gebruikt, en het voorkomt meteen dat nummers dubbel worden gebruikt.quote:Op zondag 25 februari 2007 16:49 schreef JortK het volgende:
Volgend vraagje, want hier stoei ik al 2 uur mee lol
Ik heb een variabele welke een nummer ophaalt:
[ code verwijderd ]
Nu wil ik deze waarde die ik terugkrijg, inserten in een tabel, hoe krijg ik dit voor elkaar, want ik kom er nu niet uit met die fetch functies
Is ook al geregeld... Wordpress doet dat zelf alquote:Op maandag 26 februari 2007 08:01 schreef Light het volgende:
[..]
Waarom wil je eigenlijk MAX(id)+1 ophalen? Je kunt beter het ID veld in de database op auto-increment zetten. Dan zorgt mysql er zelf voor dat het volgende beschikbare nummer wordt gebruikt, en het voorkomt meteen dat nummers dubbel worden gebruikt.
Heb interesse, zie je PM inbox.quote:Op maandag 26 februari 2007 15:25 schreef Swetsenegger het volgende:
Is er nog iemand opzoek naar een technisch webmaster functie in de regio Rdam?
Mijn CMS is nog in de beginfase. Als ik zoek op nl2p in Google krijg ik wel een aantal goede suggesties.quote:Op vrijdag 23 februari 2007 17:24 schreef JeRa het volgende:
[..]
Afhankelijk van hoe je je CMS in elkaar hebt gezet kun je ervoor kiezen om twee opeenvolgende line breaks om te toveren in een nieuwe paragraaf? Dan moet je natuurlijk wel de paragrafen tekst goed bepalen, omdat je daar de <p>...</p> omheen moet zetten
1 2 3 4 5 6 7 | COUNT( parent.name ) AS depth, c.link FROM nested_menu AS node, nested_menu AS parent LEFT JOIN connection c ON (node.menu_id=c.menu_id) WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.menu_id ORDER BY node.lft"; |
1 2 3 4 5 6 7 8 | COUNT( parent.name ) AS depth, c.link FROM nested_menu AS node LEFT JOIN `connection` c ON (node.menu_id=c.menu_id) , nested_menu AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.menu_id ORDER BY node.lft"; |
Hij gaat over op PHP5 en hij wijzigt een MySQL query..quote:Op maandag 26 februari 2007 17:58 schreef Swetsenegger het volgende:
Mijn hoster is vandaag over gegaan naar php5 en omdat hij naar eigen zeggen een probleem in een site aantrof heeft hij een wijziging in een query doorgevoerd:
Oud
[ code verwijderd ]
Nieuw
[ code verwijderd ]
Ik begrijp het verschil eigenlijk niet. Dit is toch gewoon hetzelfde
SELECT * FROM Pizza, Macaroni, Spagettie WHERE groente = Aquote:Op maandag 26 februari 2007 18:14 schreef Orealo het volgende:
Hoi,
Ik wil graag 1 command gebruiken om uit verschillende databases 1 nummer te halen, voorbeeld.
we hebben 3 databases :
Pizza
Macaroni
Spaghetti
Ze hebben allemaal tabel groente.
Wat ik dus wil is het volgende :
Select * from Pizza where groente = wortel
Select * from Macaroni where groente = wortel
Select * from Spaghetti where groente = wortel
echter wil ik niet 3x wortel intikken.
Zoiets dus :
A = wortel
Select * from Pizza where groente = A
Select * from Macaroni where groente = A
Select * from Spaghetti where groente = A
Zodat ik wortel aan kan passen aan bijvoorbeeld geraspte wortel, zonder het opnieuw 3x in te tikken.
Er is een verschil tussen databases en tabellen hè. In een database zitten tabellen.quote:Op maandag 26 februari 2007 18:14 schreef Orealo het volgende:
Hoi,
Ik wil graag 1 command gebruiken om uit verschillende databases 1 nummer te halen, voorbeeld.
we hebben 3 databases :
Pizza
Macaroni
Spaghetti
Ze hebben allemaal tabel groente.
Wat ik dus wil is het volgende :
Select * from Pizza where groente = wortel
Select * from Macaroni where groente = wortel
Select * from Spaghetti where groente = wortel
echter wil ik niet 3x wortel intikken.
Zoiets dus :
A = wortel
Select * from Pizza where groente = A
Select * from Macaroni where groente = A
Select * from Spaghetti where groente = A
Zodat ik wortel aan kan passen aan bijvoorbeeld geraspte wortel, zonder het opnieuw 3x in te tikken.
1 2 3 4 5 6 7 | $a = "wortel"; $query_1 = "SELECT * FROM pizza WHERE groente = '{$a}';"; $query_2 = "SELECT * FROM macaroni WHERE groente = '{$a}';"; $query_3 = "SELECT * FROM spaghetti WHERE groente = '{$a}';"; ?> |
1 2 3 4 5 6 7 8 9 | $a = "wortel"; $query = "SELECT * FROM pizza, macaroni, spaghetti WHERE pizza.groente = '{$a}' OR macaroni.groente = '{$a}' OR spaghetti.groente = '{$a}';"; ?> |
Moet je niet expliciet aangeven uit welke tabel je de 'groente' wilt hebben, omdat deze niet ondubbelzinnig is?quote:Op maandag 26 februari 2007 19:03 schreef super-muffin het volgende:
[..]
SELECT * FROM Pizza, Macaroni, Spagettie WHERE groente = A
1 2 3 | $_SESSION['count'] = 0; ?> |
1 2 3 | $query = "SELECT mededeling FROM `mededelingen` LIMIT $_SESSION['count'] , 0"; ?> |
Ook dat, hij is ook over gegaan naar mysql 5quote:Op maandag 26 februari 2007 18:58 schreef Neverstop het volgende:
[..]
Hij gaat over op PHP5 en hij wijzigt een MySQL query..
Neem aan dat de queries helemaal niks te maken hebben met de versie van PHP.
quote:Op maandag 26 februari 2007 19:53 schreef saban het volgende:
Ik kom ergens niet helemaal uit, al een heel lang tijd geen php gedaan :@
Stel je maakt een session aan door middel van:
[ code verwijderd ]
Daarna wil je de session verwerken in je query, maar hoe doe je dat? Onderstaande is niet correct:
[ code verwijderd ]
Ook niet als ik de [ en ] backslash.
Hoe moet het dus precies?
1 |
Bedankt, even verder php'en.quote:Op maandag 26 februari 2007 20:18 schreef Swetsenegger het volgende:
[..]
[ code verwijderd ]
overigens zal limit 0,0 weinig terug geven gok ik
Allereerst: een hoster die queries wijzigtquote:Op maandag 26 februari 2007 17:58 schreef Swetsenegger het volgende:
Mijn hoster is vandaag over gegaan naar php5 en omdat hij naar eigen zeggen een probleem in een site aantrof heeft hij een wijziging in een query doorgevoerd:
Oud
[ code verwijderd ]
Nieuw
[ code verwijderd ]
Ik begrijp het verschil eigenlijk niet. Dit is toch gewoon hetzelfde
vage actiequote:Op maandag 26 februari 2007 20:17 schreef Swetsenegger het volgende:
Ook dat, hij is ook over gegaan naar mysql 5
dus php4 -> php5 en mysql4 -> mysql5
Maar daarnaast.... wat is het verschil tussen de queries
Nee en ondanks dat het meer een vriend dan zakenrelatie is ben ik er op zijn zachts niet blij mee, want ik ben de hele avond al kleine dingentjes aan het fixen in een stuk of 5 verschillende sites.quote:Op maandag 26 februari 2007 21:24 schreef JeRa het volgende:
[..]
Allereerst: een hoster die queries wijzigthad ie je wel vantevoren gemeld dat ze over zouden stappen op PHP5 en MySQL5?
Dat dacht ik ook en ben dus net zo benieuwdquote:Ten tweede: beide queries zouden moeten werken in beide versies van MySQL, dus ik ben erg benieuwd naar het 'probleem'.
Min of meer, het is onderdeel van een hierarchisch menu die zonder probleem ook op een andere website draait... bij dezelfde hoster.quote:Ten derde: er is voor zover ik kan zien geen verschil tussen de queries. Heb je al geprobeerd de eerste i.p.v. de laatste query uit te voeren?
Dat niet alleen, ik zou het persoonlijk niet echt kunnen waarderen dat iemand zonder vraag of waarschuwing in mijn bestanden gaat zitten neuzen.quote:Op maandag 26 februari 2007 21:55 schreef Swetsenegger het volgende:
[..]
Nee en ondanks dat het meer een vriend dan zakenrelatie is ben ik er op zijn zachts niet blij mee, want ik ben de hele avond al kleine dingentjes aan het fixen in een stuk of 5 verschillende sites.
Ik heb zo het vermoeden dat er helemaal geen probleem met die query is. Hij heeft de tabel 'connection' in backticks gezet, maar 'connection' is helemaal geen reserved word in MySQL.quote:Min of meer, het is onderdeel van een hierarchisch menu die zonder probleem ook op een andere website draait... bij dezelfde hoster.
Dat begreep ik dus ook niet.quote:Op maandag 26 februari 2007 22:09 schreef JeRa het volgende:
[..]
Dat niet alleen, ik zou het persoonlijk niet echt kunnen waarderen dat iemand zonder vraag of waarschuwing in mijn bestanden gaat zitten neuzen.
[..]
Ik heb zo het vermoeden dat er helemaal geen probleem met die query is. Hij heeft de tabel 'connection' in backticks gezet, maar 'connection' is helemaal geen reserved word in MySQL.
misschien moet je eens op de hoogste error reporting (E_ALL) gaan ontwikkelen?quote:Op maandag 26 februari 2007 22:11 schreef Swetsenegger het volgende:
Ja ik weet het het is in eerste instantie slordig programmeren van mij wanneer ik met een var aan de slag ga die alleen in bepaalde situaties bestaat (en nu dus in de andere situaties een smerige warning oplevert)
Dat doe ik alleen als het niet werktquote:Op maandag 26 februari 2007 22:21 schreef Xcalibur het volgende:
[..]
misschien moet je eens op de hoogste error reporting (E_ALL) gaan ontwikkelen?
In eerste instantie schrik je je een ongeluk, maar daarna ben je wel van het gezeik af
quote:Op maandag 26 februari 2007 22:33 schreef Swetsenegger het volgende:
Ik vind het ook wat gezeur hoor..., warnings. Als een var niet bestaat, bestaat hij niet
1 2 3 4 5 6 7 | COUNT( parent.name ) AS depth, c.link FROM nested_menu AS node, nested_menu AS parent LEFT JOIN connection c ON (node.menu_id=c.menu_id) WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.menu_id ORDER BY node.lft"; |
plaats ik vervolgens backticksquote:You have an error [...] near 'connection c on (node.menu_id=c.menu_id)
Dus blijkbaar is connection toch een reserved name. Maar fout 2 snap ik geen ruk van.quote:unknown column 'node.menu_id' in 'on clause'
1 2 3 4 5 6 7 8 | COUNT( parent.name ) AS depth, c.link FROM nested_menu AS node LEFT JOIN `connection` c ON (node.menu_id=c.menu_id) , nested_menu AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.menu_id ORDER BY node.lft"; |
De regel met FROM is aangepast. Zou geen verschil mogen uitmaken volgens mij.quote:Op maandag 26 februari 2007 20:17 schreef Swetsenegger het volgende:
[..]
Ook dat, hij is ook over gegaan naar mysql 5
dus php4 -> php5 en mysql4 -> mysql5
Maar daarnaast.... wat is het verschil tussen de queries
Inderdaad, niet aan gedacht, en kreeg mijn post niet gewijzigd.quote:Op maandag 26 februari 2007 19:05 schreef HuHu het volgende:
[..]
Moet je niet expliciet aangeven uit welke tabel je de 'groente' wilt hebben, omdat deze niet ondubbelzinnig is?
Ja precies, de nested menu AS parent is van de FROM regel achter de LEFT JOIN geplakt.quote:Op maandag 26 februari 2007 23:10 schreef Light het volgende:
[..]
De regel met FROM is aangepast. Zou geen verschil mogen uitmaken volgens mij.
Wat krijg je als je de oorspronkelijke query uitvoert, met backticks om 'connection' heen?quote:Op dinsdag 27 februari 2007 07:52 schreef Swetsenegger het volgende:
[..]
Ja precies, de nested menu AS parent is van de FROM regel achter de LEFT JOIN geplakt.
En dan krijg ik dus die 2e fout niet.... wazig.
Fout 2:quote:Op dinsdag 27 februari 2007 08:10 schreef JeRa het volgende:
[..]
Wat krijg je als je de oorspronkelijke query uitvoert, met backticks om 'connection' heen?
quote:plaats ik vervolgens backticks
1 unknown column 'node.menu_id' in 'on clause'
Bron: http://dev.mysql.com/doc/refman/5.0/en/join.htmlquote:INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).
However, the precedence of the comma operator is less than than of INNER JOIN, CROSS JOIN, LEFT JOIN, and so on. If you mix comma joins with the other join types when there is a join condition, an error of the form Unknown column 'col_name' in 'on clause' may occur. Information about dealing with this problem is given later in this section.
Als ik het goed begrijp een mysql equivalent van een Meneer Van Dle Wacht Op Antwoord fout?quote:Op dinsdag 27 februari 2007 08:33 schreef JeRa het volgende:
[..]
Bron: http://dev.mysql.com/doc/refman/5.0/en/join.html
Juist, en daardoor bestaat de kolomnaam in de conditie dus nog nietquote:Op dinsdag 27 februari 2007 08:38 schreef Swetsenegger het volgende:
[..]
Dus een komma join mixen met een gewone Join zorgt ervoor dat de gewone 'voorgaat' op de komma?
je gaat weer wat anders doen of je zoekt collega's ?quote:Op dinsdag 27 februari 2007 09:23 schreef Swetsenegger het volgende:
Duidelijk.
Verder niemand hier opzoek naar een technisch webmaster functie in de regio Rdam?
Ik ga weer wat anders doenquote:Op dinsdag 27 februari 2007 09:32 schreef Joene het volgende:
[..]
je gaat weer wat anders doen of je zoekt collega's ?
Je hebt het switch virus lekker te pakken momenteel, wat ga je doen ?quote:
1 2 3 4 5 | bla bladediebla eind: |
daarvoor moet je de s modifier gebruiken, bijquote:Op dinsdag 27 februari 2007 09:55 schreef Chandler het volgende:
hoe kan ik met regex meerdere regels uitlezen?
bv
[ code verwijderd ]
nu wil ik alles uitlezen tussen start: en eind:
? (w.*?) werkt iig niet...
terug naar mijn oude baasquote:Op dinsdag 27 februari 2007 09:46 schreef Joene het volgende:
[..]
Je hebt het switch virus lekker te pakken momenteel, wat ga je doen ?
Menquote:
Mooi dan toch , nou suc6 dan maar weerquote:
\n?quote:Op dinsdag 27 februari 2007 10:31 schreef Chandler het volgende:
@Ralfie: je hebt idd gelijk die w was helemaal verkeerd
maar nu het volgende, hoe kan ik in een regexje alles opvragen TOT een lege nieuwe regel?
nee, dat werkte nietquote:Op dinsdag 27 februari 2007 10:48 schreef Swetsenegger het volgende:
[..]
\n?
godverdomme, tering slash bug
slash slash n?
quote:Op dinsdag 27 februari 2007 10:51 schreef ralfie het volgende:
/start:(.*?)^\s+$/ms
de m modifier zorgt ervoor dat ^en $ niet het begin en eind van de hele string, maar elke regel apart matchen.quote:Op dinsdag 27 februari 2007 11:00 schreef Chandler het volgende:
[..]
nee, dat werkte niettenminste niet in de pogingen die ik had ondernomen.
[..]veel korter dan dat ik in gedachten had...
hoe moet ik deze lezen? kun je eens heel kort een omschrijving geven van het geen dat hier staat.
(.*?) snap ik = alles wat er maar te pakken valt....
\ \ s+$ moet dan tot een nieuwline zijn?
Nee, maar we zoeken nog wel een paar developers. Zie sig.quote:Op dinsdag 27 februari 2007 09:23 schreef Swetsenegger het volgende:
Duidelijk.
Verder niemand hier opzoek naar een technisch webmaster functie in de regio Rdam?
De link naar introductie via je pagina doet het nietquote:Op dinsdag 27 februari 2007 11:50 schreef SuperRembo het volgende:
[..]
Nee, maar we zoeken nog wel een paar developers. Zie sig.
[/spam]
Je 'rechtermuisknopafvangding' is een beetje overactief. Ik kan ook niet de middle-mouse-button gebruiken om een pagina in een andere tab te openen.quote:Op dinsdag 27 februari 2007 11:50 schreef SuperRembo het volgende:
[..]
Nee, maar we zoeken nog wel een paar developers. Zie sig.
[/spam]
Inderdaad, SuperRembo, zorg er eens voor dat die alert van de site gaatquote:Op dinsdag 27 februari 2007 12:21 schreef HuHu het volgende:
[..]
Je 'rechtermuisknopafvangding' is een beetje overactief. Ik kan ook niet de middle-mouse-button gebruiken om een pagina in een andere tab te openen.
Daarnaast ben ik meer dan benieuwd waar al die teksten en foto's dan gedeponeerd zijnquote:Op dinsdag 27 februari 2007 12:21 schreef HuHu het volgende:
[..]
Je 'rechtermuisknopafvangding' is een beetje overactief. Ik kan ook niet de middle-mouse-button gebruiken om een pagina in een andere tab te openen.
Page -> View Sourcequote:Op dinsdag 27 februari 2007 12:49 schreef CraZaay het volgende:
[..]
Daarnaast ben ik meer dan benieuwd waar al die teksten en foto's dan gedeponeerd zijn
Wat mij betreft zou ie er ook direct weg mogen. Gelukkig werkt de persoon die de website bouwt niet aan de code van het product. Dat soort punten hebben op dit moment lage prioriteit, als we meer devvers zouden hebben dan was het zo gefixt. De collega's die troep produceerden zijn inmiddels ex-collega's waar we dus vervanging voor zoekenquote:Op dinsdag 27 februari 2007 12:29 schreef JeRa het volgende:
[..]
Inderdaad, SuperRembo, zorg er eens voor dat die alert van de site gaatals ik naar een baan zocht was dat al een punt waarop ik zou afhaken. Een javascript right mouse click alert is tot daaraan toe, eentje die niet voor 100% werkt duidt op een halve developer ergens en ik zou niet willen werken bij een bedrijf waar je de helft van de tijd bezig bent de troep van je collega's op te ruimen.
Copyrights zijn allemaal netjes voor elkaar.quote:Op dinsdag 27 februari 2007 12:49 schreef CraZaay het volgende:
Daarnaast ben ik meer dan benieuwd waar al die teksten en foto's dan gedeponeerd zijn
Zeldzaam off topic, maar goedquote:Op dinsdag 27 februari 2007 15:24 schreef SuperRembo het volgende:
Copyrights zijn allemaal netjes voor elkaar.
Thanks, kan het ook in SQL zelf ?quote:Op maandag 26 februari 2007 19:04 schreef HuHu het volgende:
[..]
Er is een verschil tussen databases en tabellen hè. In een database zitten tabellen.
[ code verwijderd ]
Of:
[ code verwijderd ]
Gokje:quote:Op dinsdag 27 februari 2007 16:21 schreef Orealo het volgende:
[..]
Thanks, kan het ook in SQL zelf ?
Kzit hier direct in een sql database, en php werkt niet..
1 2 3 4 5 | FROM pizza, macaroni, spaghetti WHERE pizza.groente = 'wortel' OR macaroni.groente = 'wortel' OR spaghetti.groente = 'wortel' |
Dan krijg je al snel heeeeel veel resultaten. Met een union krijg je niet te veelquote:
1 2 3 4 5 | UNION ALL SELECT * FROM macaroni WHERE macaroni.groente = 'wortel' UNION ALL SELECT * FROM spaghetti WHERE spaghetti.groente = 'wortel' |
Tja, bedrijfsspul.quote:Op dinsdag 27 februari 2007 16:47 schreef SuperRembo het volgende:
[..]
Dan krijg je al snel heeeeel veel resultaten. Met een union krijg je niet te veel
[ code verwijderd ]
Maar ik denk dat je datamodel niet handig is. Je zou beter 1 tabel 'gerechten' kunnen hebben waar alles in staat.
Of een tabel gerechten, een tabel ingredienten en een koppeltabel.quote:Op dinsdag 27 februari 2007 16:47 schreef SuperRembo het volgende:
[..]
Dan krijg je al snel heeeeel veel resultaten. Met een union krijg je niet te veel
[ code verwijderd ]
Maar ik denk dat je datamodel niet handig is. Je zou beter 1 tabel 'gerechten' kunnen hebben waar alles in staat.
Hoe corrigeer ik deze fout, maar vooral hoe voorkom ik deze melding?quote:Fatal error: Cannot redeclare class dbase in C:\htdocsclasscls_dbase.php on line 2
Mijn gok zou zijn: de class maar één keer declarerenquote:Op dinsdag 27 februari 2007 22:38 schreef ExCibular het volgende:
Hoe corrigeer ik deze fout, maar vooral hoe voorkom ik deze melding?
1 2 3 4 5 | require 'class/cls_template.php'; $page = new templateparser($main,$user_var); $page->parse_template(); $page->print_template(); |
1 2 3 4 5 6 7 8 | function menu_ver($current,$active) { require 'class/cls_dbase.php'; $menu = new dbase(bluecons); $menuitems = $menu->db_fetch_multid("SELECT titel, url FROM titels WHERE menu='$current' ORDER BY TID"); //doe iets return $menu_ver; }} |
require_once verhelpt het probleemquote:Op dinsdag 27 februari 2007 23:49 schreef CraZaay het volgende:
Twee keer "'require 'class/cls_dbase.php'" dus
Probeer het eens met require_once() zou ik zeggen.
Zolang jouw includes alleen definities van functies en classes bevatten wél, bevatten ze ook inline code dan moet je eerst nagaan of het niet uitmaakt dat de code maar één keer wordt uitgevoerdquote:Op woensdag 28 februari 2007 07:18 schreef ExCibular het volgende:
[..]
Kan je zonder negatieve consequenties overal require vervangen voor require_once?
waar haalt hij dat dik gedrukte gedeelte vandaan?quote:Server versie: 4.0.26-nt
Protocol version: 10
Server: 10.0.0.180 via TCP/IP
Gebruiker: milo@fia181-83.dsl.hccnet.nl
gethostbyaddr(). Oftewel, een simpele reverse DNS lookup.quote:Op woensdag 28 februari 2007 10:30 schreef mschol het volgende:
klein vraagje m.b.t. phpmyadmin 2.10 :
[..]
waar haalt hij dat dik gedrukte gedeelte vandaan?
1 2 3 | echo gethostbyaddr('62.251.83.181'); ?> |
Wat mag er niet gebruikt worden en waarom is het niet netjes?quote:dit vraag ik omdat dat inmiddels niet meer gebruikt mag worden... (werkt voor de rest prima hoor maar dit is toch niet echt netjes)
aha oke...quote:Op woensdag 28 februari 2007 10:34 schreef JeRa het volgende:
[..]
gethostbyaddr(). Oftewel, een simpele reverse DNS lookup.
Doe maar eens dit
[ code verwijderd ]
[..]
Wat mag er niet gebruikt worden en waarom is het niet netjes?
Dat daar iets anders wordt gevonden dan bij jou thuis komt waarschijnlijk doordat je misschien laatst bent overgestapt? Het duurt altijd even voordat DNS-servers helemaal up-to-date zijnquote:Op woensdag 28 februari 2007 10:46 schreef mschol het volgende:
[..]
aha oke...
het mag opzich wel (die domeinnaam) echter vind ik het niet netjes staan, en klopt hij ook niet (ik krijg a62-251-83-181.adsl.xs4all.nl terug)
Jouw domeinnaam -> IP-adres translatie vind plaats door een DNS-request, maar voor een reverse DNS-request wordt de 'beheerder' van jouw IP-adres geraadpleegd en dat is jouw provider, gegeven dat je je domeinnaam naar jouw ISP IP-adres laat verwijzenquote:en er is ook een "normale" domeinnaam aangekoppeld, home.mschol.eu, en die heb ik liever, echter kan ik er wel mee leven als dat niet werkt
dit is overstappen is al ruim een half jaar geleden gebeurd.quote:Op woensdag 28 februari 2007 10:50 schreef JeRa het volgende:
[..]
Dat daar iets anders wordt gevonden dan bij jou thuis komt waarschijnlijk doordat je misschien laatst bent overgestapt? Het duurt altijd even voordat DNS-servers helemaal up-to-date zijn
aha oke.quote:Jouw domeinnaam -> IP-adres translatie vind plaats door een DNS-request, maar voor een reverse DNS-request wordt de 'beheerder' van jouw IP-adres geraadpleegd en dat is jouw provider, gegeven dat je je domeinnaam naar jouw ISP IP-adres laat verwijzen meer info.
Lekker duidelijk vraag, een top drie waarvan? Uren, projecten waaraan gewerkt is? Projecten die al te lang lopen?quote:Op woensdag 28 februari 2007 10:57 schreef morpheus_at_work het volgende:
is er een mogelijkheid om het volgende te doen
ik heb een tabel met
Project + uren + maand + jaar
Ik wil een Top 3 per maand draaien per project
Scherpe vraagquote:Op woensdag 28 februari 2007 11:06 schreef BereNDD het volgende:
[..]
Lekker duidelijk vraag, een top drie waarvan? Uren, projecten waaraan gewerkt is? Projecten die al te lang lopen?
Dat kun je in PHP zo doen:quote:Op woensdag 28 februari 2007 12:04 schreef Aibmi het volgende:
Kort vraagje. Ik heb een SQL select statement, een redelijk simpele. Maar, ik wil als een bepaalde boolean op 1 staat een kolom tonen in de query, en als die boolean op 0 staat wil ik de andere laten zien.
De output moet dit zijn bij een true:
Nummer|Kosten_hoog
En bij een false:
Nummer|Kosten_laag
1 |
Er is volgens mij geen standaard 'goede' manier om dat te doen, alhoewel Swetsenegger geloof ik ooit ook zo'n query nodig hadquote:Op woensdag 28 februari 2007 12:06 schreef morpheus_at_work het volgende:
[..]
Scherpe vraag
Top 3 van de projecten waarop de meeste uren geboekt zijn per maand / jaar
mysql kent geen top dus zal zoiezo bij met limit moeten
quote:Op woensdag 28 februari 2007 12:06 schreef morpheus_at_work het volgende:
[..]
Scherpe vraag
Top 3 van de projecten waarop de meeste uren geboekt zijn per maand / jaar
mysql kent geen top dus zal zoiezo bij met limit moeten
1 |
Helaas zal het toch echt in een gewone query moetenquote:Op woensdag 28 februari 2007 12:09 schreef JeRa het volgende:
[..]
Dat kun je in PHP zo doen:
[ code verwijderd ]
Dat zou inderdaad kunnen, ik dacht dat hij een top 3 pér maand van alle projecten wildequote:Op woensdag 28 februari 2007 12:23 schreef BereNDD het volgende:
[..]
[ code verwijderd ]
(of ASC voor de minste uren)
In de database moeten 'uren' dan wel een INTEGER veld wezen
Het is het enige idee als je niets anders dan SQL wilt praktiserenquote:Op woensdag 28 februari 2007 12:30 schreef Aibmi het volgende:
Ik zit overigens te denken aan een stored procedure, die ik het unieke ID meegeef, en die dan als output het juiste getal terugvoert, omdat je in een stored procedure wel gewoon IFs kunt gebruiken. Is dat een goed idee?
"ORDER BY artiest, album"quote:Op woensdag 28 februari 2007 14:05 schreef super-muffin het volgende:
Ik heb een tabel met de kolommen artiest en album.
In mijn query staat het gesorteerd op alfabet bij artiest, en zo wil ik het hebben.
Maar hoe kan ik binnen die artiest sorteren op alfabet op de kolom album?
Voor zover jouw vraag klopt is dat toch echt het antwoord hoorquote:Op woensdag 28 februari 2007 14:42 schreef super-muffin het volgende:
-edit;
Toch niet bedanktHet werkt niet. Ga wel even verder zoeken
Zie je welquote:Op woensdag 28 februari 2007 14:42 schreef super-muffin het volgende:
-edit2:
Wat heb ik geleerd vandaag: Kijk eens goed naar de kolomnamen voor dat je zegt dat het niet werkt.![]()
Als je een string hebt kun je middels die curly brackets een karakter op positie x (met 0 als eerste teken) als volgt ophalen:quote:Op woensdag 28 februari 2007 14:37 schreef Desdinova het volgende:
Ik heb ooit eens iets gezien van $var{1,2}. ik dacht eigenlijk dat het een verkapte versie van substr() was.. het valt alleen niet mee om op zoiets te zoeken, dus kan iemand mij uitleggen hoe het werkt en wat het doet?
ok thanks. Ik zie niks staan in de vorm van {0,2}, behalve bij de reguliere expressie erboven ergens. maar dit zal wel een ander iets zijn.quote:Op woensdag 28 februari 2007 14:49 schreef JeRa het volgende:
[..]
Als je een string hebt kun je middels die curly brackets een karakter op positie x (met 0 als eerste teken) als volgt ophalen:
$string{x}
Maar aangeraden wordt om de array-like brackets te gebruiken:
$string[x]
Dat doet precies hetzelfdezie ook deze paragraaf.
Nee, en die vorm die jij bedoelde ($string{x,y}) bestaat niet voor zover ik weetquote:Op woensdag 28 februari 2007 15:04 schreef Desdinova het volgende:
[..]
ok thanks. Ik zie niks staan in de vorm van {0,2}, behalve bij de reguliere expressie erboven ergens. maar dit zal wel een ander iets zijn.
het is dus geen verkapte versie van substr() begrijp ik.
je bedoelt een manager ofzo?quote:Op woensdag 28 februari 2007 21:56 schreef wipes66 het volgende:
Kent iemand toevallig een database programma voor sqlite?
Nee. De sessie is alleen uit te lezen door je eigen scripts.quote:Op donderdag 1 maart 2007 17:28 schreef super-muffin het volgende:
Even een vraagje, zijn sessie´s door spambot´s ofzo uit te lezen?
1 2 3 | $sql = "SELECT * FROM projects LEFT JOIN clients ON (projects.client_id = clients.id ) WHERE projects.client_id = '".$_GET['klant']."' LIMIT ".$page." , 1"; ?> |
Heb ik ook al geprobeerd, maar toen gaf hij een error....... r r rquote:Op donderdag 1 maart 2007 19:54 schreef Xcalibur het volgende:
misschien moet je eens bij 0 beginnen met tellen
0,1, niet 1,0 dusquote:Op donderdag 1 maart 2007 19:59 schreef s00z het volgende:
[..]
Heb ik ook al geprobeerd, maar toen gaf hij een error....... r r r
Ja weet ik, maar moet het eerst draaiende krijgen, daarna ga ik me wel druk maken over beveiliging...quote:Op donderdag 1 maart 2007 20:19 schreef Xcalibur het volgende:
trouwens: $_GET['klant'] is nogal SQL injection gevoelig
1 2 3 4 5 6 | $unsafeContentPage = isset($_GET['content']) ? $_GET['content'] : 'home'; if (!preg_match('~^[a-z_]+$~i', $unsafeContentPage)) { // Iets of iemand probeert iets fouts mee te geven $unsafeContentPage = 'home'; ?> |
nu maar zo gedaan:quote:Op donderdag 1 maart 2007 21:23 schreef Xcalibur het volgende:
kwam het niet door de spaties rond de komma ofzo?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if($_GET['page']) // Is page defined? { $page = $_GET['page']; // Set to the page defined }else{ $page = 1; // Set to default page 1 } $limitminimalizer = $page - '1'; ?> |
1 2 3 | LIMIT ".$limitminimalizer." , 1 ?> |
Moet er ook nog een ander port open?quote:php connect.inc.php
Kan niet verbinden: Lost connection to MySQL server during query
3306 voor MySQL en 80 voor Apache.quote:Op donderdag 1 maart 2007 22:58 schreef saban het volgende:
Wat is de standaard poort voor mysql? Dat is 3306 toch?
Ik heb op mijn server thuis port 3306 opengezet, maar is nog steeds van buiten af niet bereikbaar.
[..]
Moet er ook nog een ander port open?
Vaag dat het niet werkt.quote:
laat je router / modem / whatever het wel door?quote:Op donderdag 1 maart 2007 22:58 schreef saban het volgende:
Moet er ook nog een ander port open?
Kun je je MySQL server helemaal niet bereiken, of kom je er gewoon niet in met je user? In het laatste geval moet je je user niet alleen toegang geven vanaf localhost waarschijnlijk.quote:Op donderdag 1 maart 2007 22:58 schreef saban het volgende:
Wat is de standaard poort voor mysql? Dat is 3306 toch?
Ik heb op mijn server thuis port 3306 opengezet, maar is nog steeds van buiten af niet bereikbaar.
dan zou het zonder het hernoemen van die variabele ook moeten werkenquote:Op donderdag 1 maart 2007 21:26 schreef s00z het volgende:
[..]
nu maar zo gedaan:
[ code verwijderd ]
En dan:
[ code verwijderd ]
Daar heb ik hem dus ook open gezet.quote:Op donderdag 1 maart 2007 23:15 schreef Xcalibur het volgende:
[..]
laat je router / modem / whatever het wel door?
misschien kan je daar een logfile zien van geblokkeerde requests?
mysql_error zegt:quote:Op donderdag 1 maart 2007 23:16 schreef CraZaay het volgende:
[..]
Kun je je MySQL server helemaal niet bereiken, of kom je er gewoon niet in met je user? In het laatste geval moet je je user niet alleen toegang geven vanaf localhost waarschijnlijk.
Nog leuker, als $_GET['page'] niet leeg of nul is dan is $page ook een string. En dan trek je dus een string van een string af in de hoop dat er een integer uit komtquote:Op donderdag 1 maart 2007 22:50 schreef CraZaay het volgende:
$limitminimalizer = $page - '1';
Je trekt een string van een integer af?(ja, het werkt in PHP, maar da's nog geen reden om het te doen
)
Maar het werkt prima!quote:Op donderdag 1 maart 2007 23:23 schreef Light het volgende:
[..]
Nog leuker, als $_GET['page'] niet leeg of nul is dan is $page ook een string. En dan trek je dus een string van een string af in de hoop dat er een integer uit komt
1 2 3 4 5 6 | $unsafeContentPage = isset($_GET['content']) ? $_GET['content'] : 'home'; if (!preg_match('~^[a-z_]+$~i', $unsafeContentPage)) { // Iets of iemand probeert iets fouts mee te geven $unsafeContentPage = 'home'; ?> |
Ja, PHP is zo loosely typed dat het niet uit maakt. Het ligt niet aan jou dusquote:
het is niet logisch om daar van alles zelf voor te maken als er prachtige functies zijn die dit automatisch doen. Kijk bijvoorbeeld is naar:quote:Op vrijdag 2 maart 2007 01:18 schreef s00z het volgende:
[..]
Maar het werkt prima!
En anders niet.
Jullie hadden ook niet echt zinvolle suggesties als ik zo brutaal mag zijn![]()
Maar wel tof dat jullie me ook proberen te helpen,nu moet ik nog mijn site een beetje veilig maken tegen injectie enzo, en hierboven heb ik een stuk gequote dat ik daartegen wil gebruiken..
Zal dat voldoende zijn denken jullie?![]()
Hierzo:
[ code verwijderd ]
1 2 3 4 | $query=mysql_escape_string($_GET['page']); $query=mysql_real_escape_string($_GET['page']); ?> |
1 2 3 4 5 6 7 8 | $allpages=array('home','forum','contact','intro','about'); if (in_array($_GET['page'],$allpages)) { $page=$_GET['page']; } else { $page=$allpages[0]; } ?> |
Tnx, daar was ik al bang voor ja.quote:Op vrijdag 2 maart 2007 11:29 schreef JeRa het volgende:
@splendor
Standaard wordt het 'echte' pad niet doorgegeven, maar er is wel een truukje voor. Je kunt met javascript vlak voordat je een formulier submit de waarde uitlezen en in een hidden field zetten.
Nadeel: je kunt niet in die file inputs wegschrijvendat om te voorkomen dat een website opeens mag bepalen welke bestanden jij verstuurt, dat zou een enorm lek betekenen.
zou anders toch niet handig werken, de gebruiker zou elke keer dat het formulier een fout bevat onnnodig het bestand opnieuw moeten uploadenquote:Op vrijdag 2 maart 2007 11:35 schreef splendor het volgende:
[..]
Tnx, daar was ik al bang voor ja.
Nouja wat een oplossing zou zijn is het file uploaden los maken van een groot ander formulier, met een eigen submit knop. Is een handeling meer voor de gebruiker maar scheelt een hoop ellende.
Zelfs al kan PHP het hele pad ergens vandaag toveren, dan nog heb je er niets aan. Je kunt de file input in de html namelijk niet populeren met een value uit veiligheidsoverwegingen.quote:Op vrijdag 2 maart 2007 11:27 schreef splendor het volgende:
Maar ik wil niet alleen de orginile bestandsnaam ['name'] maar het hele pad, dus: C:\blabla\bla\file.ext
Is dit mogelijk? Of wordt dit clientside nooit doorgestuurd?
Ik wil dit omdat ik nogal een lang formulier heb en als je een veld niet of niet goed invuldt dan krijg je netjes een rijtje errors en staan alle waarden nog steeds in het formulier, maar het file veld onthoudt ie de waarde niet van.
Juist, dus als iemand een query in wil vullen mtb injectie (want dat is injectie toch?) dan 'beschadigd' de variabele als het ware als er bij float een letter wordt ingevuld...quote:Op vrijdag 2 maart 2007 09:44 schreef ralfie het volgende:
[..]
het is niet logisch om daar van alles zelf voor te maken als er prachtige functies zijn die dit automatisch doen. Kijk bijvoorbeeld is naar:
[ code verwijderd ]
Mocht je ergens numerieke waarden willen, gebruik je een van deze twee
[ code verwijderd ]
afhankelijk van of je een heel getal (integer) will hebben of niet (float)
suc6
Sommige sites gebruiken een apart systeem voor het uploaden van bestanden. Een gebruiker kan dan los bestanden uploaden zodat deze dan tijdelijk ergens worden weggezet en gekoppeld aan de sessie. Als vervolgens het formulier een fout bevat, dan zijn de bestanden niet verloren gegaanquote:Op vrijdag 2 maart 2007 11:35 schreef splendor het volgende:
[..]
Nouja wat een oplossing zou zijn is het file uploaden los maken van een groot ander formulier, met een eigen submit knop. Is een handeling meer voor de gebruiker maar scheelt een hoop ellende.
1 2 3 4 5 | R61: $query ="INSERT INTO `kasboek` ( `id` , `datum` , `type` , `rekeningnr` , `van` , `categorie` , `default` , `bedrag` , `commentaar` ) VALUES ('', '".$POST[datum]."' , '".$POST[type]."', '".$POST[rekeningnr]."', '".$POST[van]."', '".$POST[categorie]."', '".$POST[`default`]."','".$POST[bedrag]."', '".$POST[commentaar]."');"; R62: $result = mysql_query($query) or ( $error = mysql_error()); R63: $data .= ($result) ? 'Afschrift toegevoegd' : 'Er ging wat fout:<br />'.$result; R64:} |
Als je dat consequent doet kan er nooit een probleem komen met reserved wordsquote:Op vrijdag 2 maart 2007 13:26 schreef Swetsenegger het volgende:
Sowieso... waarom die backticks?
Ja...maar als je het hele bestand inleest is het natuurlijk veel simpeler om filesize() te gebruikenquote:Op vrijdag 2 maart 2007 15:06 schreef Geqxon het volgende:
Ik ben op het moment vaak met fopen bezig, en ik wil graag bijhouden hoeveel bandbreedte ik er doorheen jaag.
Op het moment doe ik dat door elke keer als ik een file open en deze regel voor regel met een foreach doorneem, de string lengte van de huidige regel te pakken, en de lengte hiervan bij een variabele toe te voegen. Dat door 1024 delen en ik heb het aantal kilobyte.
Zit ik toevallig in de goede richting?
Een website in dit geval, dus volgens mij is dat niet mogelijk.quote:Op vrijdag 2 maart 2007 15:27 schreef JeRa het volgende:
[..]
Ja...maar als je het hele bestand inleest is het natuurlijk veel simpeler om filesize() te gebruiken
1 2 3 4 5 | $headers = get_headers($url, 1); if ((!array_key_exists("Content-Length", $headers))) { return false; } return $headers["Content-Length"]; ?> |
Nee, dat kan de gebruiker niet. De $_SESSION wordt alleen op de server gebruikt.quote:Op vrijdag 2 maart 2007 15:35 schreef Piles het volgende:
Even een kort vraagje: $_POST, $_GET en $_COOKIE moet je altijd 'beveiligen' tegen gevaarlijke waardes, maar hoe zit dat met $_SESSION? Kan een gebruiker/hacker daar ook in veranderen?
Ik maak nu een random-hash aan die ik opsla in de database (met een user_id erbij) en in de sessie. Met de sessie haal ik het user_id weer uit de database enzovoortsquote:Op vrijdag 2 maart 2007 16:08 schreef HuHu het volgende:
[..]
Nee, dat kan de gebruiker niet. De $_SESSION wordt alleen op de server gebruikt.
De client krijgt echter wel en cookie op zijn pc met het sessie-id erin. Dus die moet je wel controleren op het moment dat je het sessie-id uitleest.
Toch maar de regels tellenquote:Fatal error: Call to undefined function: get_headers() in /home/buyshitn/public_html/peppisodelite/index.php on line 189
Men zou de cookie met het sessie-id kunnen aanpassen, om zo SQL-injection te doen. Dus voordat je het sessie-id in een query gebruikt moet je deze controleren.quote:Op vrijdag 2 maart 2007 16:32 schreef Piles het volgende:
[..]
Ik maak nu een random-hash aan die ik opsla in de database (met een user_id erbij) en in de sessie. Met de sessie haal ik het user_id weer uit de database enzovoorts
Is dat veilig genoeg?
Dan doen we datquote:Op vrijdag 2 maart 2007 17:02 schreef HuHu het volgende:
[..]
Men zou de cookie met het sessie-id kunnen aanpassen, om zo SQL-injection te doen. Dus voordat je het sessie-id in een query gebruikt moet je deze controleren.
Heeft jou editor geen line numbers?quote:Op vrijdag 2 maart 2007 16:49 schreef Geqxon het volgende:
Grrrr, lekkere provider heb ik toch:
[..]
Toch maar de regels tellen
Edit: Mijn script wordt nu toch wel iets té optimistisch: Bandwidth used: 295.16 kB (126 kB/s). Op een 512kbit lijntje
Niet die regelsquote:Op vrijdag 2 maart 2007 17:24 schreef super-muffin het volgende:
[..]
Heeft jou editor geen line numbers?
Heb je het geprobeerd? PHP heeft stream wrappers, kans is dat het dus wel werkt.quote:Op vrijdag 2 maart 2007 15:28 schreef Geqxon het volgende:
[..]
Een website in dit geval, dus volgens mij is dat niet mogelijk.
Heel erg bedankt voor die site, hier heb ik wat aanquote:Op vrijdag 2 maart 2007 19:37 schreef CraZaay het volgende:
Begin eens met HTML en CSS te leren, bijvoorbeeld via www.w3schools.com
Je kunt immers wel beginnen met PHP, maar uiteindelijk moet je het resultaat toch in HTML tonen. Lijkt mij handig om dat eerst te kunnen
Dat osCommerce ken ik niet ja hoe bedoel je n00bquote:Op vrijdag 2 maart 2007 19:42 schreef HuHu het volgende:
Inderdaad eerst HTML en CSS leren voor de basis. Met een programma als Dreamweaver leer je dan wel vanzelf omgaan als je de HTML en CSS begrijpt. Daarna PHP gaan leren.
Maar een complete webshop bouwen is wel een aardig project waarbij je wel op heel veel dingen moet letten. Je kan natuurlijk ook eens je licht laten schijnen op iets als osCommerce. Dat is een standaardpakket, zodat je het wiel niet opnieuw hoeft uit te vinden. Je kan dan je opgedane HTML, CSS en PHP kennis gebruiken om osCommerce naar je wensen aan te passen.
Je hoeft dan niet hele basic dingen zelf helemaal uit te gaan vinden, aangezien iets als osCommerce dat al over-en-over heeft uitgedacht, geprobeerd en getest.
Maar aan de andere kant léér je ontzettend veel van het maken van een webshop en kan je hem helemaal aan je wensen aanpassenquote:Op vrijdag 2 maart 2007 19:42 schreef HuHu het volgende:
Inderdaad eerst HTML en CSS leren voor de basis. Met een programma als Dreamweaver leer je dan wel vanzelf omgaan als je de HTML en CSS begrijpt. Daarna PHP gaan leren.
Maar een complete webshop bouwen is wel een aardig project waarbij je wel op heel veel dingen moet letten. Je kan natuurlijk ook eens je licht laten schijnen op iets als osCommerce. Dat is een standaardpakket, zodat je het wiel niet opnieuw hoeft uit te vinden. Je kan dan je opgedane HTML, CSS en PHP kennis gebruiken om osCommerce naar je wensen aan te passen.
Je hoeft dan niet hele basic dingen zelf helemaal uit te gaan vinden, aangezien iets als osCommerce dat al over-en-over heeft uitgedacht, geprobeerd en getest.
Dat is zeker waar, maar jij was dan ook geen n00b meer toen je begon met 't bouwen ervanquote:Op zaterdag 3 maart 2007 11:38 schreef Swetsenegger het volgende:
[..]
Maar aan de andere kant léér je ontzettend veel van het maken van een webshop en kan je hem helemaal aan je wensen aanpassen
weet ik uit ervaring
Niet volslagen nee....quote:Op zaterdag 3 maart 2007 11:47 schreef HuHu het volgende:
[..]
Dat is zeker waar, maar jij was dan ook geen n00b meer toen je begon met 't bouwen ervan.
bedankt en jaquote:Op zaterdag 3 maart 2007 12:54 schreef Kwelit het volgende:
Ziet er erg goed uit Swets!!Heb je die helemaal 'from sratch' in elkaar gezet?
Ik was een jaar met php bezig voordat ik hieraan begon. En voor ik aan php begon had ik in een grijs verleden programmeer ervaring opgedaan in MSX basic en Z80/MSX assembly.quote:Wat was jouw voorkennis als ik vragen, omdat je aangeeft dat je voordat je begon geen volslagen n00b was?
quote:Op zaterdag 3 maart 2007 15:13 schreef splendor het volgende:
ik voer een htmlspecialchars uit op al mijn POST variablen standaard voor ik er iets mee ga doen, en het ziet er naar uit dat karakters als \ en ' en " netjes omgezet worden maar moet ik alsnog een addslashes uitvoeren voor een post waarde de database ingaat? Want als ik dat doe en het komt de database uit zit alles vol met slashes en kan ik overal waar ik het wil gaan gebruiken eerst stripslashes uitvoeren.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } if(isset($_POST['submit']{ if(get_magic_quotes_gpc()){ $_POST = stripslashes_deep($_POST); } $query="INSERT INTO tabel (id,iets) VALUES(0,'".mysql_real_escape_string($_POST['iets'])."')"; } ?> |
Hmm, maar even een vraag dan.. stel je hebt ergens in je query iets alsquote:Op zaterdag 3 maart 2007 15:18 schreef Swetsenegger het volgende:
[..]
gebruik de stripslashes_deep functie die halverwege de pagina staat. Schrijf je variabelen met mysql_real_escape_string naar de database.
[ code verwijderd ]
Ja maar ik snap niet goed waarom dat is? Is het niet mogelijk om mysql te vertellen om het als waarde te behandelen maar wel de \ eruit te halen? Of is dat gewoon iets wat mysql niet doet en daarom moet je zo moeilijk doen in php?quote:Op zaterdag 3 maart 2007 16:10 schreef Geqxon het volgende:
In je database komt dan ab backslash-singlequote cd te staan. Daarom moet je de slashes nog even strippen.
Zou het kunnen zijn omdat ik eerst htmlspecialchars uitvoer? En dat een addslashes daarna een beetje dubbelop is dus.quote:Op zaterdag 3 maart 2007 16:17 schreef HuHu het volgende:
Waarschijnlijk gaat het ergens een keertje dubbelop en komt er dus 'ab\'cd' te staan in je query. In de database komt dan 'ab'cd' te staan, waardoor je bij het eruit halen nogmaals een stripslashes moet doen.
Als er een ' in je data zit, maar deze wordt niet ge-escaped, dan weet MySQL niet of daar je data ophoud en de query verder gaat, of dat het bij je data hoort. Vandaar dat je altijd moet escapen met slashes.
Ik heb een module gemaakt die OO een compleet formulier kan opbouwen, verwerken en filteren. Dus wil ik ergens $_POST['iets'] gebruiken, dan is dat al helemaal gefilterd en veilig, scheelt een hoop controles overal die je toch weer kunt vergeten.quote:Op zaterdag 3 maart 2007 16:35 schreef HuHu het volgende:
Waarom doe je een htmlspecialchars() vóór het opslaan in de database? Je kan dat toch gewoon doen net voor het moment dat je 't gaat tonen?
neequote:Op zaterdag 3 maart 2007 15:50 schreef splendor het volgende:
[..]
Hmm, maar even een vraag dan.. stel je hebt ergens in je query iets als
SET bla = 'ab'cd'
en dus zal ie over de zeik gaan.
Met mysql_real_escape_string zal inderdaad ab'cd in de db staan, met addslashes staat ab\'cd in de dbquote:doe ik dan addslashes dan wordt het
SET bla = 'ab\'cd'
maar in de database zelf komt dan toch ab'cd te staan? en niet ab\'cd ?
omdat er dan dus een slash in je database veld staat.quote:Ik snap niet goed waarom ik na een addslashes toch nog een stripslashes moet uitvoeren?
je moet gewoon mysql_real_escape_string gebruiken en niet addslashes en stripslashes.quote:Op zaterdag 3 maart 2007 16:12 schreef splendor het volgende:
[..]
Ja maar ik snap niet goed waarom dat is? Is het niet mogelijk om mysql te vertellen om het als waarde te behandelen maar wel de \ eruit te halen? Of is dat gewoon iets wat mysql niet doet en daarom moet je zo moeilijk doen in php?
Magic quotes zal waarschijnlijk aanstaan.quote:Op zaterdag 3 maart 2007 17:13 schreef splendor het volgende:
Ik heb even een aantal dingen geprobeerd, wanneer ik een variable met quotes of slashes erin zo probeer door te sturen krijg je een foutmelding in de query, logisch.
Echter wanneer precies datzelfde variable met dezelfde waarde via een POST de query in gaat, krijg ik geen error en staat het netjes in de database.
Oftewel formulieren voeren ergens al een addslashes uit? Maar stel dat ikhet POST variable echo, dan staan er inderdaad extra slashes voor.
Dus het is logisch dat ik overal dubbele quotes kreeg en later weer stripslashes moest uitvoeren.
Maar wat zorgt ervoor dat een formulier slashes krijgt? Firefox/IE? Apache? Een instelling in mijn php.ini?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |