1 2 3 | var_dump(self::$message); ?> |
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOINquote:Op dinsdag 24 juli 2007 22:19 schreef Geqxon het volgende:
Weer een performance vraag, maar deze keer eentje met een groter effect. Alsin: 0.2 seconden versus 8 seconden.
Een simpele query, met een LEFT JOIN op een bookmarktabel. Nu wil ik dus graag alle nieuwsartikelen zien die de user gebookmarked heeft. Dus hop, de LEFT JOIN, en dan op de koppelende ID van de bookmarktabel een IS NOT NULL. Gaat zelfs over duizenden nieuwsartikelen prima, supersnel dus.
Nu wil ik zien welke nieuwsartikelen de user niet gebookmarked heeft. (For the record: Dit zijn er minder dan de wel gebookmarkte nieuwsartikelen). Dit doe ik door een IS NULL op het koppelend ID van de bookmark tabel te zetten. Probleem dus: Dit gaat vreselijk traag...
Zou dit misschien sneller op te lossen zijn? Ik weet dat JOINS traag kunnen zijn, en hiermee is dat duidelijk te zien.
Een INNER JOIN is een goede, ik bouw mijn querys altijd met MySQL PHP op waardoor ik nog niet zo "dynamisch" dacht.quote:Op woensdag 25 juli 2007 12:45 schreef JeRa het volgende:
[..]
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOINwat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
Bedankt, die nemen we mee.quote:Op woensdag 25 juli 2007 13:09 schreef JeRa het volgende:
@Geqxon
Je kunt altijd nog EXPLAIN gebruiken om erachter te komen wat MySQL intern doet om je query uit te voerenoutput van beide SELECTs kun je dan vergelijken.
quote:
Hm, ik had gedacht/gehoopt dat er een handigheidje voor was. Ik meende er iets over gelezen te hebben in de research van de afgelopen weken maar natuurlijk kan ik dat niet meer terugvinden. Dit lijkt me toch niet zo heel prettig voor een query met veel records...quote:
quote:Op woensdag 25 juli 2007 16:08 schreef wonderer het volgende:
[..]
[..]
Hm, ik had gedacht/gehoopt dat er een handigheidje voor was. Ik meende er iets over gelezen te hebben in de research van de afgelopen weken maar natuurlijk kan ik dat niet meer terugvinden. Dit lijkt me toch niet zo heel prettig voor een query met veel records... :{
Nou ja, bedankt ;)
1 2 3 4 5 | (SELECT COUNT(*) FROM employee e2 WHERE e2.emp_id <= e.emp_id AND e2.job_id = 10) AS rownumber FROM employee e WHERE job_id = 10 ORDER BY emp_id |
Daar snap ik geen reet van. Heb nu iets in elkaar geknutseld, kijken of dat werkt. Komt uiteindelijk toch op een while loop uitquote:Op woensdag 25 juli 2007 16:34 schreef Geqxon het volgende:
[..]
[ code verwijderd ]
bron
Ook een interresante methode
Je telt simpelweg het aantal records tot en met het record dat jij wilt hebben.quote:Op woensdag 25 juli 2007 21:04 schreef wonderer het volgende:
[..]
Daar snap ik geen reet van. Heb nu iets in elkaar geknutseld, kijken of dat werkt. Komt uiteindelijk toch op een while loop uitDat wou ik juist niet. Nou ja, aan de andere kant is het max aantal records waar hij doorheen moet 200, dat zal niet zoveel geheugen kosten toch?
Yeah, zo heb ik het nu. Ach ja, 't was het proberen waardquote:Op woensdag 25 juli 2007 21:30 schreef Geqxon het volgende:
[..]
Je telt simpelweg het aantal records tot en met het record dat jij wilt hebben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | session_start(); require('sql.php'); if (session_is_registered("sess_loginnaam") && session_is_registered("sess_id")) { header("Location: admin.php"); exit; } else { $user = DB_USER; $pass = DB_PASS; $host = DB_HOST; $dbdb = DB_DATABASE; // zet het tabel en de volgende pagina $table = "gebruikers"; // nieuws.php veranderen in je eigen volgende pagina $nextpage = "admin.php"; if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass))) { echo "Connectie met database mislukt."; exit(); } // check of de user op de 'login' knop heeft gedrukt en of $loginnaam en $paswoord niet leeg zijn if ($HTTP_POST_VARS["loginnaam"] && $HTTP_POST_VARS["paswoord"]) { /* haal login gegevens uit database en check de gegevens met de ingevoerde gegevens */ $HTTP_POST_VARS["paswoord"]=md5($HTTP_POST_VARS["paswoord"]); $sql_db = "SELECT id, loginnaam, paswoord FROM $table WHERE loginnaam = '$HTTP_POST_VARS[loginnaam]' AND paswoord = '$HTTP_POST_VARS[paswoord]'"; $res_db = mysql_query($sql_db); // check of er een overeenkomst is met ingevoerde en uitgelezen bestanden if (mysql_num_rows($res_db) >= 1) { // zet de values van database in een array $row = mysql_fetch_array($res_db); // zet de sessions $sess_id = $row[id]; $sess_loginnaam = $row[loginnaam]; // registreer ze session_register($sess_id); session_register($sess_loginnaam); // 3600, session_set_cookie_params(3600); echo "Je bent nu ingelogd. Klik <a href=$nextpage>hier</a> om verder te gaan."; } /* indien er geen overeenkomst is tussen ingevoerde en uitgelezen gegevens */ else { echo "Verkeerde loginnaam of paswoord<p>"; echo "Ga <a href="$PHP_SELF">terug</a> en probeer het opnieuw."; } } // indien er niet op de 'login' knop is gedrukt else { // formulier echo "<table border=0 cellspacing=0 cellpadding=5>"; echo "<form method=POST action=$PHP_SELF>"; // loginnaam veld echo "<tr><td>Loginnaam:</td></tr>"; echo "<tr><td><input type=text name=loginnaam></td></tr>"; // space echo "<tr><td> </td></tr>"; // paswoord veld echo "<tr><td>Paswoord:</td></tr>"; echo "<tr><td><input type=password name=paswoord></td></tr>"; // space echo "<tr><td> </td></tr>"; // submit knop echo "<input type=submit name=submit value=Login>"; // sluit form & tabel echo "</form>"; echo "</table>"; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | session_get_cookie_params(); session_start(); if (session_is_registered($sess_loginnaam)) { echo "session_is_registered" .$sess_loginnaam.""; } if (session_is_registered($sess_id)) { echo "session_is_registered" .$sess_id.""; } if (session_is_registered("sess_loginnaam") && session_is_registered("sess_id")) { echo "gelukt!"; // hier de pagina } else { echo "niet gelukt!"; // geen rechten, niet ingelogd melding } ?> |
dacht ik al jaquote:Op woensdag 25 juli 2007 23:19 schreef SuperRembo het volgende:
Ziet eruit als een nogal achterhaald php4.0 of nog ouder scriptje. Ik zou nog ff verder zoeken als ik jou was
hmz, dan moet ik wel ff zelf klooien met mysql enzo..quote:
quote:
ken jij betere tutorials?quote:Op woensdag 25 juli 2007 23:54 schreef WyriHaximus het volgende:
[..]
![]()
Password/Username in je cookie zetten Alles in een door de server schrijf baar bestand opslaan Direct $_POST data een cookie in gooien (zo word het wel erg makkelijk om een session na te maken) .php3 Rechstreeks via post vars in een bestand data kunnen toevoegen
Maar goed leuk voorbeeld als je wilt weten hoe het werkt maar niet als je het veilig wilt doen. Just my 2 cents
.
O fuck, nu lees ik het pas.quote:Op woensdag 25 juli 2007 23:54 schreef WyriHaximus het volgende:
[..]
![]()
Password/Username in je cookie zetten Alles in een door de server schrijf baar bestand opslaan Direct $_POST data een cookie in gooien (zo word het wel erg makkelijk om een session na te maken) .php3 Rechstreeks via post vars in een bestand data kunnen toevoegen
Maar goed leuk voorbeeld als je wilt weten hoe het werkt maar niet als je het veilig wilt doen. Just my 2 cents
.
Mijn persoonlijke opinie is dat sessies er enkel zijn voor als het browservenster open staat, en dat deze vervalt zodra de user het browservenster sluit.quote:Op donderdag 26 juli 2007 00:04 schreef wonderer het volgende:
Ik had er eentje van een YAP* site (ik weet niet meer precies welke het is) die wel goed is, geloof ik.
sessie-id opslaan in sessie/cookie, opslaan in database en koppelen aan IP. Da's redelijk veilig.
Niet uit me hoofd, ben gewend dingen zelf uit te vogelenquote:
quote:
Als je de link weet te vinden is qu63 erg blij met je denk ik zoquote:Op donderdag 26 juli 2007 00:04 schreef wonderer het volgende:
Ik had er eentje van een YAP* site (ik weet niet meer precies welke het is) die wel goed is, geloof ik.
sessie-id opslaan in sessie/cookie, opslaan in database en koppelen aan IP. Da's redelijk veilig.
ik ook, maar dit lukt nu ff nietquote:Op donderdag 26 juli 2007 00:09 schreef WyriHaximus het volgende:
[..]
Niet uit me hoofd, ben gewend dingen zelf uit te vogelen.
quote:Als je de link weet te vinden is qu63 erg blij met je denk ik zo.
Zo doe ik het ook. Alleen gebruik ik de sessID voor unieke string.quote:Op donderdag 26 juli 2007 00:09 schreef Geqxon het volgende:
[..]
Mijn persoonlijke opinie is dat sessies er enkel zijn voor als het browservenster open staat, en dat deze vervalt zodra de user het browservenster sluit.
Zelf werk ik met een RememberKey. Elke keer als de user een pagina opvraagt, dan krijgt hij een enkele cookie met een unieke string. Deze unieke string sla ik ook in mijn database op, samen met zijn IP-adres.
De user opent mijn pagina weer, klopt aan met de unieke string in zijn cookie. Ik kijk naar het IP-adres, de unieke string van het cookie, zoek het op in mijn database, é voila, daar tover ik een userid vandaan. Inloggen, klaar.
Volgens mij is ie offline. Het was een Nederlandse site met "yet another PHP ..." Ik weet niet meer wat er op de plek van de puntjes moet. Tutorial? Site? Zoiets. Was volgens mij een .net domain.quote:Op donderdag 26 juli 2007 00:09 schreef WyriHaximus het volgende:
Als je de link weet te vinden is qu63 erg blij met je denk ik zo.
Dat zullen er best wat zijn die aan die beschrijving voldoenquote:Op donderdag 26 juli 2007 00:25 schreef wonderer het volgende:
[..]
Volgens mij is ie offline. Het was een Nederlandse site met "yet another PHP ..." Ik weet niet meer wat er op de plek van de puntjes moet. Tutorial? Site? Zoiets. Was volgens mij een .net domain.
Moet je wel de domeinnaam wetenquote:Op donderdag 26 juli 2007 00:28 schreef WyriHaximus het volgende:
[..]
Dat zullen er best wat zijn die aan die beschrijving voldoen. Archive.org ftw met offline sites
!
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |