quote:Op zondag 15 april 2007 15:17 schreef Nevermind het volgende:
Ik heb geboortedatums in de database staan door middel van DATE-velden van MySQL. Een geboortedatum is dus bijvoorbeeld 1985-07-19. Nu wil ik vanaf vandaag een overzicht van de aankomende verjaardagen, gesorteerd op hoe lang het nog duurt (liefst in dagen). Ik heb de manual er bij gepakt, maar ik kan het nog niet vinden
-edit-
Inmiddels ben ik iets verder:
[ code verwijderd ]
Maar nu nog vanaf vandaag gerekend, daar kom ik nog niet uit.
1 2 3 4 5 | date_format(people_birthday, '%d %m') AS verjaardag, unix_timestamp( if( date_format( people_birthday, '2000-%m-%d 00:00:00' ) >= date_format( now( ) , '2000-%m-%d 00:00:00' ) , date_format( people_birthday, '2000-%m-%d 00:00:00' ) , date_format( people_birthday, '2004-%m-%d 00:00:00' ) ) ) AS datum2 FROM people WHERE people_birthday != 'NULL' ORDER BY datum2 |
Afgezien van het feit dat mijn browser (Konqueror) die %23 niet omzet naar een hekje maar dat gewoon verstuurt (zoals het ook hoort) lijkt het me niet echt een fijn plan om hekjes in je URI te gaan verwerkenquote:Op maandag 16 april 2007 10:35 schreef hornage het volgende:
Ff vraag tussendoor die niet perse PHP is maar meer HTML. Ik wil verwijzen naar een adres waarin een # voorkomt. Dit werkt niet omdat dit uiteraard het teken voor een bladwijzer is in html.
Toch kan ik hier komen in de browser, maar dan zie je %23 staan. Als ik dit direct in het adres invul om erheen te gaan maakt ie er toch weer hekjes van waardoor ik er niet kom.
Ik kan niet even snel makkelijk regelen dat die hekjes weg zijn uit het adres want ze hebben een specifieke functie. Iemand misschien een idee om dit toch voor elkaar te krijgen?
Tja, volgens mij zit er toch weinig anders op dan de namen van die mappen/bestanden te hernoemenquote:Op maandag 16 april 2007 10:44 schreef hornage het volgende:
Het is ook niet een goed idee maar de structuur is ooit eens opgezet en er was nooit de bedoeling geweest om te gaan linken hiernaar. Je kan het zien op http://www.mobilia-interieurtextiel.nl/
Op de voorpagina op een artikel klikken en dan op een plaatje. Hij kan hem niet vinden dan terwijl ik verwijs naar %23 ipv een hekje
Aangezien je daar een m:n-relatie (één tag kan meerdere nieuwsberichten hebben, één nieuwbericht kan meerdere tags hebben) wilt creëeren, heb je daar een koppeltabel voor nodig in de vorm (nieuwsbericht_pk, tag_pk).quote:Op maandag 16 april 2007 11:25 schreef super-muffin het volgende:
Ik wil voor een nieuws systeem een tag lijst gaan maken.
Hoe moet ik dat gaan doen? Een extra veld in de nieuws tabel of een aparte tabel?
Er moet wel opgeklikt worden, zodat je alle berichten met de zelfde tag te zien krijgt
Oh ja, zo had ik het nog niet bekekenquote:Op maandag 16 april 2007 11:31 schreef JeRa het volgende:
[..]
Aangezien je daar een m:n-relatie (één tag kan meerdere nieuwsberichten hebben, één nieuwbericht kan meerdere tags hebben) wilt creëeren, heb je daar een koppeltabel voor nodig in de vorm (nieuwsbericht_pk, tag_pk).Je kunt dan in die tabel een PRIMARY KEY plaatsen op (nieuwsbericht_pk, tag_pk) en een INDEX op (tag_pk) zodat je ook snel kunt zoeken op nieuwsberichten wanneer iemand op een tag klikt.
Ja, daarmee voorkom je SQL injection. Nee, het is nog niet veilig. Je moet ervoor zorgen dat je álle user input controleert en dus voorkomt dat users zichzelf adminrechten kunnen geven door een beetje te spelen met getallenquote:Op maandag 16 april 2007 23:38 schreef Intrepidity het volgende:
Vraagje.. ik gebruik PDO om met databases te verbinden, en dit in combinatie met prepared statements.. nou heb ik ergens gelezen dat het gebruik van prepared statements in principe genoeg beveiligt tegen SQL-injectie. Is dit waar? en welke maatregelen kan ik verder nog treffen?
Vreemd genoeg herkent hij je alias niet. Een oplossing is het stukje waar je de leeftijd in jaren berekent kopiëren naar je WHERE-clausulequote:Op woensdag 18 april 2007 13:34 schreef pimtenbrinke het volgende:
ok komt ie dan!
dit werkt:
select naam, voorl,
trunc((SYSDATE - GBDATUM)/365) leeftijd
from medewerkers
maar nu wil ik dus aangeven dat de leeftijd ouder moet zijn dan 35
ik dacht zelf aan dit:
where leeftijd > 35
order by leeftijd
maar dan krijg ik de melding:
where leeftijd < 30
*
ERROR at line 4:
ORA-00904: "LEEFTIJD": invalid identifier
Hoe kan ik die beperking anders opgeven dat de leeftijd ouder moet zijn dan 35?
ik werk trouwens met oracle
Nou, als je in je SELECT-clausule iets hebt staan als:quote:Op woensdag 18 april 2007 15:50 schreef pimtenbrinke het volgende:
en hoe gaat dat er dan uitzien...? enige tips om me op weg te helpen?
1 2 | ... |
1 2 | WHERE to_char(...) = zoveel |
quote:Op woensdag 18 april 2007 13:44 schreef Chandler het volgende:
tijd voor pizza :9
1 |
Ja hoor, table aliases. Simpelweg "lange_tabel_naam AS t" gebruiken (je kunt zelfs de AS weglaten).quote:Op woensdag 18 april 2007 18:43 schreef fokME2 het volgende:
Eerst wilde ik een ordinaire TVP plaatsen, maar ineens bedacht ik me! Een tijdje geleden werd ik een beetje moe van het "SELECT ... FROM hele_lange_tabelnaam_ofzo", dus vroeg ik me af of je net als bij kolommen ook een "AS" mogelijkheid hebt voor tabellen?![]()
Heb hier destijds niets over op kunnen googlen.
Voorbeeldje van hoe je zoiets kan gebruikenquote:Op woensdag 18 april 2007 19:06 schreef fokME2 het volgende:
Jawel, maar het gaat niet altijd om mijn eigen code.![]()
1 2 3 4 5 | FROM "topics" "t" INNER JOIN "posts" "p" ON "t"."id" = "p"."topicid" GROUP BY "p"."userid" |
Gaat het om MySQL of om een andere SQL server?quote:Op woensdag 18 april 2007 19:06 schreef fokME2 het volgende:
Jawel, maar het gaat niet altijd om mijn eigen code.![]()
Views zijn inderdaad erg handig, en als het om grote data gaat (vele duizenden rows) is het slim om goede indices aan te leggen die de view helpen, aangezien je bij elke query op een view in feite de query voor de view opnieuw uitvoertquote:Op woensdag 18 april 2007 19:38 schreef cyberstalker het volgende:
[..]
Je zou dit kunnen zien als een soort "permanente alias". Een keer ingesteld kun je de tabel vanuit elk statement gewoon met jouw opgegeven naam benaderen.
1 |
Moet idd nog komma's tussenquote:Op woensdag 18 april 2007 20:49 schreef Piles het volgende:
[ code verwijderd ]
Zoiets? Weet eigenlijk niet of komma's tussen moeten
1 |
ik krijg plaatjes gewoon te zien? iig deze: http://www.mobilia-interieurtextiel.nl/website/Mobilia%20Interieurtextiel/2007-2/Artikelen/Algemeen/_Maison%20&%20Objet/IMG_3516.jpg maar daar zit dan ook geen hekje inquote:Op maandag 16 april 2007 10:44 schreef hornage het volgende:
Het is ook niet een goed idee maar de structuur is ooit eens opgezet en er was nooit de bedoeling geweest om te gaan linken hiernaar. Je kan het zien op http://www.mobilia-interieurtextiel.nl/
Op de voorpagina op een artikel klikken en dan op een plaatje. Hij kan hem niet vinden dan terwijl ik verwijs naar %23 ipv een hekje
Zo had ik'm gedaan en dat werkte inderdaad :)quote:Op woensdag 18 april 2007 21:04 schreef Mordreth het volgende:
[..]
Moet idd nog komma's tussen :)
[ code verwijderd ]
1 |
1 |
1 2 3 4 5 6 7 8 | $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['file']['name']); $_FILES['file']['tmp_name']; move_uploaded_file($_FILES['file']['tmp_name'], $target_path); ?> |
1 2 3 4 5 6 7 | $target_path = "uploads/"; $target_path = $target_path . $tone_formatted; move_uploaded_file($_FILES['file']['tmp_name'], $target_path); ?> |
Gedaan, en vanuit PHP nogsteeds bagger. Zodra ik $keyword vervang met een keyword en dan in mysql uitvoer:quote:Op woensdag 18 april 2007 21:43 schreef Piles het volgende:
In de goede volgorde wel
[ code verwijderd ]
quote:SQL-query: Documentatie
SELECT *
FROM fotoview
WHERE KEY = 'mensen'
ORDER BY RAND( )
LIMIT 6
MySQL retourneerde: Documentatie
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Key = 'mensen' ORDER BY RAND() LIMIT 6' at line 1
Dit werkt perfect!!quote:Op woensdag 18 april 2007 21:47 schreef Piles het volgende:
[ code verwijderd ]
Zoiets?
Of later met de functie http://nl3.php.net/manual/nl/function.rename.php
Is KEY een kolom? Zo ja: ik denk dat het een gereserveerd woord is binnen MySQL, dus ik denk dat je je kolomnaam moet veranderenquote:Op woensdag 18 april 2007 21:49 schreef LeeHarveyOswald het volgende:
[..]
Gedaan, en vanuit PHP nogsteeds bagger. Zodra ik $keyword vervang met een keyword en dan in mysql uitvoer:
[..]
Of escapen met backticks (`)quote:Op woensdag 18 april 2007 21:58 schreef Piles het volgende:
[..]
Is KEY een kolom? Zo ja: ik denk dat het een gereserveerd woord is binnen MySQL, dus ik denk dat je je kolomnaam moet veranderen
1 2 3 4 5 6 7 8 9 | $counter == $counter + 1; $file[counter] == $result['Filename']; $Key[counter] == $result['Keytag']; $Link[counter] == $result['Link']; } echo"<font COLOR='#666666' face = Verdana> <img border=5 src='$file[1]'> <img border=5 src='$file[2]'> <img border=5 src='$file[3]'> <br> |
1 2 3 4 5 6 7 8 9 10 11 12 | $counter = 0; while ($result = mysql_fetch_array($query)) { $counter++; $file[$counter] = $result['Filename']; $Key[$counter] = $result['Keytag']; $Link[$counter] = $result['Link']; } echo"<font COLOR='#666666' face = Verdana> <img border=5 src='$file[1]'> <img border=5 src='$file[2]'> <img border=5 src='$file[3]'> <br> ?> |
S?quote:Op woensdag 18 april 2007 22:52 schreef George.W.Bush het volgende:
Is er een mssql equivalent van mysql_real_escape_string? Of eigenlijk, hoe escape ik quotes in mssql?
Kloon van de grondlegger van dit topic.... lang verhaal
Die jaquote:
Thanks, daar is geen standaard funtie voor zoals mysql_real_escape_string dus?quote:En in MSSQL escape je een quote door hem te verdubbelen
Views zijn een soort van pseudo-tabellen en gedragen zich in alle opzichten precies als een echte tabel.quote:Op woensdag 18 april 2007 22:16 schreef fokME2 het volgende:
Handig mensen, bedankt!
Hoe zit het met die "views"? :)
1 2 3 4 5 6 7 | `id` int(4) unsigned NOT NULL auto_increment, `field1` varchar(8) NOT NULL, `field2` varchar(8) NOT NULL, `field3` varchar(8) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
1 2 3 4 5 6 7 8 9 10 11 | ALGORITHM=MERGE SQL SECURITY DEFINER VIEW show_table AS SELECT id AS row_id, field1 AS veld1, field2 AS veld2, field3 AS veld3 FROM view_table |
Heb je hier wat aan?quote:Op woensdag 18 april 2007 22:56 schreef George.W.Bush het volgende:
[..]
Die ja
[..]
Thanks, daar is geen standaard funtie voor zoals mysql_real_escape_string dus?
Best simpel hequote:
Dat hangt ervan af wat je zelf in je query gebruikt. Als jij je tekst zelf tussen ' zet, kun je in er prima " in neerzetten, maar een ' moet je escapen. Omgekeerd, als je een " gebruikt, kun je er prima een ' in zetten, maar een " moet je escapen.quote:Op woensdag 18 april 2007 23:03 schreef George.W.Bush het volgende:
[..]
Best simpel he
Ik neem aan dat dubbele quotes ook geescaped moeten worden?
Wat is er mis met een check-constraint aanleggen in de database? Snap ook niet waarom je een select gebruikt voor een constraint. Tenzij je een trigger zou maken, maar daar zie ik ook niks van terug. Voor een check constraint in oracle, zie dit.quote:Op woensdag 18 april 2007 13:34 schreef pimtenbrinke het volgende:
Hoe kan ik die beperking anders opgeven dat de leeftijd ouder moet zijn dan 35?
quote:Op woensdag 18 april 2007 23:24 schreef cyberstalker het volgende:
[..]
Dat hangt ervan af wat je zelf in je query gebruikt. Als jij je tekst zelf tussen ' zet, kun je in er prima " in neerzetten, maar een ' moet je escapen. Omgekeerd, als je een " gebruikt, kun je er prima een ' in zetten, maar een " moet je escapen.
1 2 3 4 5 | $query="INSERT INTO page_body (pageName,pageBody) VALUES('".$pageName."','".$pageBody."')"; ?> |
Inderdaadquote:Op donderdag 19 april 2007 09:27 schreef George.W.Bush het volgende:
[..]
[ code verwijderd ]
Dus in dit geval moet ik altijd alleen enkele quotes escapen?
mooiquote:
1 2 3 | include("/../../functies.php"); ?> |
1 2 3 | include("../../functies.php"); ?> |
Het kan soms handig zijn om algemene config files (sql config etc) en zelfs classes die je deelt buiten je www map te zetten en dan via de root te includen,quote:Op donderdag 19 april 2007 12:31 schreef hornage het volgende:
het moet dan wezen:
[ code verwijderd ]
Als je begint met een / geef je aan dat je naar de root gaatMet .. ga je 1 map naar boven
1 2 3 4 | //er vanuitgaande dat je een public_html map hebt oid include '/home/user/config.inc.php'; ?> |
1 2 3 | include './../blabla.php'; ?> |
Dat ze niet in de browser zijn aan te roepen vind ik wel prettig.quote:Op donderdag 19 april 2007 17:00 schreef super-muffin het volgende:
En waarom is dat handig, behalve dat ze dan niet in de browser zijn aan te roepen?
Het kan ook niet altijd hoor. Veel servers worden beheerd met directadmin en dan kan het vaak niet. Maar als je zelf host, of er is een webhost waar het wel kan, dan vind ik het persoonlijk wel prettigquote:Op donderdag 19 april 2007 17:25 schreef super-muffin het volgende:
Zo heb ik het nu ook hoor, alleen dan in public_html. Eigenlijk een submap daarvan.
Alle classen staan in een apart bestand, netzoals de wachtwoorden enzo.
Word allemaal heel makkelijk geladen door de __autoload() functie
Eigenlijk wist ik niet dat je bestanden buiten de public_html kon benaderen in PHP.
1 2 3 4 5 6 7 8 9 | session_start(); .... if (isset($_SESSION['UserID']) && isset($_SESSION['Userlevel'])){ header("Location: homepage.php"); } ?> |
1 2 3 4 5 | session_start(); echo $_SESSION['UserID']; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $SESS = 'MIJNSESSIONID'; $html = file_get_contents('http://forum.fok.nl/forum/9'); if(preg_match_all('/topic(([0-9]{6,}),'([WFL-LFC.*)'/iU', $html, $matches)) { $topics = array(); foreach($matches[1] as $index => $id) $topics[] = array('id' => $id, 'title' => $matches[2][$index]); $message = "Weer een update op mijn weblog op [url=http://www.qu63.nl/blog]".$tijd."[/url] met als onderwerp "".$onderwerp."""; $ch = curl_init("http://forum.fok.nl/fok/post_reply/".$topics[0]['id'].""); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: forum.fok.nl","Connection: Keep-Alive")); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "&topic=".$topics[0]['id']."&sessid=".$SESS."&skipVerbose=TRUE&Username=qu63&Password=MIJNPASSWORD&posticon=6&message=".$message."&submit=Invoeren&sid=MIJNSID"); curl_exec($ch); curl_close($ch); } ?> |
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
quote:Op zondag 22 april 2007 16:13 schreef JortK het volgende:
Weet iemand trouwens als ik bijvoorbeeld een bestand include met 10 queries, dat wanneer ik de pagina open waarin dit bestand geinclude is, ook al alle 10 de queries worden gedraaidIn dit bestand dat geinclude wordt, hoe staan de queries daar opgeschreven?SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
1 2 3 | $q = "SELECT * FROM strontsoorten"; ?> |
1 2 3 | $r = mysql_query($q) or die mysql_error(); ?> |
Ik heb het niet gevolgd, maar kun je niet iets met de referrerheader doen?quote:Op zondag 22 april 2007 16:11 schreef qu63 het volgende:
Ik hád een mooi scriptje gemaakt om op fok te kunnen posten als mijn weblog geupdate werd, maar door de laatste update(s) gaat dat dus niet meer.
Mijn script ziet er zo uit:
[ code verwijderd ]
alvast bedankt
ik heb wel deze staan:quote:Op zondag 22 april 2007 16:19 schreef cyberstalker het volgende:
[..]
Ik heb het niet gevolgd, maar kun je niet iets met de referrerheader doen?
edit: ik denk dat ik het al zie. Replique voegt een cookie toe wanneer je een topic geopend hebt. Kijk maar eens bij je cookies van FOK!
Ik zie daar een lijst cookies staan met de naam Enabled en als content bijvoorbeeld: /topic/1013608/1/
Dat is de lijst met topics die je geopend hebt. Het topic waarin je wilt reageren moet dus in je cookies staan. Daarnaast werkt FOK! met dubbele sessies. Je hebt twee waardes die je moet doorgeven, namelijk sid en sessid. Je zult dus beide waardes in je script moeten hebben om te kunnen reageren.
Wat ik zou doen om het helemaal werkend te krijgen is dat je gewoon het topic opvraagt en de cookies daaruit gewoon precies terugstuurt als je het bericht plaatstquote:Op zondag 22 april 2007 16:58 schreef qu63 het volgende:
[..]
ik heb wel deze staan:
Name Enabled
Value true
Host .forum.fok.nl
Path /
Secure No
Expires maandag 23 april 2007 16:55:12
verder nog __utma, __utmb, __utmc en __utmz, maar daar kan ik niks bijzonders uithalen..
hoe weet ik dan precies welke cookies bij dat topic horen?quote:Op zondag 22 april 2007 17:02 schreef cyberstalker het volgende:
[..]
Wat ik zou doen om het helemaal werkend te krijgen is dat je gewoon het topic opvraagt en de cookies daaruit gewoon precies terugstuurt als je het bericht plaatst.
Nou, wat je doet is in CURL eerst het topic te openen en CURL opdracht te geven de cookies te bewaren. Daarna plaats je je reactie, waarbij je gebruik maakt van de cookies van de vorige request.quote:Op zondag 22 april 2007 17:05 schreef qu63 het volgende:
[..]
hoe weet ik dan precies welke cookies bij dat topic horen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $lOriginal = "01.png"; $lStamp = "1a.png"; $lOrigImg = imagecreatefrompng($lOriginal); $lStampImg = imagecreatefrompng($lStamp); $orig_x = imagesx($lOrigImg); $orig_y = imagesy($lOrigImg); $image = imagecreatetruecolor($orig_x, $orig_y); imagecopyresampled($image, $lOrigImg, 0, 0, 0, 0, $orig_x, $orig_y, $orig_x, $orig_y); //imagecolortransparent($lStampImg, imagecolorallocate($lStampImg, 0, 0, 0)); imagecopymerge($image, $lStampImg, 2, 2, 0, 0, 130, 130, 99); imagepng($image,"pngoverlayimage.png"); echo "<img src='pngoverlayimage.png'>"; echo "done"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //QTOP50 - Selects the TOP 50 ringtones $qtop50 = "SELECT DATE_FORMAT(DATE(ringtones.TIMESTAMP), '%d-%c-%Y') AS Datum, genres.GENRE AS Genre, types.TYPE AS Type, artists.NAME AS Artiest, ringtones.TITLE AS Titel, ringtones.ID AS Toneid, ringtones.VIEWS AS Views FROM ringtones, genres, artists, types WHERE ringtones.GENRE = genres.ID AND ringtones.ARTIST = artists.ID AND ringtones.TYPE = types.ID ORDER BY TIMESTAMP DESC LIMIT 0,50"; ?> |
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 | while($row = mysql_fetch_assoc($rtop50)) { echo"<TR>"; echo"<TD>"; echo $row['Datum']; echo"</TD>"; echo"<TD>"; echo $row['Artiest']; echo " - "; echo $row['Titel']; echo"</TD>"; echo"<TD>"; echo $row['Genre']; echo"</TD>"; echo"<TD>"; echo $row['Type']; echo"</TD>"; echo"<TD>"; //echo"<a href='show_ringtone.php?ID= //$row[Uuid]'>Download!</a>"; echo $row['Toneid']; echo"</TD>"; echo"<TD>"; echo $row['Views']; echo"</TD>"; echo"</TR>"; } ?> |
1 |
1 |
ja de rtop50 doet mysql_query();quote:Op maandag 23 april 2007 00:38 schreef cyberstalker het volgende:
Wat me wel opvalt is dat je de query in de variabele $qtop50 terwijl je de query uitvoert die in $rtop50 staat. Heb je daar misschien een andere query staan?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | print_r($_POST); <form action="multiline.php" method="post"> <select name="show" size="3" multiple="multiple"> <option value="21">Hans</option> <option value="52">Dieter</option> <option value="81">Frederik</option> </select> <input type="submit"> </form> ?> |
Dit is an sich vrij simpel te doen door de select tag te vervangen door:quote:Op maandag 23 april 2007 02:27 schreef Geqxon het volgende:
Ik wil graag een multiple selectable <select> op mijn website bouwen, waarbij ik de mogelijkheid wil hebben uit te kunnen lezen welke <option> velden er geselecteerd zijn. Een simpele test:
[ code verwijderd ]
Helaas geeft dit enkel de waarde van het laatst gekozen veld terug. Enigzins logisch, van de andere kant wat minder. Het moet mogelijk zijn, het is op Fok ook gedaan. Iemand tips? :)
1 2 3 | <select name="show[]" size="3" multiple="multiple"> ?> |
1 2 | $string = preg_replace("/(" . $arData['naam'] . ")(s|.|:|?|)|!|>|}|%)/i", $replacement, $string, 1); |
1 |
het moet zijn:quote:Op maandag 23 april 2007 14:51 schreef Messenga het volgende:
<form>
<select name="namenlijst">
<option value="x">Selecteer je keuze
<tr>
<?php
$result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while($aBerichten = mysql_fetch_array($result)) {
print "t" . '<option value= "'$aBerichten['naam'].'</option>' . "n";
}
?>
</select></td>
</tr>
Door middel van dit stukje code wil ik in een pulldown menu alle namen uit de tabel gebruikers uitlezen en die natuurlijk op het schermpje krijgen. Wat doe ik hier echter fout?
1 2 3 4 5 6 7 8 9 10 11 12 | <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> <?php $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value=\"" . $aBerichten['naam'] . "\">" . $aBerichten['naam'] . "</option>'; } ?> </select></td> </tr> |
1 2 3 4 | (SELECT * FROM Bookmarks WHERE UserID = ".mysql_real_escape_string($userid)." AND PostID = post.ID) |
Door een EXPLAIN te doen kom je erachter wat het is dat je pagina zo traag maakt.quote:Op maandag 23 april 2007 18:53 schreef Geqxon het volgende:
Iemand misschien tips waarom MySQL met subqueries stronttraag wordt? Een pagina van 0.02 seconden laadtijd wordt opeens 1.22 seconden
Mijn geval:
[ code verwijderd ]
Ik zoek dus basicly alle velden die géén bookmark hebben. Een bookmark zet ik door een record aan te maken met het PostID dat ik wil bookmarken, en de bijbehorende UserID, een bookmark verwijder ik door dit record te verwijderen.
Alvast bedankt!
kan je dat niet gewoon met een JOIN doen?quote:Op maandag 23 april 2007 18:53 schreef Geqxon het volgende:
Ik zoek dus basicly alle velden die géén bookmark hebben. Een bookmark zet ik door een record aan te maken met het PostID dat ik wil bookmarken, en de bijbehorende UserID, een bookmark verwijder ik door dit record te verwijderen.
Ik wil juist alle berichten in het systeem hebben die geen veld in de "Bookmarks" tabel hebben, dus een JOIN op iets dat bestaat lijkt mij so far niet mogelijkquote:Op maandag 23 april 2007 19:28 schreef Xcalibur het volgende:
[..]
kan je dat niet gewoon met een JOIN doen?
en dan op != NULL checken?
Misschien denk ik te simpel hier, maar werkt een simpele left join niet zo? Vervolgens zet je in de where-clause iets dat alles er uit filtert dat niet null is. Dat gecombineerd met een index op de fk zou toch wel redelijke perfmance moeten geven.quote:Op maandag 23 april 2007 19:32 schreef Geqxon het volgende:
[..]
Ik wil juist alle berichten in het systeem hebben die geen veld in de "Bookmarks" tabel hebben, dus een JOIN op iets dat bestaat lijkt mij so far niet mogelijk
1 2 3 4 | FROM subscriptions LEFT OUTER JOIN clients ON subscriptions.clientcode = clients.clientcode WHERE clients.clientcode IS NULL |
Klopt. Je doet een LEFT JOIN tussen de twee tabellen. Vervolgens plaats je in de where-clause iets als "Bookmarks.PostID IS NULL"quote:Op maandag 23 april 2007 19:42 schreef Aibmi het volgende:
[..]
Misschien denk ik te simpel hier, maar werkt een simpele left join niet zo? Vervolgens zet je in de where-clause iets dat alles er uit filtert dat niet null is. Dat gecombineerd met een index op de fk zou toch wel redelijke perfmance moeten geven.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |