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: |