Kerol | woensdag 10 december 2008 @ 21:34 | |||||||||||||
![]() cd niet bijgeleverd Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten w�t er niet lukt en w�lke foutmelding je precies krijgt ![]() Vorige delen: 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 Zie ook: Tutorials: Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP | ||||||||||||||
JortK | woensdag 10 december 2008 @ 21:37 | |||||||||||||
Kleine tvp ![]() | ||||||||||||||
Kerol | woensdag 10 december 2008 @ 21:37 | |||||||||||||
quote:Is dit wat je bedoelt?
Ik zal vast nog wel ergens een epische faal hebben staan want hij laat $getal1, $getal2 en $uitkomst niet zien. | ||||||||||||||
MrDoegewoon | woensdag 10 december 2008 @ 21:40 | |||||||||||||
quote:Index.php (minus html output) ik gebruik session_register() omdat op de test server de sessies nog niet automatisch willen starten
Login.php
Het is allemaal nog niet netjes en veilig enzo, maar het is maar voor een simpele toto. | ||||||||||||||
Light | woensdag 10 december 2008 @ 21:48 | |||||||||||||
quote:
| ||||||||||||||
Tijn | woensdag 10 december 2008 @ 21:49 | |||||||||||||
quote:Je formuliertje is nu goed, maar nu moet je dat nog met PHP op de juiste manier verwerken. Je hebt de radiobuttons de naam "reken" gegeven, dus je moet de waarde van $_POST['reken'] gaan vergelijken, bijvoorbeeld zo:
In plaats van cryptische namen als "reken1" kun je misschien beter gewoon "optellen", "aftrekken" etc gebruiken. Daar wordt je code wat leesbaarder van. Vergeet in dat geval ook niet de values in je formulier aan te passen! | ||||||||||||||
Kerol | woensdag 10 december 2008 @ 21:54 | |||||||||||||
Bedankt Light en Tijn! Hij doet het ![]() | ||||||||||||||
ursel | woensdag 10 december 2008 @ 22:05 | |||||||||||||
* bookmarked ![]() | ||||||||||||||
JortK | woensdag 10 december 2008 @ 22:40 | |||||||||||||
Tuvai, nog even terugkomend waarom je de meest recente versie van PECL niet kon vinden: http://www.php.net/archive/2008.php#id2008-12-10-1 | ||||||||||||||
PiRANiA | woensdag 10 december 2008 @ 23:08 | |||||||||||||
Je was op tijd kerol ![]() | ||||||||||||||
slacker_nl | woensdag 10 december 2008 @ 23:37 | |||||||||||||
<?tvp /* yeah baby */ ?> | ||||||||||||||
Niek. | donderdag 11 december 2008 @ 01:21 | |||||||||||||
Ik heb een website en wil daarop een rss feed van twitter hebben. http://search.twitter.com/search.rss?q=drugs Dat is een feed waarin elk bericht komt waarin het woord "drugs" in voor komt. Ik zou dus het liefste de laatste 10 oid. berichten op mn site willen hebben en dat hij zichzelf update (als het qua berichten er ongeveer zo http://search.twitter.com/search?q=hangover uitziet zou dat helemaal leuk zijn). Heeft iemand hier ervaring mee en weet iemand hier een goede manier voor? Ik kan zelf vrijwel geen php typen maar begrijp het merendeel wel en ongeveer hetzelfde geld voor html. Iemand die deze 100% noob dus verder kan helpen? | ||||||||||||||
Chandler | donderdag 11 december 2008 @ 08:10 | |||||||||||||
tvp ![]() | ||||||||||||||
Kerol | donderdag 11 december 2008 @ 08:11 | |||||||||||||
quote:Met wat? ![]() | ||||||||||||||
Tuvai.net | donderdag 11 december 2008 @ 08:22 | |||||||||||||
Woei, een Development forum. ![]() quote:Ah, bedankt. Zodra die beschikbaar zijn neem ik die meteen effe mee naar mijn WAMP servertje. ![]() ![]() | ||||||||||||||
PiRANiA | donderdag 11 december 2008 @ 08:31 | |||||||||||||
quote:Dit topic ![]() Er kwam er nog één achteraan ![]() (verkapte tvp ![]() | ||||||||||||||
Tuvai.net | donderdag 11 december 2008 @ 08:39 | |||||||||||||
quote:Is relatief eenvoudig. Als je de pagina (of RSS feed) uit leest d.m.v. file_get_contents() ben je al een heel eind. RSS is in feite zeer gesimplificeerde XML, dus het goochelen met de content van het uitgelezen bestand is ook vrij makkelijk te doen, zelfs voor een beginner. | ||||||||||||||
Kerol | donderdag 11 december 2008 @ 10:08 | |||||||||||||
quote:Waarom wou jij één aanmaken dan. Degene die de last post krijgt moet toch een nieuwe maken ![]() | ||||||||||||||
JortK | donderdag 11 december 2008 @ 10:56 | |||||||||||||
Hier even een vraag, omdat ik zelf geen brainfart krijg hoe dit op te lossen :) Ik heb een tabel, daarin staan de volgende gegevens:
Nu wil ik weten hoe vaak een bepaalde relatie voorkomt, dus hoevaak bepaalde users in hetzelfde topic hebben gepost. Dit zou dus uitkomen op: User 1 en user 2 : 2 topics User 1 en user 3: 1 topic User 2 en user 3: 1 topic Hoe krijg ik dit in een query voor elkaar, ik heb namelijk echt werkelijk geen idee. :{ | ||||||||||||||
SuperRembo | donderdag 11 december 2008 @ 12:01 | |||||||||||||
Ik denk dat deze query geeft wat je zoekt
| ||||||||||||||
JortK | donderdag 11 december 2008 @ 12:04 | |||||||||||||
quote:Ik ga straks even kijken, bedankt in ieder geval! ![]() | ||||||||||||||
Spike1506 | donderdag 11 december 2008 @ 12:54 | |||||||||||||
tvp | ||||||||||||||
cablegunmaster | donderdag 11 december 2008 @ 20:16 | |||||||||||||
komt erop neer elke medewerker krijgt 900 salaris bovenop zijn omzet die de medewerker verdient krijgt ie 12,5% provisie provisiepost heeft maar max 2100 euro. hij stopt pas bij medewerker id 999 die hij niet laat weerzien. zit een fout in ^^;; snap nog niet helemaal hoe het zit met array's. regel 20 maakt hij fouten , hoe moet ik dat anders opschrijven? 1 begin waarde 2 eindwaarde 3 ophoging alleen hoe doe ik dit met arrays? ![]() ![]()
![]() ![]() [ Bericht 5% gewijzigd door cablegunmaster op 11-12-2008 20:48:34 ] | ||||||||||||||
Light | donderdag 11 december 2008 @ 21:08 | |||||||||||||
Je mist sowieso ergens een } en dat verklaart die melding over regel 31. | ||||||||||||||
cablegunmaster | donderdag 11 december 2008 @ 21:11 | |||||||||||||
quote:die had ik niet gezien ![]() alleen dan geeft hij alsnog niet per regel weer wat iemand verdient en de omzet is. ![]() alleen Heeft euroteken gemaakt , en 0 euro verdient alsof hij m'n hele array overslaat! ![]() | ||||||||||||||
MrDoegewoon | donderdag 11 december 2008 @ 21:28 | |||||||||||||
quote: Heb m'n probleem nog steeds niet opgelost, de code die ik eerde poste wil gewoon niet de sessie vasthouden :S | ||||||||||||||
Positive_Thinking | donderdag 11 december 2008 @ 22:24 | |||||||||||||
cablegunmaster inplaats van de eerste for kan je natuurlijk ook foreach gebruiken. Kijk die functie eens rustig na. http://fi.php.net/foreach Mrdoegwoon, als een nieuw pagina aangeroepen wordt (anders dan index file) dan heeft die ook een session_start nodig. session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie. | ||||||||||||||
Light | donderdag 11 december 2008 @ 22:28 | |||||||||||||
quote:Doe na deze code eens een var_dump($werknemer); om te zien waar je mee verder gaat
En ik snap ook niet helemaal wat je probeert met
Volgens mij blijft $eraf altijd 0, je doet immers (omzet x provisie) - (omzet x provisie) En dan zitten er nog meer dingen in, maar dit is vast genoeg om je eerst even bezig te houden met je huiswerk :) | ||||||||||||||
cablegunmaster | vrijdag 12 december 2008 @ 01:46 | |||||||||||||
quote:
kan iemand me de -= uitleggen? ![]() [ Bericht 28% gewijzigd door cablegunmaster op 12-12-2008 09:01:56 ] | ||||||||||||||
Spike1506 | vrijdag 12 december 2008 @ 09:11 | |||||||||||||
quote:Natuurlijk: PHP Operators. | ||||||||||||||
cablegunmaster | vrijdag 12 december 2008 @ 09:16 | |||||||||||||
$geld word dan steeds kleiner en als je echo $geld eronder doet dan zal die uiteindelijk als 0 eindigen en bij elke andere dat weer doen als hij de 2100 heeft overschreden. : ![]() [ Bericht 47% gewijzigd door cablegunmaster op 12-12-2008 09:25:35 ] | ||||||||||||||
MrDoegewoon | vrijdag 12 december 2008 @ 11:25 | |||||||||||||
quote:login.php wordt geinclude ![]() | ||||||||||||||
slacker_nl | vrijdag 12 december 2008 @ 12:22 | |||||||||||||
quote:$geld -= 1 is hetzelfde als $geld = $geld - 1 Zelfde geld voor *=, += .= Gewoon een verkorte schrijfwijze: $geld += 1 is dus hetzelfde als $geld = $geld + 1 $geld .= " stinkt niet" is dus hetzelfde als $geld = $geld . " stinkt niet" $geld *= 2 is dus hetzelfde als $geld = $geld * 2 | ||||||||||||||
Positive_Thinking | vrijdag 12 december 2008 @ 15:22 | |||||||||||||
quote:even snel beetje na gekeken.. ik zou session_register btw zowiezo niet gebruiken,. vanaf php 6.0 bestaat die niet meer. Daarnaast moet bij session_register de globals aan staan in php. http://us3.php.net/manual/en/function.session-register.php lijkt me verstandig even door te nemen en over te stappen naar $_SESSION | ||||||||||||||
#ANONIEM | vrijdag 12 december 2008 @ 16:04 | |||||||||||||
quote:Die code werkt niet helemaal. Hij telt niet het aantal topics, maar het aantal posts, en dat ook nog niet correct want als je bijvoorbeeld 2 posts van één user in één topic hebt telt hij die dubbel, en met drie posts in één topic driedubbel, enzovoort. Zelf heb ik een keer iets vergelijkbaars (of waarschijnlijk zelfs precies identiek aan wat JortK zoekt ![]() | ||||||||||||||
Positive_Thinking | vrijdag 12 december 2008 @ 18:07 | |||||||||||||
quote:
Misschien zoiets? | ||||||||||||||
Kerol | zondag 14 december 2008 @ 21:52 | |||||||||||||
Ik wil dus checken of een RADIO button niet empty is.
Hoe doe ik dat? Nu lukt het niet namelijk. | ||||||||||||||
PiRANiA | zondag 14 december 2008 @ 21:55 | |||||||||||||
quote:Zet gewoon bij de meest verkochte checked neer ![]() | ||||||||||||||
Light | zondag 14 december 2008 @ 21:56 | |||||||||||||
Je moet wel de goede volgorde gebruiken ;)
| ||||||||||||||
Light | zondag 14 december 2008 @ 21:59 | |||||||||||||
quote:Dan nog moet je controleren of er wel een waarde is geset. Da's regel 1, nooit gebruikersinvoer vertrouwen. Echt nooit. | ||||||||||||||
Kerol | zondag 14 december 2008 @ 22:06 | |||||||||||||
quote:Wat een domme fout van me zeg ![]() | ||||||||||||||
Sjoe538 | maandag 15 december 2008 @ 08:56 | |||||||||||||
Hallo, ik heb het volgende probleem er zijn 2 servers, //server1 en //server2 Op server 1 draait PHP & MySQL en een applicatie die over het netwerk gebruikt wordt. Op server 2 staan alle gedeelde bestanden als ontwerpen die de applicatie nodig heeft. Hoe bereik ik in een PHP script //server2? | ||||||||||||||
Sjoe538 | maandag 15 december 2008 @ 09:09 | |||||||||||||
<? function dirList ($directory) { // create an array to hold directory list $results = array(); // create a handler for the directory $handler = opendir($directory); // keep going until all files in directory have been read while ($file = readdir($handler)) { // if $file isn't this directory or its parent, // add it to the results array if ($file != '.' && $file != '..') $results[] = $file; } // tidy up: close the handler closedir($handler); // done! return $results; } print_r(dirList("?")); //Hier wil ik dus de andere server kunnen benaderen ?> | ||||||||||||||
Tijn | maandag 15 december 2008 @ 09:19 | |||||||||||||
Vanaf PHP5 ondersteunt de functie opendir() ook FTP. Je zou dus als pad iets als ftp://server2/pad/naar/je/files kunnen opgeven. Moet server2 natuurlijk wel via FTP bereikbaar zijn. | ||||||||||||||
PiRANiA | maandag 15 december 2008 @ 09:47 | |||||||||||||
quote:
| ||||||||||||||
Kerol | maandag 15 december 2008 @ 11:35 | |||||||||||||
quote:Heb het al werkend maar toch bedankt ![]() | ||||||||||||||
Chandler | maandag 15 december 2008 @ 14:39 | |||||||||||||
Hoe kun je binnen een array uitvinden welk getal het dichtste bij een gegeven getal zit. Stel je hebt een array met allemaal getallen 10, 100, 250, 500, 750, 1000, 1500 en je wilt weten welk getal het meest dicht bij een gegeven getal zit. bv 743 (750 = -7) hoe kom je daar achter? ![]() Of 121 = 100 etc | ||||||||||||||
Light | maandag 15 december 2008 @ 15:02 | |||||||||||||
quote:Kijk eens naar de functie abs(). Daar kom je vast verder mee. | ||||||||||||||
Chandler | maandag 15 december 2008 @ 16:13 | |||||||||||||
Het werkt! Maar kan het beter/kleiner?
| ||||||||||||||
Kerol | maandag 15 december 2008 @ 16:14 | |||||||||||||
edit; foute code | ||||||||||||||
Tijn | maandag 15 december 2008 @ 16:15 | |||||||||||||
Je bent een puntkomma vergeten na "echo '<br/>'". | ||||||||||||||
ursel | maandag 15 december 2008 @ 16:18 | |||||||||||||
Daarnaast sluit je je query af door de dubbele komma van de 2e query.. ![]() | ||||||||||||||
HuHu | maandag 15 december 2008 @ 16:22 | |||||||||||||
quote:Uit m'n hoofd:
| ||||||||||||||
Kerol | maandag 15 december 2008 @ 16:32 | |||||||||||||
Ik wil een overzicht van de klanten (naam, adres en woonplaats) die een reis naar Turijn of Venetië geboekt hebben maken.. In mijn database heb ik 3 tabellen met de namen; klant, reis en reservering. In tabel klant heb ik de volgende velden: klantnr, naam, straatnaam, huisnummer ,postcode ,woonplaats In tabel reservering de volgende: reserveringnr, klantnr, reiscode, boekdat, aantaldeelnm, ann-verz, reis-verz, reissom, betaald En in tabel reis de volgende: reiscode, vertrekdat, bestemming, prijs, retourdat, minaantal ,maxaantal, vrij Ik heb al heel veel geprobeerd maar ik kom er maar niet uit hoe ik die informatie moet opvragen met een query. Kan iemand me helpen? | ||||||||||||||
Tiemie | maandag 15 december 2008 @ 16:46 | |||||||||||||
| ||||||||||||||
Kerol | maandag 15 december 2008 @ 16:53 | |||||||||||||
Kan het ook anders dan met INNER JOINS want dat heb ik nog niet gehad.. bv met subquery's of normale joins. ![]() | ||||||||||||||
Tiemie | maandag 15 december 2008 @ 17:31 | |||||||||||||
quote:Maak van "INNER", "LEFT" en klaar ben je. ![]() | ||||||||||||||
Tiemie | maandag 15 december 2008 @ 17:35 | |||||||||||||
http://gathering.tweakers.net/forum/list_messages/1105378//#joins daar staat het trouwens uitgelegd. | ||||||||||||||
Kerol | maandag 15 december 2008 @ 18:00 | |||||||||||||
quote:Mja maar ik moet eigenlijk de opdracht maken zonder INNER, LEFT, RIGHT JOIN enzo.. alleen maar met subquerys en joins als 'reiscode.reis = reiscode.klant' etc etc... dus is er ook een manier om met dat tot hetzelfde antwoord te komen dan wat je met de INNER JOINS etc krijgt? | ||||||||||||||
Tiemie | maandag 15 december 2008 @ 18:16 | |||||||||||||
word dan
| ||||||||||||||
Kerol | maandag 15 december 2008 @ 18:29 | |||||||||||||
Ik heb het zo in de PHP code gezet alleen doet hij het nog niet.
Ik neem aan dat je het zo bedoelt? Want volgens mij kun je ipv die k en r1,r2 die jij hebt gebruikt ook gewoon klant, reservering en reis neerzetten toch? | ||||||||||||||
Arjan321 | maandag 15 december 2008 @ 20:27 | |||||||||||||
Als je nou ook de output van de mysql_error() zou plaatsen, zou het "hij doet het niet" wat duidelijker zijn.. maargoed, voor zosnel ik zie is dit niet goed: `reis.reiscode` (e.d.), hij zoekt nu een kolom die zo heet, ipv de combinatie van tabel.kolom. reis.`reiscode` zal wel werken. | ||||||||||||||
Kerol | maandag 15 december 2008 @ 21:07 | |||||||||||||
quote:Werkt! Thanks! ![]() | ||||||||||||||
Chandler | maandag 15 december 2008 @ 22:31 | |||||||||||||
quote:Tnx, het is inderdaad een heel stuk korter, blijkbaar mis ik toch dat stukje inzicht ![]() | ||||||||||||||
Chandler | maandag 15 december 2008 @ 23:21 | |||||||||||||
Ik heb tevens nog een andere vraag, in bepaalde fora zie je dat zoek opdrachten gecached worden, hier wil ik eens meer over weten. Is er documentatie te vinden waarin uitgelegd wordt hoe men zoek opdrachten kan cachen? Heb gezocht maar niet gevonden. | ||||||||||||||
GlowMouse | maandag 15 december 2008 @ 23:30 | |||||||||||||
Ik zie dit staan aan het eind van je query:
Ga eens uitzoeken wat OR doet ![]() | ||||||||||||||
HuHu | maandag 15 december 2008 @ 23:31 | |||||||||||||
quote:Je doelt op de query cache van MySQL, of zelf iets van een cache maken? Voor dat laatste zou je kunnen kijken naar Zend_Cache. | ||||||||||||||
HuHu | maandag 15 december 2008 @ 23:32 | |||||||||||||
quote:En dan eventueel ook naar de toepassing van IN, als Kerol toch bezig gaat ![]() | ||||||||||||||
Tiemie | maandag 15 december 2008 @ 23:36 | |||||||||||||
quote:Rare manier van copy & pasten heeft hij. ![]() | ||||||||||||||
Kerol | dinsdag 16 december 2008 @ 09:24 | |||||||||||||
quote:Turijn OF Venetie.. dus niet beide.. toch ![]() | ||||||||||||||
Kerol | dinsdag 16 december 2008 @ 09:25 | |||||||||||||
quote:Mja met dat k1 en r1 en r2 heb ik nog nooit gewerkt en volgens mij is dit gewoon hetzelfde als wat jij zei? Of zit ik weer fout ![]() | ||||||||||||||
HuHu | dinsdag 16 december 2008 @ 09:28 | |||||||||||||
quote:Zet er eens haakjes omheen:
Op die manier veranderd er niets aan je query en de resultaten, dat kun je testen. Maar nu zie je wel dat die OR er buiten valt. Je wilt iets hebben als:
of
Dus je moet even opzoeken hoe woorden als AND, OR, IN, enz... nu precies werken. | ||||||||||||||
Tiemie | dinsdag 16 december 2008 @ 09:29 | |||||||||||||
quote:Dat zijn aliassen, ik had het meer over OR ipv. IN gebruiken. Overigens vind ik het raar dat je geen andere manier van joinen zou mogen gebruiken.... Als je iets op school krijgt en jij gaat je daar zelf meer in verdiepen, is dat alleen maar positief lijkt me ![]() | ||||||||||||||
Chandler | dinsdag 16 december 2008 @ 10:36 | |||||||||||||
quote:Nou het is meer dat fora's hun zoek resultaten opslaan op een of andere manier. bv van http://forums.xxxx/search.html http://forums.xxxx/search.php?searchid=15215485 waarbij er dan een x aantal zoekitems worden opgeslagen! | ||||||||||||||
GlowMouse | dinsdag 16 december 2008 @ 10:51 | |||||||||||||
Dat gaat als volgt: zoekstring, id's van de threads waarin de zoekstring gevonden is en de rechten van de zoeker (en evt. nog wat andere dingen) sla je op, en daarna klun je dat zo hergebruiken wanneer iemand over dezelfde rechten beschikt en op hetzelfde zoekt. | ||||||||||||||
Chandler | dinsdag 16 december 2008 @ 10:55 | |||||||||||||
Ok, maar die sla je op in een tijdelijk tabel oid? (nog nooit met tijdelijke tabellen gewerkt ![]() | ||||||||||||||
GlowMouse | dinsdag 16 december 2008 @ 11:23 | |||||||||||||
Lees dan eerst maar eens wat een tijdelijke tabel is, en bedenk hoe die jou hierbij kan helpen. | ||||||||||||||
JortK | dinsdag 16 december 2008 @ 11:54 | |||||||||||||
quote:Kijk dan hier ook eens ![]() | ||||||||||||||
slacker_nl | dinsdag 16 december 2008 @ 12:16 | |||||||||||||
quote:spam ![]() | ||||||||||||||
Chandler | dinsdag 16 december 2008 @ 16:01 | |||||||||||||
Ja eingelijk wel een beetje spam, want heel veel extra info is er niet te vinden, wel handig is inderdaad dat de tabel verdwijnt als de gebruiker zich afmeld (disconnects) Maar ik ga eerst eens druk doorlezen ![]() | ||||||||||||||
Catbert | dinsdag 16 december 2008 @ 16:07 | |||||||||||||
quote:Beetje bizar dat je het wel met een subquery wil/mag doen maar niet met een join. Een join is voor de database een stuk meer straightforward dan een subquery. MySQL ondersteunt subqueries ook nog niet heel lang. | ||||||||||||||
GlowMouse | dinsdag 16 december 2008 @ 16:11 | |||||||||||||
Dit is gewoon Theta vs. ANSI style join, en die laatste is een stuk duidelijker ![]() | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 17:30 | |||||||||||||
quote:Dat klopt, maar op de toets moet ik het ook zo opschrijven, dus zonder die andere JOIN soorten enz. dus wil ik het liefst nog niet meerdere vormen kennen als dat helemaal nog niet noodzakelijk is, anders raak ik straks helemaal in de war bij de toets ![]() ![]() | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 17:44 | |||||||||||||
Ik wil dus een overzicht van de deelnemers (voornaam, achternaam, geboortedatum) aan reis 2007076 maken. Ik heb de volgende query in mijn PHP..
En ik krijg de volgende error:
In mijn localhost database staat gewoon het veld reiscode in de tabel reis :S ? Het begint nu wel het MYSQL voor Kerol topic te worden ![]() ![]() | ||||||||||||||
GlowMouse | woensdag 17 december 2008 @ 17:45 | |||||||||||||
Weet jij wat backticks doen? | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 17:47 | |||||||||||||
Iemand op MSN zei laatst tegen mij dat het beter was om zulke backquotes te gebruiken ipv de ', omdat het zo overzichtelijker lijkt ofzo ![]() | ||||||||||||||
GlowMouse | woensdag 17 december 2008 @ 17:50 | |||||||||||||
Normaalgesproken gebruik je ze helemaal niet, alleen als je ambiguïteiten hebt. Als jij bijvoorbeeld een kolom hebt die voornaam.achternaam heet (waar zowel voor- als achternaam in staan, vaak een slecht design maar dit terzijde), en jij doet SELECT voornaam.achternaam FROM tabel, dan denkt MySQL dat jij het veld achternaam uit de tabel voornaam zoekt. Met backticks eromheen werkt het wel: SELECT `voornaam.achternaam` FROM tabel. | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 18:04 | |||||||||||||
Dus jij bedoelt dat met deze backticks er gezocht word naar een tabel reservering.reiscode ipv het veld reiscode van de tabel reservering? | ||||||||||||||
GlowMouse | woensdag 17 december 2008 @ 18:06 | |||||||||||||
Nee, omdat je niet iets.iets opgeeft, zoekt hij gewoon naar de kolom reservering.reiscode. | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 18:19 | |||||||||||||
Dus eigenlijk moet het 'gewoon' zo? (wat overigens ook niet werkt.. Unknown column 'klant.klantnr' in 'field list' Wat doe ik nu weer fout? ![]() | ||||||||||||||
GlowMouse | woensdag 17 december 2008 @ 18:47 | |||||||||||||
De tabel staat niet in je FROM. | ||||||||||||||
Kerol | woensdag 17 december 2008 @ 18:52 | |||||||||||||
quote: ![]() | ||||||||||||||
Irix | donderdag 18 december 2008 @ 00:01 | |||||||||||||
Hmm even iets wat volgens mij vrij makkelijk is. Ik heb de volgende tabel. Hierin komen steeds waardes te staan die vooraf niet bekend zijn. id code date creator map fscore ascore Nu zou ik willen weten hoe ik bijvoorbeeld de naam van diegene die het meeste voorkomt bij creator willen krijgen. Hetzelfde geldt voor map. Welke map komt het vaakste voor in de tabel? Zoals gezegd kan ik niet van tevoren weten welke naam de creator heeft of welke map, ik kan dus niet bijvoorbeeld tellen WHERE map = 'bla'. SQL AVG heb ik geprobeerd maar dit werkt niet omdat het niet het niet numeriek is. Een tip in de goede richting mag ook. Iets anders: ik zou bijvoorbeeld de hoogste waarde van fscore + ascore willen krijgen. Ik heb geprobeerd: SELECT (MAX(fscore) + MAX(ascore)) as "Highest salary" FROM ur_games maar dan neemt hij de max waarde van fscore in de gehele kolom en max ascore uit de gehele kolom, terwijl ik wil dat er alleen de hoogste fscore + ascore uit een game gehaald worden. Voorbeeld: ID 1 fscore 10 ascore 5 ID 2 fscore 4 ascore 9 Ik wil nu als output krijgen: 10 5 en niet 10 9. Heeft iemand een hint? | ||||||||||||||
GlowMouse | donderdag 18 december 2008 @ 00:08 | |||||||||||||
Bij 1: kijk naar SELECT map,COUNT(*) FROM table GROUP BY map Bij 2: kijk naar MAX(fscore+ascore) Let op dat wanneer je tabellen groot worden, deze queries erg traag worden. Die tweede kun je dan heel veel sneller maken door een aparte kolom te maken en daarin de som op te slaan, en die te indexeren. | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 00:11 | |||||||||||||
om de humor van php te delen ![]() [ Bericht 2% gewijzigd door cablegunmaster op 18-12-2008 01:05:41 ] | ||||||||||||||
markiemark | donderdag 18 december 2008 @ 11:36 | |||||||||||||
ik heb een timestamp als geboortedatum. 152492400 bijv. Hoe bereken ik hiermee de leeftijd van deze persoon? heb nu zoiets als
maar dat is niet 100% accuraat natuurlijk. ivm schrikkeljaren e.d. | ||||||||||||||
GlowMouse | donderdag 18 december 2008 @ 11:49 | |||||||||||||
Je moet bedenken hoe je zo'n functie zelf zou noemen. Datediff wellicht? Als op 'php datediff' zoekt, kom je de vreselijkste functies tegen. | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 14:30 | |||||||||||||
ik zat te bedenken hoe kan ik in de array 1 opschuiven als ik hardcoded 1 regel toevoeg? of er 1 toevoegen ![]() [ Bericht 0% gewijzigd door cablegunmaster op 18-12-2008 14:37:02 ] | ||||||||||||||
slacker_nl | donderdag 18 december 2008 @ 14:35 | |||||||||||||
Waar ga je je array met 1 opschuiven? Je hebt een array met arrays, iets meer duidelijkheid graag. | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 14:38 | |||||||||||||
quote:de array erbinnen in wil ik 1 opschuiven. ![]() dus als ik nog een naam kamer nummer telnr opgeef dat hij nog een array toevoegt. | ||||||||||||||
slacker_nl | donderdag 18 december 2008 @ 14:45 | |||||||||||||
Ahh, dan moet je docent array uit de functie gehaald worden (wat soieso verstandig is..) Je zou zoiets kunnen doen:
Daarna gewoon je shizzle met $docent doen.
Dit moet je nooit doen, je gaat nu bij elke iteratie opnieuw een count uitvoeren, als je array een size heeft van 100, zal ie 100x count() uitvoeren. Beter doe je dit:
Maar aangezien je loopt over een array kan je ook een foreach gebruiken:
[ Bericht 23% gewijzigd door slacker_nl op 18-12-2008 14:54:13 ] | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 14:54 | |||||||||||||
je bedoelt dat je dan ipv al die extra arrays docent als 1 array aanmaakt en er telkens een regel docent eronder maakt? zoals docent 0 array (blablabla) docent 1 array (blablabla) maar als je $k++ toevoegt in regel 5 tussen die haakjes dan krijg ik een error. | ||||||||||||||
slacker_nl | donderdag 18 december 2008 @ 14:57 | |||||||||||||
Jep dat bedoel ik, en dat bedoel jij ook:
Kijk maar.. | ||||||||||||||
WyriHaximus | donderdag 18 december 2008 @ 15:00 | |||||||||||||
Zit ff met indexes te kutten maar wat is nou het verschil tussen 1 index per kolom en meerdere kolommen in 1 index? | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 15:22 | |||||||||||||
ik snap je niet helemaal meer slacker_nl
| ||||||||||||||
GlowMouse | donderdag 18 december 2008 @ 15:27 | |||||||||||||
$k++ levert gewoon een getal op. Dit is toch geen valide php-code?
| ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 15:29 | |||||||||||||
quote:je bedoelt dat de tel nr leeg is ? ![]() ![]() ik heb het gevoel alsof ik toch iets vergeet ![]() ik ga dit wel even doorlezen http://www.homeandlearn.co.uk/php/php17p4.html ![]() [ Bericht 12% gewijzigd door cablegunmaster op 18-12-2008 15:39:02 ] | ||||||||||||||
GlowMouse | donderdag 18 december 2008 @ 15:37 | |||||||||||||
Nee, ik bedoel dat jij een array in een array op wilt slaan. Dat doe je zo:
In PHP heb je gewoon nooit een $var[1](iets), nouja, of je moet hele gekke code schrijven ![]() | ||||||||||||||
slacker_nl | donderdag 18 december 2008 @ 15:43 | |||||||||||||
Ik zie dat je het niet snapt ![]() Je haalt wat dingen door elkaar.
Dit kan je op 3 manieren herschrijven, methode 1 is door de functie die ik je gaf te gebruiken:
Of zoals je het eerst deed:
Of manier 3 (en eigenlijk ben je dan manier 1 aan het uitvoeren, zonder de functie call): [pcp] $docent[] = array("naam"=>"Luc de Haan", "kamernummer"=>"215","telnr"=>"213", "vak"=>""); [/php] $array[] is hetzelfde als array_push alleen ietwat sneller (aangezien je geen functie call uitvoert), maar array_push kan meerdere elementen toevoegen aan een array:
Maar let op!! $docent ga je niet initialiseren in de functie zelf, want dan "bestaat" $docent niet meer buiten je functie! zie http://nl.php.net/variables.scope
Maar waar je in beide gevallen rekening mee moet houden is dat je $docent na elke call op mijnfunctie weer opnieuw een array wordt, gevuld van 1-5... Ik pas nu een kleine truc toe waardoor het wel buiten de functie bestaat (http://nl.php.net/manual/en/language.references.php).
$k++ is niks meer dan een counter, en dat kan je overal voor gebruiken. Je kan ook wat toevoegen aan een array door het zo te doen:
Maar dan is de array[] of array_push() methode beter/makkelijker/minder omslachtig. Ik zou heel even de documentatie omtrent arrays doorspitten om beter te begrijpen wat je ermee kan doen en hoe je ze kan manipuleren, http://nl.php.net/manual/en/book.array.php en http://us2.php.net/manual/en/language.types.array.php Succes! [ Bericht 50% gewijzigd door slacker_nl op 18-12-2008 15:54:12 ] | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 16:17 | |||||||||||||
ik denk dat ik het wel snap met toevoegen maar ik krijg het gevoel dat ik dan een for each moet gebruiken om alle waarde's weer te geven. en dat mijn for ($k = -1; $k < $max; $k++) niet meer de lading dekt om de nieuwe array's weer te geven ![]() | ||||||||||||||
slacker_nl | donderdag 18 december 2008 @ 17:38 | |||||||||||||
Die forloop zou gewoon moeten werken.. alleen moet je niet bij -1 moeten beginnen aangezien een sequentiele array bij zero based is (oftewel, de eerste value heeft 0 als index). Je kan overigens beter foreach($docent as $leraar) { echo "Naam van leraar is " . $leraar['naam'] . "\n" } doen. Werkt makkelijker (IMO). Met print_r() en/of vardump() kan je zien wat er in je variable zit.. Handig bij het debuggen/troubleshooten van problemen ![]() | ||||||||||||||
cablegunmaster | donderdag 18 december 2008 @ 19:28 | |||||||||||||
laat mij over dit nadenken ![]() snapte het eerst niet, maar begint steeds duidelijker te worden ![]() | ||||||||||||||
markiemark | dinsdag 23 december 2008 @ 10:09 | |||||||||||||
ik wil de waarden in een array sorteren. De eerste waarde is de waarde waar op gesorteerd moet worden. De array ziet er als volgt uit:
Hoe sorteer ik mijn array op rank? | ||||||||||||||
slacker_nl | dinsdag 23 december 2008 @ 10:36 | |||||||||||||
http://nl.php.net/asort en/of soortgelijke functies. | ||||||||||||||
SEMTEX | dinsdag 23 december 2008 @ 17:22 | |||||||||||||
TVP ![]() | ||||||||||||||
hamkaastosti | dinsdag 23 december 2008 @ 17:30 | |||||||||||||
oi ![]() Ik probeer een mvc framework in elkaar te klussen (jaja wiel opnieuw uitvinden e.d. ik weet het.) nu heb ik de volgende sites op internet gevonden: http://www.sitemasters.be(...)VC_pattern_uitgelegd http://www.phpro.org/tutorials/Model-View-Controller-MVC.html en toen ben ik wat gaan prutsen. Inmiddels werkt m'n router en m'n registry en heb ik 2 controllers voor m'n index en een gastenboek (bijvoorbeeld. als ik guestbook/view invul kom ik netjes in de functie view van de class guestbook. So far so good maar nu gaat het over de models en de views. Hoe zitten de bestanden van de models en de views in elkaar en hoe en waar verwerk ik de _POST variabelen. Heeft er iemand toevallig een site of een e-book met een duidelijker voorbeeld. Ik zie in die maffe voorbeelden door de bomen het bos niet meer. | ||||||||||||||
mcDavid | zaterdag 27 december 2008 @ 17:32 | |||||||||||||
ik krijg mijn switch niet werkend:
Hij doet het alleen als $ua exact 'blaat' is, niet als 'blaat' ergens halverwege staat... (dan voert'ie de default actie uit) iemand een idee? | ||||||||||||||
GlowMouse | zaterdag 27 december 2008 @ 17:36 | |||||||||||||
quote:Is het hier niet zo dat de 'doe wat' bij veel cases sterk op elkaar lijkt, en je dus met een array met speciale user-agents beter af bent? | ||||||||||||||
mcDavid | zaterdag 27 december 2008 @ 17:40 | |||||||||||||
euh ja dat is wel zo... hoe stel je je dat voor? | ||||||||||||||
GlowMouse | zaterdag 27 december 2008 @ 17:42 | |||||||||||||
| ||||||||||||||
Tiemie | zaterdag 27 december 2008 @ 17:44 | |||||||||||||
quote:De functie strstr returned de string die die gevonden heeft. (de string die je zoekt ;) ) Deze is anders dan de string die je meegeeft aan de switch.
| ||||||||||||||
mcDavid | zaterdag 27 december 2008 @ 18:00 | |||||||||||||
Ah beiden bedankt! ik zie nu wat ik fout deed, en denk tevens dat de methode van GM idd handiger is in dit geval! -edit- mochten julle geinteresseerd zijn in wat stats: http://duft.nl/avatars/browsers.php ![]() [ Bericht 29% gewijzigd door mcDavid op 28-12-2008 01:53:48 ] | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 21:05 | |||||||||||||
het is me gelukt met de for while methode, en je tel waarde op te slaan in een variabele dankje slacker_nl pixel respect ![]() | ||||||||||||||
Tijn | zondag 28 december 2008 @ 21:23 | |||||||||||||
quote:Leuk ![]() | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 22:10 | |||||||||||||
mijn bedoeling was dat als de waarde erin leeg was dat hij dan onbekend weergaf. maar hij geeft niks weer variabele $onbekend = onbekend ; maar dat lukt niet om een onbekende reden iemand een idee? ![]() | ||||||||||||||
SuperRembo | zondag 28 december 2008 @ 22:26 | |||||||||||||
isset() geeft ook true als het element in de array een lege string is. | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 22:35 | |||||||||||||
quote:ipv dat hij aangeeft dat het waar is false? als er niks in zet met empty()? ![]() | ||||||||||||||
mcDavid | zondag 28 december 2008 @ 22:39 | |||||||||||||
je kunt gewoon if ($variable) {//doe iets} doen! | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 22:40 | |||||||||||||
quote:heb hem al opgelost met empty ![]() | ||||||||||||||
SuperRembo | zondag 28 december 2008 @ 22:52 | |||||||||||||
empty() is een irritante functie die om allerlei wazige redenen true kan geven: The following things are considered to be empty: Vooral dat empty("0") true geeft is waardeloos. | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 23:29 | |||||||||||||
quote:het ging hier om tekst en als ik een van deze bovenste wil gebruiken wat kan ik dan gebruiken? ![]() | ||||||||||||||
Light | zondag 28 december 2008 @ 23:49 | |||||||||||||
quote:Ik zou het moeten testen, maar volgens mij is er geen verschil tussen if($var) { echo '1'; } en if(!empty($var)) { echo '1'; } | ||||||||||||||
Breuls | zondag 28 december 2008 @ 23:50 | |||||||||||||
Vergeet vooral de type comparison tables niet: http://nl.php.net/manual/en/types.comparisons.php Altijd handig als je 't niet meer weet. ![]() | ||||||||||||||
cablegunmaster | zondag 28 december 2008 @ 23:58 | |||||||||||||
quote:http://www.deformedweb.co.uk/php_variable_tests.php zat erbij ![]() ![]() op naar submit dinkies ![]() ![]() [ Bericht 11% gewijzigd door cablegunmaster op 29-12-2008 00:19:14 ] | ||||||||||||||
Light | maandag 29 december 2008 @ 00:27 | |||||||||||||
quote:Ah, dan hoef ik het niet meer te testen ![]() | ||||||||||||||
ursel | maandag 29 december 2008 @ 11:35 | |||||||||||||
Ik ben voor een nieuw project eigenlijk op zoek naar 2 verschillende "taken/functies". Zo hebben we een proces wat verbinding legt met een externe partij. Echter komt het regelmatig voor dat we bij de eerste paar checks een verzameling antwoorden terug krijgen. Aan de hand hiervan filteren we wat en doen we een nieuw verzoek met een deel van deze gegevens. Echter is in het huidige proces al gebleken dat in een aantal exotische gevallen dit gehele proces behoorlijk tijd rovend kan zijn, omdat er continue verzamelingen antwoorden terug keren. Wat ik in het nieuwe project eigenlijk wil bewerkstelligen is dat het proces zelf gewoon door blijft lopen, maar dat er naar de gebruiker toe in ieder geval een melding komt hierover. Een 2e geval is of er een soort van "event-listener" bestaat voor PHP. Waar ik naar op zoek ben is een functionaliteit dat als er een bestand in een bepaalde map gezet wordt, dat er dan een proces gestart wordt. Momenteel worden er elke minuut de folder gecontroleerd, maar volgens mij moeten er hier veel betere oplossingen voor zijn. Mocht het niet duidelijk zijn, vraag het gerust. Uitleggen is niet mijn sterkste kant.. ![]() ![]() | ||||||||||||||
Likkende_Lassie | maandag 29 december 2008 @ 18:38 | |||||||||||||
Kort vraagje!: PHP heeft toch zo'n mooie functie om in een array karakters te zetten, zodat je ze niet allemaal hoeft te typen? $A_to_Z = functie(A,Z); hoe heet die functie ook alweer?? ![]() | ||||||||||||||
Light | maandag 29 december 2008 @ 18:42 | |||||||||||||
quote:Bedoel je deze? | ||||||||||||||
Likkende_Lassie | maandag 29 december 2008 @ 18:49 | |||||||||||||
Ja! bedankt! | ||||||||||||||
GlowMouse | maandag 29 december 2008 @ 19:00 | |||||||||||||
quote:Kun je toch een script maken dat continu in de achtergrond draait en statusinfo stuurt naar een database? quote:Nee dat lukt niet. Je kunt om de zoveel tijd de inhoud van die map opvragen of het proces dat het bestand in die map zet aanpassen om jouw script aan te roepen. | ||||||||||||||
SuperRembo | maandag 29 december 2008 @ 19:12 | |||||||||||||
quote:In .NET gaat dat super simpel met een FileSystemWatcher ![]() | ||||||||||||||
ursel | maandag 29 december 2008 @ 21:59 | |||||||||||||
quote:Mja, dat is eigenlijk wat we nu dus hebben. Echter als dus deze "exotische" samenstelling voorbij komt kan dat de rest van het systeem dus ook ophouden. Ik wilde er eigenlijk meer naar werken dat voor elke aanroep het proces gaat draaien, zodat deze andere niet op kunnen houden als er oponthoud is. Maar volgens mij zit ik idd lastiger te denken als nodig is. Ga morgen wel ff wat mee stoeien quote:Mja, zoals we nu dus ook al doen dus. ![]() ![]() | ||||||||||||||
ursel | maandag 29 december 2008 @ 22:00 | |||||||||||||
quote:De suggestie kwam inderdaad ook van een .Netter.. ![]() | ||||||||||||||
#ANONIEM | dinsdag 30 december 2008 @ 23:51 | |||||||||||||
*skop*
Als ik dit run zie ik de maand nummers niet. Iemand die ziet wat ik fout doe? | ||||||||||||||
GlowMouse | dinsdag 30 december 2008 @ 23:54 | |||||||||||||
quote: | ||||||||||||||
#ANONIEM | dinsdag 30 december 2008 @ 23:57 | |||||||||||||
quote:De tering hey, hoe moet ik dat nou weten ![]() Bedankt! | ||||||||||||||
Roy_T | woensdag 31 december 2008 @ 15:05 | |||||||||||||
quote:Erm... door de docs te lezen incl. comments? Die staan er niet voor de lol onder ![]() | ||||||||||||||
Likkende_Lassie | donderdag 1 januari 2009 @ 19:00 | |||||||||||||
Even heel erg ontopic, heeft iemand een afbeelding van een winkelwagen, maar dan zo'n grotere, zoals bij de makro en andere groothandels. Maar dan wel als getekend plaatje, in het klein! | ||||||||||||||
mcDavid | donderdag 1 januari 2009 @ 19:17 | |||||||||||||
quote:http://images.google.nl/images?q=winkelwagentje | ||||||||||||||
Likkende_Lassie | donderdag 1 januari 2009 @ 20:55 | |||||||||||||
Helaas vind ik hem daar niet tussen, maar heb al een goed alternatief kunnen vinden. ![]() Andere vraag: Ik heb een array uit een database met allemaal producten. Nu geef ik de klant de mogelijkheid te filterten op a tm z, welke bovenaan de pagina staan als volgt: bekijk alle producten - A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Nu is het niet altijd zo dat er onder G iets te vinden is, enz. In zo'n geval wil ik G als onklikbaar instellen. Nu kan ik natuurlijk een while loop maken en indien er geen product met de beginletter G wordt gevonden, iets uitvoeren. Maar als er veel producten in de array zitten, wordt het misschien toch iets te traag. Bijkomend probleem is, dat als er een letter is gekozen, de array slechts alleen producten bevat die beginnen met de gekozen letter... misschien een idee om de beschikbare letters ergens op te slaan? | ||||||||||||||
GlowMouse | donderdag 1 januari 2009 @ 21:04 | |||||||||||||
Cachen inderdaad ![]() | ||||||||||||||
Light | donderdag 1 januari 2009 @ 21:12 | |||||||||||||
quote:Dat idd. En MySQL heeft ook een functie die het leven wat makkelijker kan maken. | ||||||||||||||
Database | donderdag 1 januari 2009 @ 22:16 | |||||||||||||
quote:Ik zou zeer zeker neit gaan opslaan welke letters een product bevatten tenzij de producten stabiel zijn en er maar weinig nieuwe producten bijkomen/weggaan/veranderen van naam. Wat je kan doen is je producten opslaan in een dictioary (2d array) van letters naar arrays van producten. Dus $producten["a"][0] geeeft het eerst product dat met een a begint. Zo kan je met een count($producten["x"]); zien hoeveel producten er zijn die met letter x beginnen. | ||||||||||||||
GlowMouse | donderdag 1 januari 2009 @ 22:20 | |||||||||||||
quote:Waarom niet? Hoe denk je dat de verhouding opvragen/aanpassen is? quote:Hoe denk je dat dat werkt als er, zeg, 10.000 producten zijn? | ||||||||||||||
Database | donderdag 1 januari 2009 @ 23:11 | |||||||||||||
quote:Omdat dit een bron is van bugs. Je krijgt hier code van wat slecht onderhoudbaar is omdat je moet weten/onthouden dat wanneer je een de naam van een product wijzigt, een nieuw product toevoegt of een product verwijderd, dat je dan ook je extra tabel moet updaten. Normaal gesproken is het gewoon bad practice. Plus dat het queryen van een database veel meer overhead geeft dan code uitvoeren. quote:Ik snap niet wat je bedoelt? Het opbouwen van je dictioary kost lineair meer werk met het aantal producten dat je hebt. Een specifiek item opzoeken gaat sneller als je de productnaam weet (omdat het aantal items wat je dan moet doorzoeken ongeveer 1/26ste is vergeleken bij een lange een dimensionale array). En aangezien je maar 1 keer opbouwt en waarschijnlijk meerdere keer opzoekt, zie ik - met alle respect - het probleem van 10.000 producten niet. | ||||||||||||||
#ANONIEM | donderdag 1 januari 2009 @ 23:26 | |||||||||||||
quote:True. Dit pattern zie je wel vaker bij grote datacollecties. | ||||||||||||||
GlowMouse | donderdag 1 januari 2009 @ 23:44 | |||||||||||||
quote:Het probleem is dat je dat lineair meer tijdrovende klusje op jouw manier bij elke request moet doen. Ten eerste moet de gebruiker langer wachten, ten tweede krijgt je server een probleem als je wat meer bezoekers krijgt. Bij een request wil je gewoon snel de producten hebben die alleen met een bepaalde beginletter beginnen, eventueel ook alleen die op een bepaalde pagina voorkomen als je paginering gebruikt. Die andere producten wil je niet eerst in een arraytje stoppen, je wilt gewoon snel weten of ze bestaan. En als bij het groeien van je dataset de rekentijd lineair toeneemt, wil je gewoon dingen cachen als je op den duur ook daadwerkelijk veel producten krijgt, bijna onafhankelijk tegen welke prijs. | ||||||||||||||
Light | vrijdag 2 januari 2009 @ 00:12 | |||||||||||||
quote:In het kader van normalisatie is het idd niet handig om informatie dubbel op te slaan. Aan de andere kant is het ook weer niet zo dat je moet onthouden wat er allemaal moet gebeuren bij het aanpassen/toevoegen/verwijderen van een product. Daar kun je immers een leuke API voor schrijven. (En als je dat goed doet, kun je naderhand de hele opbouw aanpassen zonder elders in de code te moeten rommelen.) quote:Ik denk dat het aantal zoekacties laag is. Het blijft wel PHP, dus aan het eind van het script is al je harde werk verloren gegaan. De kans dat je meer dan 1 keer gaat zoeken lijkt me dan niet zo groot. En als je een lijst wilt hebben van alle beginletters en van alle producten die met de letter C beginnen, dan is het wat overkill om alle producten uit de database te trekken. | ||||||||||||||
Light | vrijdag 2 januari 2009 @ 00:17 | |||||||||||||
quote:Gebruiken die ook PHP/MySQL? | ||||||||||||||
HuHu | vrijdag 2 januari 2009 @ 09:32 | |||||||||||||
quote:Dat lijkt mij inderdaad een goede oplossing:
| ||||||||||||||
Tijn | vrijdag 2 januari 2009 @ 13:07 | |||||||||||||
quote:Er zijn genoeg grote websites met flinke datasets die PHP en/of MySQL gebruiken, waaronder Facebook, Wikipedia, Yahoo!, Digg, Flickr, Google en YouTube. | ||||||||||||||
Likkende_Lassie | vrijdag 2 januari 2009 @ 13:15 | |||||||||||||
Bedankt voor jullie reacties. Het zal in totaal misschien wel gaan om 500.000 producten, welke onderverdeelt zijn in categorien. Zodra er een categorie is gekozen, is het mogelijk om een keuze te maken uit de begin letter. Ik kan gewoon een functie maken die ik elke keer gebruik zodra er wijzigingen worden doorgevoerd in de database. Cachen dus. Hoe zien jullie hier de tabel opbouw voor ? Ik zelf dacht aan: cat_ID, letter_ID. Het is namelijk zo dat er per categorie een cache zal moeten zijn, van de beschikbare producten, en niet van de producten. Anders wordt het natuurlijk wel weer als er gezocht gaat worden, en er ook een mogelijkheid moet zijn van het kiezen van een begin letter.... | ||||||||||||||
Likkende_Lassie | vrijdag 2 januari 2009 @ 13:27 | |||||||||||||
Die array met het resultaat van DISTINCT(SUBSTRING(name, 1, 1)), daar heb ik de functie array_unique(); over laten gaan. Ik kan ook eventueel deze array voor een aantal minuten laten cachen via memcached. Als er geen array in memcached voor komt, dan kan ik hem laten genereren.... goed idee? | ||||||||||||||
GlowMouse | vrijdag 2 januari 2009 @ 13:30 | |||||||||||||
quote:Want de elementen zijn nog niet uniek vóór array_unique()? quote:Nee, zijn er alsnog mensen die lang op hun request wachten. quote:Caches moet je niet te moeilijk over doen, serialized array in de categorieëntabel in een extra kolom is het makkelijkste. | ||||||||||||||
Likkende_Lassie | vrijdag 2 januari 2009 @ 17:12 | |||||||||||||
quote:Toch wel, dacht het niet uniek terug te krijgen.. De cache is opgeslagen en werkt primá! bedankt! | ||||||||||||||
GlowMouse | vrijdag 2 januari 2009 @ 17:19 | |||||||||||||
quote:Dat is opmerkelijk, waar denk je dat DISTINCT voor dient? | ||||||||||||||
Light | vrijdag 2 januari 2009 @ 18:23 | |||||||||||||
quote:Dat weet ik ![]() | ||||||||||||||
Likkende_Lassie | vrijdag 2 januari 2009 @ 18:42 | |||||||||||||
quote:Ja die doet hetzelfde, maar toen ik de code teste, en een print_r() deed, stonden er dubbele waardes in. Later toen ik dit weer deed, was dit niet het geval. Of ik heb me vergist ![]() | ||||||||||||||
Database | vrijdag 2 januari 2009 @ 23:37 | |||||||||||||
quote:Voor hele grote datasets is dat misschien makkelijker, maar dan moet je echt huge datasets hebben. En 500k records vind ik daar niet onder vallen. Ik denk (maar weet niet zeker) dat het queryen van een database om een simpele tabel op te halen langzamer is (gemeten uit php, niet rechtstreeks op je (my)sql) dan het bouwen van zon array. Maar nogmaals ik heb al tijden geen php gedaan. In .net weet ik zeker dat het sneller is gezien het daar (bijna) native draait. Ik zal zo wel even een testje draaien om te timen. | ||||||||||||||
GlowMouse | vrijdag 2 januari 2009 @ 23:44 | |||||||||||||
quote:Ik zal je helpen: op een vrij vlotte server die een tabel met 1 miljoen records geheel in zijn geheugen heeft staan duurt de SELECT DISTINCT-methode 2.7 seconden en de PHP-methode zonder twijfel langer (je hebt het dan aan megabytes aan data die je databaseserver bij elke request uit moet spugen). Creëren van die array kost dus ook 2.7 seconden (want de tijd die je daarna in PHP nodig hebt is verwaarloosbaar) en hoeft eenmalig. Daarna kun je hem direct gebruiken bij elke request; zelfs als je hem met een aparte query op moet halen zal dat minder dan 1/100ste van een seconde kosten, als hij in het geheugen staat zelfs minder dan 1/1000ste. | ||||||||||||||
Database | zaterdag 3 januari 2009 @ 00:22 | |||||||||||||
quote:Je hebt idd gelijk, het ophalen van 10000 records is de helft korter vergeleken met het doen van 10.000 assignments. Lang leve .net ![]() | ||||||||||||||
GlowMouse | zaterdag 3 januari 2009 @ 00:28 | |||||||||||||
quote:Welke 10.000 records haal je op, en welke assignments doe je? Arraytje steeds groter maken kost gewoon tijd, ook in .NET als je de grootte elke keer aan moet passen. | ||||||||||||||
Database | zaterdag 3 januari 2009 @ 00:52 | |||||||||||||
quote:Query was: $sql = "SELECT * FROM test WHERE id > 0" Returned 10.000 2 kolom-rijen met een id en een md5 hash van de rij-id. En mn forloop deed $a[$i] = $i. Je hoeft de grootte neit elke keer aan te passen in dit geval gezien je een array van lists kan maken. Grootte van je array weet je (26). Grootte van list kan je benaderen met grootte van je resultset/26 (of je kan t iets nauwkeuriger doen). Dus daar komt ook weinig overhead bij kijken. Als je t echt goed wil doen kan je je array op je stack alloceren ipv op je heap, dan heb je helemaal dikke performance. Net bijna dezelfde forloop gedraaid in .net, daar kan ik in 2.0 seconden (minder dan 2.7 dus) 100 miljoen keer casten, een modulo doen en assignen.
Je haalt in 2.0 seconden no way 100 miljoen records uit een database. Ik denk dat in zo'n geval het maken van een dictionary vele malen voordelig is dan een query naar je database. Dat was eigenlijk ook mijn insteek in mijn eerste post, maar ja php performed gewoon crappy :9 Wat maakt t eigenlijk ook allemaal uit! Alsof het hier om high-performance systemen gaat :p | ||||||||||||||
Roy_T | zaterdag 3 januari 2009 @ 02:05 | |||||||||||||
quote:Memcached anyone? ![]() | ||||||||||||||
cablegunmaster | zaterdag 3 januari 2009 @ 17:24 | |||||||||||||
hoe var dump ik dit? | ||||||||||||||
GlowMouse | zaterdag 3 januari 2009 @ 17:31 | |||||||||||||
quote:Moet je die wel hebben draaien en is er nog steeds één request die er lang over doet. quote:Wat bedoel je? | ||||||||||||||
cablegunmaster | zaterdag 3 januari 2009 @ 17:58 | |||||||||||||
quote:ik krijg de variable niet goed van getal1 en getal 2 hij telt niet op als ik op ok druk. dus vraag ik me af hoe ik dit nu moet oplossen en vraag ik me ook af hoe ik een var dump van post variabele maak. want vardump($post)werkt niet. | ||||||||||||||
GlowMouse | zaterdag 3 januari 2009 @ 18:08 | |||||||||||||
De variabele heet dan ook niet $post of $_post maar $_POST. En de functie niet vardump maar var_dump. | ||||||||||||||
cablegunmaster | zaterdag 3 januari 2009 @ 18:59 | |||||||||||||
quote: hartelijk bedankt ![]() ![]() hoofdletters ![]() | ||||||||||||||
Roy_T | zaterdag 3 januari 2009 @ 20:12 | |||||||||||||
quote:Dat geldt voor iedere extensie natuurlijk. Wil je afbeeldingen resizen, dan zul je ook GD ofzo moeten hebben draaien. En wil je json_encode gebruiken in PHP < 5.2.3, dan zul je dat ook moeten installeren. Je kunt de cache overigens prima vullen wanneer er een product wordt toegevoegd bijvoorbeeld, zodat er nooit iemand hoeft te wachten op een lange request. Ik heb verschillende apps gebouwd die met een cron eenmaal per dag kijken wat er nieuw is, dat in memcached opslaan en klaar. | ||||||||||||||
GlowMouse | zaterdag 3 januari 2009 @ 20:25 | |||||||||||||
quote:En wil je PHP gebruiken...Helaas krijg je bij weinig hosters de beschikking over memcached. Bij shared hosting ben ik het nog nooit tegengekomen, waarschijnlijk omdat er geen authenticatie is. quote:Dat eerder cachen werd eerder al gesuggereerd als oplossing, alleen niet icm memcached. Memcached is hiervoor niet zo heel erg goed omdat het zomaar dingen weg kan mikken als het geheugen vol zit. En als je al MySQL hebt, waarom zou je dat niet gebruiken? Voor de performance hoef je het niet te laten. | ||||||||||||||
Roy_T | zondag 4 januari 2009 @ 11:49 | |||||||||||||
quote:Dat is waar. Ik werk nooit binnen shared hosting omgevingen, dus daar had ik niet aan gedacht ![]() quote:Dat ligt helemaal aan de architectuur uiteraard. In het artikel waar je naar verwijst hebben ze het over een cluster van databases waar de data sharded wordt opgeslagen. Daar hebben de meesten uiteraard ook geen mogelijkheid toe. Memcached kan inderdaad vol raken en de oudste data weggooien, maar daar ben je zelf bij natuurlijk. De app waar ik het over had moet iedere dag een paar MB aan data opslaan (en gedurende die dag gebruiken), terwijl er 1 GB aan ruimte gereserveerd is voor memcached. Dan heb je dat probleem nooit. Wat mij betreft dus allebei prima oplossingen, afhankelijk van de architectuur. Maar als je geen memcached hebt en op een shared host draait, dan kun je eigenlijk niets anders dan je database gebruiken (of file caching, maar dat zou niet mijn voorkeur hebben) ![]() | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 12:29 | |||||||||||||
Ik ben op het moment bezig met een login scriptje, maar raar genoeg werkt deze niet.. Ik heb in mijn database een kolom MEMBERS met de velden username en wachtwoord. Raar genoeg krijg ik aldoor "U heeft geen goede combinatie van emailadres en wachtwoord gebruikt." te zien terwijl de username en password die ik invoer in mijn inlogscherm zeker weten correct zijn. Ziet iemand de fout die ik maak??
| ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 12:39 | |||||||||||||
MEMBERS is een tabel, geen kolom. Om die stripslashes zou ik nog een check doen of magic_quotes_gpc wel aan staat. Wat denk je dat $result voorstelt, dat je hem met 1 vergelijkt? | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 12:43 | |||||||||||||
$result ==1 is om te controleren of er 1 rij uit de query komt, wat betekent dat de username bestaat in de database, in geval van 0 rijen krijg je de melding dat er geen goede combinatie is. Meer dan 1 rij kan ook niet uit de query komen omdat de username uniek is. | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 12:46 | |||||||||||||
Dus $result stelt het aantal rijen in het resultaat voor zeg je? Klopt niet helaas. $result is bij jou wat mysql_query teruggeeft, en dat is een resource:quote: | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 12:59 | |||||||||||||
En hoe kan ik dan ervoor zorgen dat de resultaten wel in een rij komen te staan? Met mysql_fetch_row? | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 13:01 | |||||||||||||
quote:Je kunt die resource weer aan een andere functie voeren, zoals deze. Waarom vraag je eigenlijk zoveel gegevens op uit je database terwijl je alleen maar wilt weten hoeveel rijen er voldoen aan jouw criterium? | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 13:08 | |||||||||||||
Wat bedoel je met zoveel gegevens? Ik vraag nu alleen aan de database of de username en password zich bevinden in de database. Verder niets toch? Of is dat niet wat je bedoelt.. | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 13:12 | |||||||||||||
quote:Jij vraagt alle kolommen op uit de tabel members (via SELECT * ), dus in ieder geval krijg je een gebruikersnaam en wachtwoord terug die je toch al kent. Heb je niks aan dus. [ Bericht 5% gewijzigd door GlowMouse op 04-01-2009 13:17:55 ] | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 13:14 | |||||||||||||
Hij controleert nu toch juist of die username en wachtwoord in de database staan zodat de gebruiker kan inloggen? | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 13:15 | |||||||||||||
quote:Dat klopt, maar je vraagt veel meer informatie op dan je nodig hebt. | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 13:40 | |||||||||||||
-edit- o wacht | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 13:43 | |||||||||||||
Dus eigenlijk moet ik gewoon een count gebruiken?
| ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 13:46 | |||||||||||||
Dat is hier het beste ja ![]() | ||||||||||||||
Kerol | zondag 4 januari 2009 @ 13:59 | |||||||||||||
Ik krijg nog steeds aldoor de melding: 'U heeft geen goede combinatie van emailadres en wachtwoord gebruikt. '
Wat doe ik nu nog verkeerd? | ||||||||||||||
jeroen2497 | zondag 4 januari 2009 @ 14:00 | |||||||||||||
Vraagje: Ik heb deze query & code:
- Er wordt niet gesorteerd op de volgorde van $extra_Q. Ziet iemand wat er 'fout' is ? [ Bericht 4% gewijzigd door jeroen2497 op 04-01-2009 14:07:40 ] | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 14:07 | |||||||||||||
quote:Ik zie geen ORDER BY. En zonder ORDER BY kun je de rijen in elke willekeurige volgorde terugkrijgen. De volgorde waarin je id's in een WHERE opgeeft wordt niet gebruikt voor de sortering. quote:In $result staat nog steeds een resource, en niet de waarde voor count(*). | ||||||||||||||
jeroen2497 | zondag 4 januari 2009 @ 14:08 | |||||||||||||
quote:Maar normaalgesproken is het toch zo dat als ik een serie ID's opgeef, hij ze in de opgegeven volgorde laat zien? Want hier kan ik volgens mij geen order by voor gebruiken? | ||||||||||||||
Roonaan | zondag 4 januari 2009 @ 14:10 | |||||||||||||
quote:mysql_query geeft niet het resultaat van count terug, maar een resultset. Je moet de eerste row nog fetchen met $row = mysql_fetch_row($result) en dan $row[0] == 1 checken. Overigens twijfel ik of count(*) wel het snelste is op mysql vlak Mogelijk is onderstaande query nog sneller, met als bijkomende voordeel dat je de member id in je session kan gooien. SELECT id FROM members WHERE username='$myusername' and password='$mypassword' LIMIT 1 $result = mysql_query($query); $row = mysql_fetch_assoc($result); if($row) { //valide record, met $row['id'] = member id } | ||||||||||||||
jeroen2497 | zondag 4 januari 2009 @ 15:04 | |||||||||||||
quote:Kan ik anders niet de array's naast elkaar laten lopen ofzo? ![]() | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 15:25 | |||||||||||||
quote:Mijn edit gezien? Ik weet niet wat je bedoelt, maar als de volgorde zo belangrijk is, zul je dat later in PHP moeten regelen. | ||||||||||||||
jeroen2497 | zondag 4 januari 2009 @ 15:33 | |||||||||||||
quote:Had ik niet gezien ![]() Wat ik bedoel, ik heb een array met de juiste volgorde van ID's. Vervolgens krijg ik ook een array van mysql terug, welke ik in een while loop heb. Hoe vertel ik PHP dat er een bepaalde volgorde moet worden aangehouden? | ||||||||||||||
GlowMouse | zondag 4 januari 2009 @ 15:36 | |||||||||||||
quote:Je krijgt ze in de volgorde waarin MySQL ze aanlevert, dus die sla je op in een array met als key dat ID. Daarna loop je met een foreach door de array waarin de ID's op juiste volgorde staan en vraag je aan de hand van dat ID weer de bijbehorende tijdelijk opgeslagen MySQL-resultaatrij op. | ||||||||||||||
jeroen2497 | zondag 4 januari 2009 @ 15:44 | |||||||||||||
goeie, ff proberen! - edit - werkt prima zo! Heb namelijk een winkelmandje, en de producten kwamen er door elkaar in... niet echt handig natuurlijk. [ Bericht 79% gewijzigd door jeroen2497 op 04-01-2009 16:00:17 ] | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 20:25 | |||||||||||||
't Is meer een html-ding, maar goed. Als ik een waarde uit een database haal dit ik in een tekstbalk wil zetten, en daar staan quotes in, dan gaat het op html gebied mis.
Hoe fix ik dat? Is " de enige optie? | ||||||||||||||
Tijn | zondag 4 januari 2009 @ 20:30 | |||||||||||||
quote:Je zou het zo kunnen doen:
Met htmlentities() convert PHP de quotes naar de HTML-code (en alle andere speciale karakters waarvoor een HTML-code bestaat). Dan heb je dit probleem niet meer. Je zou ook de functie addslashes() kunnen gebruiken, dan worden de quotes geescaped met een slash en voorkom je dit probleem ook. | ||||||||||||||
Light | zondag 4 januari 2009 @ 21:02 | |||||||||||||
quote:htmlentities() is wel de nettere oplossing van de twee. | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 21:17 | |||||||||||||
Maar ik wil alleen de quotes doen. De rest wordt al voor gezorgd namelijk. En met htmlentities wordt het een zootje. Slashes werkt niet in het htmlgedeelte (tenminste, toen ik het probeerde kapte hij het alsnog af na de quote). | ||||||||||||||
Tijn | zondag 4 januari 2009 @ 21:19 | |||||||||||||
quote:Is htmlspecialchars() misschien wat je zoekt? Die zet maar een kleine subset van de hele HTML-specialchars set om. Je zou zelf een functie kunnen schrijven die van dubbele quotes bijvoorbeeld HTML-entities of enkele quotes ofzo maakt. Dat zou ook je probleem moeten oplossen. quote:Hoe had je het toen gedaan? | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 21:55 | |||||||||||||
Gewoon met addslashes(); Ik vind het zo raar, je zou toch ook gewoon een tekstbalk moeten kunnen maken in puur html met een quote erin? | ||||||||||||||
Tijn | zondag 4 januari 2009 @ 21:59 | |||||||||||||
quote:Ik heb het net ff zelf geprobeerd en blijkbaar kun je in HTML geen slashes escapen. M'n browser print gewoon de slash en daarna stopt 'ie. Dus dan heeft addslashes() ook geen zin. quote:Nee, dat kan niet. Je zult de HTML-code of een ander type quotes moeten gebruiken. [ Bericht 1% gewijzigd door Tijn op 04-01-2009 22:43:04 ] | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 22:37 | |||||||||||||
Dom. Nou ja, dan weet ik dat. Heb het nu "opgelost" met javascript omdat ik daar toch al mee bezig was, maar als het nog een keer voorkomt, zal ik het onthouden. | ||||||||||||||
Tijn | zondag 4 januari 2009 @ 22:43 | |||||||||||||
quote:Maar dan hebben bezoekers zonder Javascript dus een niet-werkende site? | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 23:38 | |||||||||||||
quote:Ja. Maar dat hadden ze sowieso al ![]() | ||||||||||||||
Roy_T | zondag 4 januari 2009 @ 23:50 | |||||||||||||
quote:Dus nu valideert je HTML niet meer. Lekker handig debuggen ![]() | ||||||||||||||
wonderer | zondag 4 januari 2009 @ 23:53 | |||||||||||||
quote:Ik weet het ![]() Ik ben er ook niet blij mee, maar het is een site die maar door twee personen gebruikt wordt (ik en iemand anders) dus HEEL erg is het niet. Maar ik wilde het ook even weten voor als ik opnieuw tegen een vergelijkbaar probleem aanloop (huidige probleem is on the fly bewerken van tekst in een chatbox), bijvoorbeeld met een forum waar je de titel van een topic bij elk reply houdt of zo. Ik noem maar wat. Ik zal toch niet de enige zijn die tegen het probleem aanloopt. | ||||||||||||||
Roy_T | maandag 5 januari 2009 @ 00:29 | |||||||||||||
quote:Maar zoveel moeite is het toch niet om htmlspecialchars() te gebruiken? | ||||||||||||||
wonderer | maandag 5 januari 2009 @ 00:44 | |||||||||||||
quote:Op de een of andere manier werkte het niet (je zag " staan in plaats van ") en ik heb tot nu toe geen tijd/zin gehad om uit te gaan zoeken waarom. | ||||||||||||||
Roy_T | maandag 5 januari 2009 @ 02:30 | |||||||||||||
quote:Kijk eens in je source. Ik gok op dubbel escapen, waardoor er & amp;quot; komt te staan. edit: lekkere brakke escaping hier op Fok!, aangezien 'ie van & amp; gewoon "&" maakt. | ||||||||||||||
Flaccid | maandag 5 januari 2009 @ 16:45 | |||||||||||||
Ik wil snel een lijstje van alle tijden tussen 0:00 en 24:00, met een half uur of kwartier er tussen 0:00 0:30 1:00 enz. Hoe kan ik dit makkelijk doen? 0:00 0:15 0:30 0:45 1:00 enz | ||||||||||||||
Roy_T | maandag 5 januari 2009 @ 16:56 | |||||||||||||
"een lijstje" == een array? Een string? | ||||||||||||||
Database | maandag 5 januari 2009 @ 17:04 | |||||||||||||
quote:
zoiets ![]() | ||||||||||||||
Flaccid | maandag 5 januari 2009 @ 18:03 | |||||||||||||
quote:Thanks | ||||||||||||||
GlowMouse | maandag 5 januari 2009 @ 21:25 | |||||||||||||
Met sprintf kun je voorloopnullen toevoegen.
| ||||||||||||||
Light | maandag 5 januari 2009 @ 21:32 | |||||||||||||
quote:Maar $i en $j zijn integers, geen floats. Dus kun je %02d gebruiken ipv %02.0f. Korter en duidelijker ![]() | ||||||||||||||
cablegunmaster | dinsdag 6 januari 2009 @ 01:25 | |||||||||||||
welke is beter te gebruiken en waarom? hele discussie welke je kan gebruiken. mij is de 1e geleerd. alleen het kan ook met de 2e waarom ? heeft het voordelen nadelen? | ||||||||||||||
CasB | dinsdag 6 januari 2009 @ 01:35 | |||||||||||||
Ik gebruik de bovenste, om het leesbaar(der) te houden. | ||||||||||||||
MCootje | dinsdag 6 januari 2009 @ 07:34 | |||||||||||||
ik gebruik de eerste; het schijnt sneller te zijn. je kunt voor een array ook echo("array-veld: {$array['veld']}");, maar ".$array['veld']." is sneller, is mij verteld. Ik weet het verder ook niet, maar er zit wel een beetje logica achter, want het is de normale manier, en die 2 "in-text" variabelen zijn denk ik een beetje van php alleen en natuurlijk is het wel wat overzichtelijker, zeker als je met een zwart-wit editor werkt mvg Marco | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 09:26 | |||||||||||||
quote:Allebei even goed en voor zover ik weet ook even snel, maar gebruik in het eerste geval dan wel enkele quotes ipv dubbele quotes, aangezien dubbele quotes geen nut hebben wanneer je er geen $vars in zet ![]() | ||||||||||||||
Tijn | dinsdag 6 januari 2009 @ 09:30 | |||||||||||||
quote:Ik dacht dat enkele quotes sneller zijn dan dubbele omdat PHP de inhoud van de quotes dan niet hoeft te parsen. | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 10:13 | |||||||||||||
quote:Dat bedoelde ik met "maar gebruik in het eerste geval dan wel enkele quotes ipv dubbele quotes" (iets te impliciet misschien). Het klopt inderdaad dat enkele quotes sneller zijn. Het scheelt niet veel en zorgt niet voor een trage app, maar in het kader van "nette code" moet je imo enkele en dubbele quotes gebruiken waar ze voor verzonnen zijn (dus alleen dubbele quotes wanneer er iets in staat wat geparsed moet worden, zoals een $var of /n newline ofzo). | ||||||||||||||
SuperRembo | dinsdag 6 januari 2009 @ 10:41 | |||||||||||||
quote:Ik denk dat het eerste script waarbij het een merkbaar verschil in snelheid oplevert nog in deze reeks gepost moet worden. | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 10:45 | |||||||||||||
quote: Ik zou gaan voor het tweede, waarom zou je "dit" . $dat . "daar"; syntax gebruiken als dubbele quotes values expanden, wat dus gebeurd in "dit $dat daar"; Verder valt het snelheidsverschil echt mee tussen de ' en " bij het parsen. Zie Vraag over loginsysteem Je zal zien dat single quotes de ene keer sneller zijn dat de dubbele quotes en omgekeerd. Heb je echt veel "dat" . $dit . "daar" constructies dan zou ik voor (s)printf functies gaan: $val = sprintf("dit %s daar", $dat); Dat is pas echt leesbaar. | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 10:58 | |||||||||||||
quote:Nee, dat vind jij ![]() Ik vind het ranzig om het door die functie te gooien "voor de mooi" (en zelfs dat niet imo), en daarmee volledig nutteloze overhead te creëren. Persoonlijk gebruik ik ook altijd 'string' . $var . 'string' voor de leesbaarheid, omdat je dan in één oogopslag ziet waar een $var staat. Maar ieder z'n meug natuurlijk ![]() | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 11:03 | |||||||||||||
Ik wordt echt helemaal leip van "dit" . $dat . "daar" . $zo . "en " . $zus . "constructies"; dat vind ik lelijk, onleesbaar etc etc. Dan is "dit $dat daar $zo en $zus constructies" vele malen leesbaarder. En sprintf is gewoon leesbaarder plus je kan netjes uitlijnen ed. printf("%-20s echt vet", "Dat is pas"); Maar smaken verschillen inderdaad. | ||||||||||||||
Tuvai.net | dinsdag 6 januari 2009 @ 11:13 | |||||||||||||
Ik zie ook veel liever
Veel beter onderscheid tussen 'platte' en 'functionele' tekst / variabelen. Veel andere programmeertalen werken overigens niet met de methode uit mijn tweede voorbeeldstukje. In bijvoorbeeld C(#) kun je ook niet zomaar een variabelenaam in een string knallen. Niet meer dan logisch natuurlijk. ![]() | ||||||||||||||
#ANONIEM | dinsdag 6 januari 2009 @ 11:14 | |||||||||||||
quote:IDE`s vinden dat ook veul mooier, kijk maar naar de kleurverschillen ![]() | ||||||||||||||
Tuvai.net | dinsdag 6 januari 2009 @ 11:15 | |||||||||||||
quote:NotePad++ vindt het inderdaad niet zo fijn om alles maar in stringvorm te parsen. ![]() | ||||||||||||||
Light | dinsdag 6 januari 2009 @ 11:17 | |||||||||||||
quote:Dan is er nog altijd het argument dat je voor het typen van ' geen shift nodig hebt, en voor het typen van " wel. Gemak dient de mens, en ik ga niet onnodig " gebruiken als ' volstaat. ![]() | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 11:17 | |||||||||||||
quote:Klopt, al zou je IDE's en code editors nog wel zo kunnen tweaken dat 'ie een $var binnen dubbele quotes een ander kleurtje geeft. En het is een stukje gewenning uit andere talen, zoals Tuvai al aangeeft. Ik programmeer niet alleen in PHP en ben gewend dat je een $var niet zomaar in een string kan knallen. Maar PHP geeft ook weinig om data types uiteraard (rekenen met strings ![]() | ||||||||||||||
Tuvai.net | dinsdag 6 januari 2009 @ 11:22 | |||||||||||||
Sowieso voorkom je voor jezelf als programmeur zo onnodige fouten. Ik had laatst nog iemand op MSN die me vroeg waarom zijn script 'niks deed outputten'. Kwam het op het volgende neer:
Wat had deze meneer echter gedaan:
Oftewel, PHP gaat zoeken naar variabele $varhehe en vindt uiteraard niks. Ik vind het gewoon een slordige gewoonte, alles maar als stringetjes te parsen. PHP zou dat eigenlijk niet moeten toelaten, dat doet het gros van de andere 'grote' programmeertalen ook niet. Ik zie het derhalve als een soort van automatische foutcorrectie voor slechte programmeurs. | ||||||||||||||
#ANONIEM | dinsdag 6 januari 2009 @ 11:28 | |||||||||||||
quote:Eensch ![]() | ||||||||||||||
Kerol | dinsdag 6 januari 2009 @ 12:07 | |||||||||||||
Ik wil de geheime vraag van een gebruiker tonen als deze zijn wachtwoord vergeten is. Probleem is dat ik elke keer Je geheime vraag: 'Resource id #3' als antwoord krijg en niet de échte geheime vraag zoals die in de database staat. Waarom krijg ik Resource id #3????
| ||||||||||||||
Light | dinsdag 6 januari 2009 @ 12:09 | |||||||||||||
quote:Eens. Volgens mij kan het in de meeste andere talen ook niet, omdat ze niet eisen dat een variabele met een bepaald teken (bijvoorbeeld $) begint. En als je variabelenaam gewoon een aantal letters is, zoek dan de variabele maar eens tussen de andere letters. | ||||||||||||||
GlowMouse | dinsdag 6 januari 2009 @ 12:09 | |||||||||||||
mysql_query($query) geeft niet de vraag terug maar een resource. Je moet die vraag nog opvragen, bijvoorbeeld met mysql_result. | ||||||||||||||
HuHu | dinsdag 6 januari 2009 @ 12:09 | |||||||||||||
Omdat $result een Resource is die de MySQL resultaten bevat. Kijk eens naar iets als: http://nl2.php.net/mysql_fetch_assoc | ||||||||||||||
Tuvai.net | dinsdag 6 januari 2009 @ 12:19 | |||||||||||||
quote:1) $resource is gewoon jouw uitvoer van de functie mysql_query(). Je doet verder nog niks met deze uitvoer/query. zoek eens op mysql_fetch_array() of mysql_fetch_assoc(). 2) mysql_num_rows() is een erg achterhaalde functie. 3) Je script is erg vatbaar voor SQL Injection; je gebruikt immers rechtstreeks een variabele die gebruik maakt van een $_POST waarde zonder hier ook maar enige controle op uit te voeren. | ||||||||||||||
Kerol | dinsdag 6 januari 2009 @ 12:22 | |||||||||||||
Thanks all ![]() | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 12:32 | |||||||||||||
quote:Dat los je gewoon op dmv ${var}hehe of zoals php het ook toestaat iirc: {$var}hehe. | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 12:57 | |||||||||||||
quote:Vooral dit is een goede Kerol. Want wat zal er gebeuren als iemand als username "';DELETE FROM `members` WHERE 1 OR `username` = '" invult? Juist, dan krijg je dit...
En weg zijn al je members :) | ||||||||||||||
GlowMouse | dinsdag 6 januari 2009 @ 12:58 | |||||||||||||
quote:Lees de documentatie bij mysql_query eens goed ![]() | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 14:05 | |||||||||||||
quote:Details ![]() Ondanks dat dit inderdaad niet werkt, is het natuurlijk wel degelijk gevaarlijk om data richting je query niet te escapen (dat weet jij ook wel, maar ik stress het even voor Kerol ![]() | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 14:53 | |||||||||||||
Daarom gebruik je PDO... | ||||||||||||||
Tijn | dinsdag 6 januari 2009 @ 14:54 | |||||||||||||
quote:Helaas zijn er teveel hosts die dat niet ondersteunen, net als mysqli. | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 14:56 | |||||||||||||
Dan ga je weg bij die hosters, maak duidelijk dat je weggaat omdat ze die features niet ondersteunen en dan gaan ze vanzelf wel een keer die meuk ondersteunen. Of doe zoals ik, huur je eigen doos. | ||||||||||||||
Tijn | dinsdag 6 januari 2009 @ 15:09 | |||||||||||||
quote:Dat is leuk gezegd, maar je hebt niet altijd invloed op het platform waar je applicatie op wordt geïnstalleerd. | ||||||||||||||
slacker_nl | dinsdag 6 januari 2009 @ 16:35 | |||||||||||||
Dat betekend overigens wel dat je hoster geen PHP 5.x draait. Das alleen al reden genoeg om naar een andere hoster over te stappen of te adviseren om te zoeken naar een andere hoster. | ||||||||||||||
Roy_T | dinsdag 6 januari 2009 @ 20:41 | |||||||||||||
quote:Jij hebt het steeds over hosters, Tijn over platformen. Een hoster host wel op een bepaald platform, maar een platform hoeft nog niet bij een host te horen. Ik heb bijvoorbeeld een klant die naast enkele honderden servers met PHP5 ook nog honderden bakken heeft met PHP4, puur omdat er ook legacy spul op draait (en zo nog meer redenen). Die hebben uiteraard geen host, maar een eigen team van systeembeheerders met daarboven weer architecten. Ik kan nog zo graag PHP5 willen, maar als ik daar op een cluster met PHP4 kom dan breng ik er niets tegenin ![]() | ||||||||||||||
MCootje | woensdag 7 januari 2009 @ 17:08 | |||||||||||||
Misschien zit PDO dan wel bij PHP 5 standaard, maar wat nou als de hoster het er uit haalt? Doen er ook zat. En in PHP 6? Er gaan geruchten dat mysql_* en mysqli_* dan niet meer bestaan.... ai daar gaat je website. Wat doe je dan? Misschien alleen voor de meer gevorderde, maar je maakt een eigen database-klasse, los van welk database-systeem je hebt. Je kunt hierbij denken aan functies als select(), edit(), count(), insertedID(), etc.. en daar verwerk je een functie in, die je query beveiligd: array select(string $query, array $variables) daar kun je het beveiligen, als je PDO hebt is dat simpel, als je geen PDO hebt met mysql_real_escape_string() of intval(), net erna welk type het is. gaan we nu even kijken: Je hebt het in PDO gemaakt en je zet het over naar een host zonder PDO...even scriptje omzetten en je hebt het. Je hebt het met mysql_* gemaakt en je wilt het in PDO hebben, want je wilt overgaan naar PHP 6...even scriptje omzetten..... zie je? veel handiger ![]() Hopelijk hebben sommigen er iets aan ![]() mvg Marco Dit bericht is niet gericht op een persoon, maar als algemene informatie als toevoeging bij het huidige onderwerp. Eventuele opmerkingen die je persoonlijk kunt opvatten moet je zo dus niet opvatten. | ||||||||||||||
Roy_T | woensdag 7 januari 2009 @ 17:17 | |||||||||||||
Ik denk dat velen hier al een dergelijke abstractielaag gebruiken (zelf geschreven, of omdat ze een framework gebruiken) ![]() | ||||||||||||||
jeroen2497 | donderdag 8 januari 2009 @ 07:29 | |||||||||||||
Ik heb een vraag mbt de bouw van een webshop. Hoe zouden jullie de data van een bestelling in de database opnemen? Een tabel met; - klant_nummer, product_nummer, prijs - klant_nummer, product_nummer, product_naam, product_gewicht, prijs Het voordeel van optie 2 is dat als er een productnaam wordt gewijzigd (of zelfs verwijderd), dat alle info wel in de bestelling blijft staan. Het gaat om flink wat bestellingen per dag. Graag jullie idee hier over!! | ||||||||||||||
GI | donderdag 8 januari 2009 @ 07:32 | |||||||||||||
Ik zou gaan voor optie twee, al zijn product_naam en product_gewicht natuurlijk enigzins redundante datum en zou je als een product wijzigt eigenlijk een nieuw product moeten toevoegen aan de database en het oude product een 'niet actief' tag mee moeten geven. Maar dat hangt van je hele datamodel af. | ||||||||||||||
Chandler | donderdag 8 januari 2009 @ 11:17 | |||||||||||||
Weet iemand zo even uit zijn mouw te schudden hoe je middels een query (mysql) gebruikers kunt vinden waarbij de gebruikersnamen beginnen met een cijfer (0-9). Met letters lukt simpel LIKE 'B%' maar ik wil nu alle gebruikers die gebruikersnamen hebben met 0-9 | ||||||||||||||
HuHu | donderdag 8 januari 2009 @ 11:20 | |||||||||||||
WHERE lala REGEXP '^[0-9].*' | ||||||||||||||
GI | donderdag 8 januari 2009 @ 11:20 | |||||||||||||
Das wel een complexe functie die lala | ||||||||||||||
HuHu | donderdag 8 januari 2009 @ 11:22 | |||||||||||||
quote:Geen idee, ik ben niet zo goed in regular expressions. Of zit ik helemaal fout met dat 'ie REGEXP moet gebruiken? | ||||||||||||||
Tiemie | donderdag 8 januari 2009 @ 11:24 | |||||||||||||
quote:met REGEXP in MySQL =edit= casten levert teveel 0-en op ![]() | ||||||||||||||
GI | donderdag 8 januari 2009 @ 11:26 | |||||||||||||
Ik deed bijdehand met het noemen van het veld 'lala' verder zou ik het niet weten en ben ik een regexp n00b. | ||||||||||||||
Chandler | donderdag 8 januari 2009 @ 11:29 | |||||||||||||
quote:Werkt idd perfect, had zelf een andere versie met % maar dat werkte natuurlijk niet ![]() | ||||||||||||||
GlowMouse | donderdag 8 januari 2009 @ 11:36 | |||||||||||||
Je kunt denk ik ook WHERE veld BETWEEN '0' and '9' gebruiken. Als het werkt, kan het in ieder geval gebruik maken van indices, hoewel ik niet denk dat je daar winst mee boekt tenzij er weinig gebruikers zijn die hun username met een getal laten beginnen. | ||||||||||||||
Tuvai.net | donderdag 8 januari 2009 @ 12:17 | |||||||||||||
quote:Nee dus. | ||||||||||||||
GlowMouse | donderdag 8 januari 2009 @ 12:20 | |||||||||||||
quote:'9adsf' gaat fout ![]() | ||||||||||||||
Database | donderdag 8 januari 2009 @ 13:18 | |||||||||||||
quote:Ik zou voor het eerste gaan om de volgende reden: Als de naam van je product (typo) of prijs verandert, en je hebt een link naar je productnummer, wordt da overal weer correct aangepast. Afhankelijk van de situatie wil je dan de prijs wel/niet aanpassen. Ik denk dat je in zon geval bij bestellingen de prijs aan wil passen, en als een bestelling betaald is (dan is het ook geen bestelling meer maar een factuur) dat je alles wil fixeren. Data redundant opslaan blijft imo ![]() En natuurlijk kan je na x jaar je productentabel opschonen door alle inactieve dingen van meer dan x jaar oud weg te gooien. | ||||||||||||||
Roy_T | donderdag 8 januari 2009 @ 13:43 | |||||||||||||
Ik zou het wel redundant opslaan, en dezelfde tabel gebruiken voor "bestellingen" en "facturen". Het is namelijk precies hetzelfde, alleen is bij de ene "payed" false en bij de andere true. Waarom zou je de prijs aan willen passen nadat een product besteld is maar nog niet geleverd? Stel dat je iets bestelt voor 10 euro, 10 minuten later maakt de admin dat product 20 euro en wanneer de bestelling wordt afgehandeld is de klant opeens het dubbele kwijt. Data redundant opslaan lijkt me in dit geval een duidelijk voordeel hebben: het is 100% gelijk aan het moment waarop er besteld werd. Ik zou overigens wel een aparte tabel maken voor orders (dus bestellingen), met hierin het klantnummer, afleveradres, status, etc. en een tabel met order_items (ofzo) die weer aan orders hangen. | ||||||||||||||
jeroen2497 | donderdag 8 januari 2009 @ 15:38 | |||||||||||||
quote:Ja, dat doe ik inderdaad ook ![]() Ziet er ongeveer zo uit: orders (order_id, klant_id, opmerkingen, timestamp) orders_items, (item_id, order_id, naam, prijs, opmerkingen) orders_gegevens (order_ID, factuur_adres, leverings_adres) Ik denk ook dat optie 2 het beste is, ben er normaal ook voorstander van dingen slechts éénmaal op te slaan, maar het is dan maar niet anders.... als er iets wijzigt is dat erg raar dat zoiets in je bestelgeschiedenis ook wordt doorgevoerd. Als een product wordt aangepast wegens een typfout, ja dan zou het wel mooi zijn als het overal kan worden doorgevoerd.....maar dat is niet nodig in dit geval. | ||||||||||||||
#ANONIEM | donderdag 8 januari 2009 @ 15:39 | |||||||||||||
quote:Dat dus. Bestellingen != Facturen, en daar moet je in je database al rekening mee hebben gehouden. | ||||||||||||||
Database | donderdag 8 januari 2009 @ 15:41 | |||||||||||||
quote:Besteld (dus in je winkelwagen) maar nog niet betaald, dan betaal je gewoon de actuele prijs. Volgens mij is dat gebruikelijk. Kijk maar naar amazon of bol. Als iets in je winkelwagen zit, maar nog niet betaald is. Daarnaast is een factuur niet hetzelfde als een bestelling wat betaald is aangezien een factuuradres anders kan zijn dan het bezorgadres. Sterker nog, real life is een bestelbon ook geen factuur en als je gaat modelleren wil je dat soort nuances ook in je model hebben. En tuurlijk er zijn altijd wel hacks te bedenken om twee verschillende beestjes een te maken (of andersom), maar omdat het kan en omdat het werkt wil het nog niet zeggen dat het goed is. Stel je gaat naar een winkel en plaatst een bestelling wat je over 5 dagen op kan komen halen. Je komt na 5 dagen je bestelling halen. De winkelier kan voor zijn eigen gemak en voor het milieu geen factuur maken maar jou bestelbon ondertekenen en erbij zetten dat het betaald is. Dat gebeurt toch ook niet..? En fraudegevoeligheid is echt niet de belangrijkste reden. | ||||||||||||||
#ANONIEM | donderdag 8 januari 2009 @ 15:44 | |||||||||||||
quote:En hoe wil jij de bestelgeschiedenis van iemand gaan bijhouden dan met optie 1? | ||||||||||||||
Database | donderdag 8 januari 2009 @ 15:47 | |||||||||||||
quote:Een persoon heeft 0 of meer facturen, een factuur heeft 1 of meer producten. Tadaam ![]() Op het moment dat iemand zijn bestelling heeft betaald wordt de bestelling weggegooid en wordt het een factuur. En in de factuur is naam & prijs wel gefixeerd. Ik ben het met jullie eens dat optie 2 de makkelijke manier is, maar optie 1 levert een meer waarheidsgetrouw model op. | ||||||||||||||
Tuvai.net | donderdag 8 januari 2009 @ 16:13 | |||||||||||||
Zoiets sla je stapsgewijs elke keer op. Je wilt toch niet een klant een product t.w.v. 10 euro in zijn winkelwagen laten stoppen, om het vervolgens door diezelfde klant te laten bestellen terwijl het 'opeens' 12 euro kost, om het ten slotte door die klant te laten afrekenen terwijl het 'opeens' 14 euro kost. ![]() | ||||||||||||||
ursel | donderdag 8 januari 2009 @ 16:17 | |||||||||||||
Daarnaast kan een bestelling ook wel eens gezien worden als offerte, welke vaak weer een duur van 14 dagen heeft ofzo. Dus als jij je prijs verhoogt, heeft de klant nog steeds recht op die prijs. Maar denk dat het per situatie wel kan schelen welke de beste insteek heeft. | ||||||||||||||
Roy_T | donderdag 8 januari 2009 @ 16:17 | |||||||||||||
quote:Dan is een "bestelling" voor ons beiden iets anders. Ik zou pas een "bestelling" van iets maken wanneer de order geplaatst wordt, en het tot die tijd alleen in de sessie of tijdelijk in een aparte tabel ofzo zetten. quote:Ik vind het geen hack. Je kunt wel alles naar real life willen modeleren, maar soms (en imo in dit geval) kun je hierbij gelukkig dingen die in real life niet kunnen. Jij hebt het over bestelbonnen en facturen, ik gewoon over "orders". En die zijn betaald of niet betaald (of hebben een andere status, zoals "wacht op akkoord" of whatever), en op basis van die status kun je een bestelbon, afleverbon, retourbon, RMA-formulier of een factuur genereren. Dat je in de supermarkt een bonnetje krijgt, wil niet zeggen dat er in hun boekhouding allemaal "bonnetjes" zitten. Dat zijn gewoon verkopen/orders, waarbij het bonnetje één van de vele mogelijke representaties van die order is. | ||||||||||||||
jeroen2497 | donderdag 8 januari 2009 @ 17:51 | |||||||||||||
Even voor de duidelijkheid, ik neem aan dat er in allebei de voorbeelden de prijs natuurlijk standaard zit. Het gaat mij meer om de naam, gewicht, beschrijving etc. | ||||||||||||||
cablegunmaster | donderdag 8 januari 2009 @ 17:54 | |||||||||||||
quote:Bestelling_nr , Klant_nummer, Productnummer, Product_naam,product_gewicht, Prijs primaire sleutel is bestelling_nr dit zodat een klant vaker 1 artikel kan bestellen. als je het helemaal mooi wil hebben; Facturen factuur_nr, Klant_nummer,gewenste_leverdatum,min_leverdatum,totaal_prijs, status ,betaald (ontvangen , niet ontvangen) verkooporder regel factuur_nr , Productnummer, Product_naam,aantal,product_gewicht, Prijs ![]() quote:orders kunnen ook anders worden weergegeven. order ( order_id, klant_nr,lever_adres,gewenste_leverdatum, bestelde_datum, status) orderregel ( order_id , item_id ,omschrijving, aantal , prijs ,opmerkingen) Prijs zet je op order regel zodat de klant niet na afloop duurder hoeft te betalen of goedkoper! dit om misverstanden te voorkomen. btw prijs is de prijs die op het moment van bestellen is gebruikt en niet zoals het in het artikelbestand staat ![]() en als ze verwerkt zijn update je ze naar het archief ![]() archief_order() archier_orderregel () zelfde velden ![]() [ Bericht 5% gewijzigd door cablegunmaster op 08-01-2009 18:30:32 ] | ||||||||||||||
LordNemephis | vrijdag 9 januari 2009 @ 10:02 | |||||||||||||
Is er ook iemand die tips heeft m.b.t. uploaden en converteren naar .FLV van filmpjes m.b.v. PHP? Ik las op het grote internet dat Ffmpeg daarvoor het meest geschikt zou zijn - iemand die dat kan bevestigen? Heb dat nog nooit gedaan en wil daar toch es mee aan de slag ![]() | ||||||||||||||
Roy_T | vrijdag 9 januari 2009 @ 10:58 | |||||||||||||
quote:PHP kan dat niet ![]() | ||||||||||||||
Tijn | vrijdag 9 januari 2009 @ 11:02 | |||||||||||||
FFMpeg is niet het beste programma om video's mee te recoden, maar het is in elk geval wel gratis en ondersteunt veel formaten. Je kunt het vanuit PHP makkelijk aanroepen omdat het een command line programma is. | ||||||||||||||
LordNemephis | vrijdag 9 januari 2009 @ 11:31 | |||||||||||||
quote:Ik weet dat PHP op zichzelf geen video's kan converteren. Ik zocht idd naar een OpenSource oplossing (lees: graties). Ffmpeg is dus wel een aanrader voor mij? | ||||||||||||||
Tijn | vrijdag 9 januari 2009 @ 11:33 | |||||||||||||
quote:Ja, gratis is er sowieso weinig anders te vinden op dit gebied. | ||||||||||||||
Gloeidoos | vrijdag 9 januari 2009 @ 14:55 | |||||||||||||
Heb weer eens een query vraagje. Stel ik heb in tabel a een kolom 'naam'. In tabel b is de primary key deze 'naam'. Verder staat in tabel b nog een kolom 'enabled' met de waarde 'Y' of 'N'. Als ik nu een query wil loslaten op a waarvoor geldt dat de 'enabled' op 'Y' staat in tabel b..
Dit werkt, maar het kan volgens mij ook met een join. Zouden jullie dit ook met een join doen, of zie ik nog een andere oplossing over het hoofd? | ||||||||||||||
HuHu | vrijdag 9 januari 2009 @ 14:58 | |||||||||||||
Wat je nu doet is hetzelfde als:
| ||||||||||||||
Gloeidoos | vrijdag 9 januari 2009 @ 15:11 | |||||||||||||
Dat bedacht ik me na het posten ook, het ziet er in ieder geval beter uit voor de queries die ik gebruik. | ||||||||||||||
Roy_T | vrijdag 9 januari 2009 @ 15:18 | |||||||||||||
quote:Tijd voor een lesje datatypes voor beginners ![]() Wat jij wilt is een boolean, en die sla je normaliter in een MySQL database op als integer met de waarde 1 (true) of 0 (false). | ||||||||||||||
Gloeidoos | vrijdag 9 januari 2009 @ 15:24 | |||||||||||||
quote:Ik heb de tables aangepast om het een beetje simpel te houden. In feite is het een kolomnaam met de naam state, enum('enabled','disabled'). Volgens mij komen hier uiteindelijk nog meer states bij, als dat nodig is. Maar voor booleans zal ik dan voortaan wel 0 en 1 gebruiken ![]() [ Bericht 8% gewijzigd door Gloeidoos op 09-01-2009 15:33:50 ] | ||||||||||||||
Wouser | vrijdag 9 januari 2009 @ 16:00 | |||||||||||||
quote:Zou voor geen van die beide gaan... zou voor het volgende gaan... - klant_nummer, product_nummer, status product_nummer, product_naam, product_gewicht en prijs zijn namelijk zaken die allemaal gerelateerd zijn aan het product waar je dus een aparte tabel voor hebt... en p.s. in status moet je dan bijvoorbeeld bij denken, in behandeling, verzonden, ontvangen etc... kortom de stappen die jou product maakt tot het bij de klant is. | ||||||||||||||
Light | vrijdag 9 januari 2009 @ 16:31 | |||||||||||||
quote:Of, nog een andere optie:
| ||||||||||||||
slacker_nl | vrijdag 9 januari 2009 @ 17:21 | |||||||||||||
quote:Kan je mij uitleggen wat er beter is aan: select * from a,b where a.id = b.pid and b.bla = 'Y'; en select * from a join b on a.id = b.pid where b.bla = 'Y'; ? | ||||||||||||||
Farenji | vrijdag 9 januari 2009 @ 18:10 | |||||||||||||
quote:Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden. | ||||||||||||||
Tiemie | vrijdag 9 januari 2009 @ 18:23 | |||||||||||||
quote:En ik vind het ook een stuk leesbaarder. | ||||||||||||||
PiRANiA | vrijdag 9 januari 2009 @ 18:38 | |||||||||||||
[PHP/(My)SQL] voor dummies - Deel 67 |