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.
Een left join pakt alle records uit een tabel, en plaatst daar dan de bijbehorende informatie naast. In tegenstelling tot een inner join komt hier een null uit als er geen corresponderende record bij hoort.quote:Op maandag 23 april 2007 19:54 schreef Geqxon het volgende:
Maar dan JOIN je met een niet bestaand record? Is iets als dat uberhaupt mogelijk? Ik ga er eens mee klooien, mijn query is toch al bezopen groot
Mooi.quote:Op maandag 23 april 2007 19:57 schreef Aibmi het volgende:
[..]
Een left join pakt alle records uit een tabel, en plaatst daar dan de bijbehorende informatie naast. In tegenstelling tot een inner join komt hier een null uit als er geen corresponderende record bij hoort.
zoek op LEFT OUTER JOINquote:Op maandag 23 april 2007 20:10 schreef Geqxon het volgende:
[..]
Mooi.
Ik ben er nog steeds aan het knutselen, aangezien mijn SQL query boven de 500 karakters zit is het een beetje een geworstel
Jawel die moet het gewoon doen hoorquote:Op maandag 23 april 2007 20:15 schreef Geqxon het volgende:
Nou, ik denk dat ik toch maar op de MySQL update wacht die subquerys sneller maakt. Het is helaas niet mogelijk om de LEFT JOIN in mijn query te stoppen, ik gok dat hij niet compatible is met de andere WHERE clauses.
1 2 3 4 5 6 | SELECT * FROM T1 LEFT JOIN (T2,T3) ON (T2.A=T1.A AND T3.B=T2.B) WHERE T3.C > 0. ?> |
Hoezo een query krijg je toch wel overzichtelijk?quote:Op maandag 23 april 2007 20:26 schreef Geqxon het volgende:
Helaas, ondanks dat ik in mijn query "c.ID" (c alsin "FROM Catagorie AS c") een keer of 3 a 4 gebruik herkent hij hem niet binnen de LEFT JOIN.
Het is op zich wel te doen, de traagheid, ik zocht dan ook meer een simpele fix ervoor. Want anders wordt mijn query denk ik ook veel te lang
Ik durf met een gerust hart te zeggen dat als je een query van 500KB hebt, je iets gruwelijks fout doet.quote:Op maandag 23 april 2007 20:28 schreef JortK het volgende:
[..]
* JortK heeft eenmaal een query van 500kb geschreven, voor het verwijderen van dubbele contacten met koppel tabellen en shit, en dat ging nog best
Klopt, in de query staat dus ook het aanmaken van de SP's en viewsquote:Op maandag 23 april 2007 20:32 schreef JeRa het volgende:
[..]
Ik durf met een gerust hart te zeggen dat als je een query van 500KB hebt, je iets gruwelijks fout doet.(men heeft daarvoor stored procedures, views en meer van dat soort leuke meuk voor verzonnen)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value="" . $aBerichten['naam'] . "></option>"; } </select></td> </tr> </FORM>] ?> |
quote:Op maandag 23 april 2007 21:11 schreef Messenga het volgende:
[ code verwijderd ]
Hier moet de bovenstaande code de gegevens uit de database halen en in het dropdown menu zetten. Die gegevens bestaan uiteraard. Waarom werkt dit dan niet?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value="" . $aBerichten['naam'] . ""></option>"; } </select></td> </tr> </FORM>] ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value=\"" . $aBerichten['naam'] . "\"></option>"; } </select></td> </tr> </FORM>] ?> |
Zet eensquote:Op maandag 23 april 2007 21:27 schreef Messenga het volgende:
Ik heb ze allebei geprobeerd, maar het is net alsof hij de PHP code gewoon niet pakt.
1 2 3 | error_reporting(E_ALL); ?> |
Zo dus op het moment:quote:Op maandag 23 april 2007 21:27 schreef Messenga het volgende:
Ik heb ze allebei geprobeerd, maar het is net alsof hij de PHP code gewoon niet pakt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value='" . $aBerichten['naam'] . "'></option>"; } </select></td> </tr> </FORM> ?> |
Er komt dus ook totaal geen error reportingquote:Op maandag 23 april 2007 21:29 schreef cyberstalker het volgende:
[..]
Zet eens
[ code verwijderd ]
bovenaan in je script en plaats de uitvoer hier.
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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | include('functies.php'); error_reporting(E_ALL); <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Vrijdag Snack de Waerdenborch | Home</title> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="style.css" /> <style type="text/css"> <!-- .style1 {font-family: Georgia, "Times New Roman", Times, serif} --> </style> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="wrapper"> <div class="style1" id="top"> </div> <div id="content"> <div class="style1" id="header"> <p> </p> <p> </p> </div> <div id="menu"> <ul> <li><a href="index.html">Home</a> <ul> <li><a href="Aanwezig.html">Aanwezigheid</a></li> </ul> </li> <li><a href="Bestelling.html">Bestellingen</a></li> <li><a href="kostenoverzicht.html">Kostenoverzicht</a></li> <li></li> </ul> </div> <div id="stuff"> <p>Welkom op de website voor de vrijdagmiddag snack van de Waerdenborch.</p> <p>Hier kunt u uw bestellingen per week aangeven. Daarbij zult u per week kunnen zien wie wanneer betaalt. Door op het kostenoverzicht te klikken kunt u zien wat de kosten zijn. Zowel per persoon als een totaaloverzicht. </p> <p> Hier kies je je naam:</p> <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value='" . $aBerichten['naam'] . "'></option>"; } </select></td> </tr> </FORM> <p>Hier kies je je keuze voor de snack: </p> <form> <select name="snacklijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value="" . $aBerichten['naam'] . ""></option>"; } </select></td> </tr> </FORM> Hier kies je je Saus: <form> <select name="sauslijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT product FROM producten WHERE type = " saus") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value="" . $aBerichten['saus'] . "></option>"; } </select></td> </tr> </FORM> <p> </p> <FORM action="BestellingOpgeslagen.html"> <input name="Submit" type="submit" value="Opslaan" /> </form> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p><br /> <br /> <a href="http://validator.w3.org/check?uri=referer"></a> </p> </div> </div><div id="bottom"></div> </div> </body> </html> ?> |
Dat doet Fok!, die zet automatisch die php tags boven en onder neer en haalt ze in het midden weg....quote:Op maandag 23 april 2007 22:18 schreef H4ze het volgende:
Ja wat ik dus ff niet snap aan die hele code, is waarom je gewoon keiharde html tussen je phptags zet, zonder deze te echo'en?
Ah oke, dat verklaart hetquote:Op maandag 23 april 2007 22:22 schreef _Xbox_Master_ het volgende:
[..]
Dat doet Fok!, die zet automatisch die php tags boven en onder neer en haalt ze in het midden weg....
Er is altijd een logische verklaring voor het feit dat een (zelfgebouwde) applicatie niet werkt.quote:Op maandag 23 april 2007 22:28 schreef Messenga het volgende:
[..]
Wat zou dan de fout kunnen zijn? of is er verder geen logsche verklaring?
Dit geeft gewoon de pulldown menu's, alleen geen resultaat die hij moet pakken uit de databases.quote:Op maandag 23 april 2007 22:35 schreef H4ze het volgende:
[..]
Er is altijd een logische verklaring voor het feit dat een (zelfgebouwde) applicatie niet werkt.
Weetje verder zeker dat het niet aan de quote'jes ligt waar Piles het overhad? En heb je de hele html al is weggehaald en alleen de query uitgevoerd? Gaf dit een resultaat?
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 97 98 99 100 101 102 103 104 105 106 107 108 109 | include('functies.php'); error_reporting(E_ALL); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Vrijdag Snack de Waerdenborch | Home</title> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="style.css" /> <style type="text/css"> <!-- .style1 {font-family: Georgia, "Times New Roman", Times, serif} --> </style> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="wrapper"> <div class="style1" id="top"> </div> <div id="content"> <div class="style1" id="header"> <p> </p> <p> </p> </div> <div id="menu"> <ul> <li><a href="index.html">Home</a> <ul> <li><a href="Aanwezig.html">Aanwezigheid</a></li> </ul> </li> <li><a href="Bestelling.html">Bestellingen</a></li> <li><a href="kostenoverzicht.html">Kostenoverzicht</a></li> <li></li> </ul> </div> <div id="stuff"> <p>Welkom op de website voor de vrijdagmiddag snack van de Waerdenborch.</p> <p>Hier kunt u uw bestellingen per week aangeven. Daarbij zult u per week kunnen zien wie wanneer betaalt. Door op het kostenoverzicht te klikken kunt u zien wat de kosten zijn. Zowel per persoon als een totaaloverzicht. </p> <p> Hier kies je je naam:</p> <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 "<option value='" . $aBerichten['naam'] . "'></option>"; } ?> </select></td> </tr> </FORM> <p>Hier kies je je keuze voor de snack: </p> <form> <select name="snacklijst"> <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'] . "'></option>"; } ?> </select></td> </tr> </FORM> Hier kies je je Saus: <form> <select name="sauslijst"> <option value="x">Selecteer je keuze <tr> <?php $result = mysql_query("SELECT product FROM producten WHERE type = 'saus'") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option value='" . $aBerichten['saus'] . "'></option>"; } ?> </select></td> </tr> </FORM> <p> </p> <FORM action="BestellingOpgeslagen.html"> <input name="Submit" type="submit" value="Opslaan" /> </form> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p><br /> <br /> <a href="http://validator.w3.org/check?uri=referer"></a> </p> </div> </div><div id="bottom"></div> </div> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form> <select name="namenlijst"> <option value="x">Selecteer je keuze <tr> $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option>" . $aBerichten['naam'] . "</option>"; } </select></td> </tr> </FORM>] ?> |
Whehe. Soms zit je zo op syntaxfouten te kijken dat je de rest niet meer zietquote:Op maandag 23 april 2007 23:01 schreef Piles het volgende:Vind je het gek dat de dropdowns leeg zijn
print "<option value='" . $aBerichten['saus'] . "'>Hier moet ook wat</option>";
Haha ja tochquote:Op maandag 23 april 2007 23:01 schreef Piles het volgende:Vind je het gek dat de dropdowns leeg zijn
print "<option value='" . $aBerichten['saus'] . "'>Hier moet ook wat</option>";
dus
print "<option value='" . $aBerichten['saus'] . "'>". $aBerichten['saus'] ."</option>";
Daarom altijd de html-output bekijkenquote:Op maandag 23 april 2007 23:03 schreef cyberstalker het volgende:
[..]
Whehe. Soms zit je zo op syntaxfouten te kijken dat je de rest niet meer ziet.
Het kan allebei. Het attribuut value is optioneel. Bij gebrek aan een value attribuut wordt de tekst in de <option> meegestuurd.quote:Op maandag 23 april 2007 23:06 schreef H4ze het volgende:
Maar die hele value= in de option is toch doelloos? De dropdownlist stuurt gewoon de waarde door die tussen <option> en </option> staat (en geselecteerd is) toch.
alleen is het dan geen valid XHTML meer volgens mijquote:Op maandag 23 april 2007 23:23 schreef cyberstalker het volgende:
Wil je dus hetzelfde terugsturen als je toont is het attribuut value dus niet nodig.
Jawel. Dit is allemaal W3C approvedquote:Op dinsdag 24 april 2007 10:37 schreef Xcalibur het volgende:
[..]
alleen is het dan geen valid XHTML meer volgens mij
1 2 3 4 5 | FROM table WHERE var1 LIKE '%s' AND var2 LIKE '%s' ORDER BY var1", mysql_real_escape_string($var1), mysql_real_escape_string($var2)); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <form method="post" action="BestellingOpgeslagen.php"> <select name="namenlijst"> <option value="x">Selecteer je keuze</option> <?php $result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error()); while($aBerichten = mysql_fetch_array($result)) { print "<option>".$aBerichten['naam']."</option>"; } ?> </select></td> </tr> |
Dat werkt inderdaad, dank je.quote:Op dinsdag 24 april 2007 21:25 schreef Geqxon het volgende:
Voor je laatste vraag: http://nl3.php.net/htmlentities
Zoiets?
Waarom doe je niet gewoon zo:quote:Op dinsdag 24 april 2007 21:17 schreef De_Hertog het volgende:
Ik ben weer eens met PHP bezig, twee kleine vraagjes die niet echt googlebaar waren:
Hoe gebruik je mysql_escape_string in combinatie met LIKE? Like is een nogal veel voorkomend woord in het Engels, dus zoeken gaat niet echt, en waarschijnlijk is dit een erg simpel probleem:
[ code verwijderd ]
Als ik het zo doe werkt het alleen als ik het volledige woord intyp. Ik moet dus met wildcards werken, maar hoe krijg ik die om die %s? '%%s%' werkt niet. Hoe moet dit?
De volgende vraag is wat lastiger: ik heb een aantal woorden met 'vreemde tekens' erin, zoals 'überhaupt'. Als ik die weergeef komt er een vraagtekentje te staan, maar als ik uberhaupt (zonder umlaut) intik gaat het wel goed. Waarschijnlijk een encoding probleem, maar meer kon ik via google niet vinden..
Alvast bedankt voor de hulp
1 2 3 4 5 6 7 | $query = "SELECT var1, var2 FROM table WHERE var1 LIKE '" . mysql_real_escape_string($var1) . "' AND var2 LIKE '" . mysql_real_escape_string($var2) . "' ORDER BY var1"; ?> |
Op deze manier is de code net wat makkelijker ingedeeld (eerst de query, dan de variabelen) hetgeen ik er voor de toekomst wat handiger uit vind zien. Bovendien heb je in jouw voorbeeld nog steeds een % symbool voor en na die string nodig, toch?quote:Op woensdag 25 april 2007 08:59 schreef HuHu het volgende:
[..]
Waarom doe je niet gewoon zo:
[ code verwijderd ]
Heb je ook de situatie afgevangen wanneer er een procentteken of underscore in de string voorkomt?quote:Op woensdag 25 april 2007 09:30 schreef De_Hertog het volgende:
[..]
Op deze manier is de code net wat makkelijker ingedeeld (eerst de query, dan de variabelen) hetgeen ik er voor de toekomst wat handiger uit vind zien. Bovendien heb je in jouw voorbeeld nog steeds een % symbool voor en na die string nodig, toch?
Overigens, zoals je hierboven kunt zien heb ik de oplossing al gevonden
Dat mag wat mij betreft gewoon mogelijk zijn, tenminste als je bedoelt dat 'bel%dui' 'België en Duitsland' oplevert. Als mensen er meer illegale dingen mee uit kunnen halen hoor ik dat natuurlijk graagquote:Op woensdag 25 april 2007 09:35 schreef JeRa het volgende:
[..]
Heb je ook de situatie afgevangen wanneer er een procentteken of underscore in de string voorkomt?Of wil je dat dat mogelijk blijft?
Waarom niet timestamp? Met datetime moet je eerst alles door strtotime() halen voor je date() kan gebruiken?quote:Op dinsdag 1 mei 2007 16:50 schreef hornage het volgende:
datetime dus
Kan toch ook gewoon met timestamp?quote:Op dinsdag 1 mei 2007 17:19 schreef Geqxon het volgende:
Zodat je in je queries kan rekenen.
Volgens mij kun je dan direct in de query al op eigenschappen filteren als "gisteren" of "over een jaar"quote:
Dat is zeer zeker waar. Echter zijn dat ook dingen die je vantevoren in PHP kunt doen. Een timestamp neemt als unsigned int maar 4 bytes in beslag, terwijl een datetime 8 bytes in beslag neemt. Een index op een unsigned int is daardoor ook nog eens kleiner (en waarschijnlijk sneller). Verder kun je je afvragen of je de presentatie al op databaseniveau wilt doen, of juist in de presentatielaagquote:Op woensdag 2 mei 2007 00:36 schreef Geqxon het volgende:
[..]
Volgens mij kun je dan direct in de query al op eigenschappen filteren als "gisteren" of "over een jaar"
Precies, als je dan toch met PHP werkt kan het inderdaad vaak makkelijker om met timestamps te werken. Strtotime is een mooie functie waar je simpelweg "-1 day" als string in kan voeren.quote:Op woensdag 2 mei 2007 00:44 schreef JeRa het volgende:
[..]
Dat is zeer zeker waar. Echter zijn dat ook dingen die je vantevoren in PHP kunt doen. Een timestamp neemt als unsigned int maar 4 bytes in beslag, terwijl een datetime 8 bytes in beslag neemt. Een index op een unsigned int is daardoor ook nog eens kleiner (en waarschijnlijk sneller). Verder kun je je afvragen of je de presentatie al op databaseniveau wilt doen, of juist in de presentatielaagik zie persoonlijk een RDMBS als een opslagplatform waarbij de datatypen het liefst zo simpel en klein mogelijk zijn.
1 |
Zo had ik het ook op php.net gevonden...maar dat werkt helaas nietquote:
1 2 3 4 5 | header("Content-Type: audio/mpeg"); header("Content-Disposition: attachment; filename=$file"); readfile('blablabla.mp3'); ?> |
1 2 3 | "Hans" . $tussennaam . "Dieter" ?> |
Jep je hebt gelijk. Had die quotes ook al gelijk aangepast, maar het werkte toen alsnog niet...quote:Op woensdag 2 mei 2007 12:18 schreef Geqxon het volgende:
Je moet even oppassen dat je quotes 100% zoals op bovenstaand voorbeeld typt, daarnaast raad ik je aan een constructie als:
[ code verwijderd ]
te gebruiken om de variabele in de string te verwerken.
Mooi! Met deze doet ie wel wat ik wil.quote:Op woensdag 2 mei 2007 12:19 schreef ViPeRII het volgende:
Voorbeeltje voor H4ze:
<?php
$filename = "theDownloadedFileIsCalledThis.mp3";
$myFile = "/absolute/path/to/my/file.mp3";
$mm_type="audio/mpeg";
header("Cache-Control: public, must-revalidate");
header("Pragma: hack");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($myFile)) );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
readfile($myFile);
?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $filename = "theDownloadedFileIsCalledThis.mp3"; $myFile = "/absolute/path/to/my/file.mp3"; $mm_type="audio/mpeg"; header("Cache-Control: public, must-revalidate"); header("Pragma: hack"); header("Content-Type: " . $mm_type); header("Content-Length: " .(string)(filesize($myFile)) ); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); readfile($myFile); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $output = ""; $gegevens = array( array("Voornaam" => "Ans" , "Achternaam" => "Albrechts"), array("Voornaam" => "Bram" , "Achternaam" => "Bertus"), array("Voornaam" => "Carol" , "Achternaam" => "Cyprus"), array("Voornaam" => "Dieter", "Achternaam" => "de Vries"), ); foreach ($gegevens as $persoon){ $output .= """ . $persoon['Voornaam'] . "";"" . $persoon['Achternaam'] . ""n"; } header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="bedrijfsgegevens '.date("H_i - d-m-Y",time()).'.csv"'); echo $output; ?> |
1 2 3 4 5 | FROM movies m JOIN binding b ON m.id = b.movie JOIN actors a ON b.actor = a.id WHERE m.id =1 |
1 2 3 | Titanic Bootje zinkt Leonardo di Caprio Titanic Bootje zinkt Kate Winslet |
1 2 | Titanic Bootje zinkt Leonardo di Caprio Kate Winslet |
Dat is ook onderdeel van het gebrek aan informatiequote:Op woensdag 2 mei 2007 23:01 schreef Piles het volgende:
Ik zou het oplossen met 2 queries: 1 voor de film zelf, en 1 voor de acteurs bij die film. Lijkt me het snelst/handigst toch?
Mjah ik bedacht me dat ik dan met een extra loopje door de variabele velden kan lopen. Dan hoef ik me niet druk te maken over 'in welke film zit ik nu'quote:Op woensdag 2 mei 2007 23:04 schreef JeRa het volgende:
@George.W.Bush
Ik zie twee oplossingen op dit ogenblik. Eén oplossing vereist dat jij gaat specificeren wat je nu precies wilt, wil je echt een variabel aantal kolommen terugkrijgen?
Ik wil het uiteraard presenteren per film. Met bovenstaande query moet ik me dus in php bezig gaan houden of de filmnaam nog gelijk is aan het vorige rondje. En zo ja, dan de gevonden acteur in de tabel spugen, en zo nee de row afsluiten en een nieuwe row aanmaken.quote:Wat is er precies mis met de 'per acteur een record' methode?
Ik ben even snel wat in elkaar an het zetten voor een familielid.... Ik doe het wel met de 'record per acteur' methode.quote:De andere oplossing omvat overstappen op een andere RDBMS die custom group aggregate functions ondersteunt zodat je je acteurs in één veld kunt samenvatten, bijvoorbeeld in een comma separated list
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | m.title, m.description, GROUP_CONCAT(a.name) FROM movies m JOIN binding b, actors a ON m.id = b.movie AND b.actor = a.id GROUP BY m.id |
Ik wil inderdaad een beetje rekening houden met performance.quote:Op woensdag 2 mei 2007 23:05 schreef JeRa het volgende:
[..]
Dat is ook onderdeel van het gebrek aan informatieals het om één film gaat die GWB wil opvragen, dan is dat inderdaad een goede oplossing. Gaat het om meerdere films dan wordt het al gauw slechter.
Twee queries? Eerst alle films opvragen, en daarna aan de hand van het film-id alle acteurs erbij opvragen?quote:Op woensdag 2 mei 2007 23:10 schreef George.W.Bush het volgende:
Ik wil het uiteraard presenteren per film. Met bovenstaande query moet ik me dus in php bezig gaan houden of de filmnaam nog gelijk is aan het vorige rondje. En zo ja, dan de gevonden acteur in de tabel spugen, en zo nee de row afsluiten en een nieuwe row aanmaken.
*denkt* hmz, dat hoeft niet eens want ik weet dat het om 1 film gaat ivm de WHERE clausule. Een simpel tellertje in de while lus is genoeg. Als het tellertje > 1 weet ik dat ik alleen de acteurs moet parsen
[..]
Ah right, ik heb denk ik te lang met MySQL 3.23 en 4.0 gewerkt om die te onthoudenquote:Op woensdag 2 mei 2007 23:11 schreef cyberstalker het volgende:
Zou GROUP_CONCAT niet iets zijn?
[ code verwijderd ]
Dan krijg je de acteurs terug als een kommagescheiden lijst die je vervolgens met php kunt explode()n.
oh wist niet dat er zo'n topic wasquote:Op donderdag 3 mei 2007 08:58 schreef JeRa het volgende:
@Desdinova
Eigenlijk is dit iets voor het Unixtopicmaar goed. Die vijf velden zijn filters en elke minuut wordt er door de crondaemon gecontroleerd of het filter voldoet aan de huidige tijd. Zoals je het nu doet zal er dus om één over zeven elke dag gecontroleerd worden of de dag in de maand even is (voor zover ik weet) en zo ja, dan wordt het uitgevoerd. Als je ook nog een dag van de week instelt zal het dus alleen uitgevoerd worden als béide filters voldoen, dus als de dag in de maand even is én het maandag is, bijvoorbeeld.
Ik hou geen log bij.quote:Op donderdag 3 mei 2007 09:20 schreef JeRa het volgende:
@DJRandall
Er is een aparte DLL die de functies zoals mssql_connect() levert; deze DLL kan tijdens die scheduled tasks kennelijk niet geladen worden. Hou je een log bij met PHP errors zodat je kunt terugzien of het geladen kan worden? Probeer anders eens de mssql.dll (als ie zo heet) in je PHP-map onder extensions eens in C:\windows\system32 te zetten om te zien of ie 'm dan wél kan laden.
Wat let je om het te proberen? Als het dan nog niet werkt kun je 'm weer weghalen uit system32, en zul je dus even achter de reden moeten gaan waarom mssql.dll niet wordt geladenquote:Op donderdag 3 mei 2007 09:35 schreef DJRandall het volgende:
[..]
Ik hou geen log bij.
Moet ik na dll kopieren de server herstarten? ( iig zonder, werkt het niet )
1 2 3 4 | $query = "SELECT klant.Email, klant.C_email, extracontactpersoon.Email FROM klant, extracontactpersoon WHERE klant.Nieuwsbrief ='Ja' AND klant.Email LIKE '%@%' AND klant.Klantvan = '$verkoper' AND klant.Klantvan = extracontactpersoon.Klantvan"; ?> |
Of je past je php.ini gewoon aanquote:Op donderdag 3 mei 2007 10:01 schreef DJRandall het volgende:
Ik heb het antwoord hier gevonden:
http://www.issociate.de/b(...)_-_command_line.html
Ik moet de benodigde DLL's handmatig aanroepen ( en in system32 map zetten )
dus in het begin van de php: dl("php_mssql.dll");
Daarna werkt het prima!
Bedankt voor de input!
echo je query en echo de eventuele mysql_error(). kan je die resultaten even posten?quote:Op donderdag 3 mei 2007 10:19 schreef Xtr3mE het volgende:
Ik heb een probleempje met een SQL query:
Ik wil uit meerdere gegevens uit 2 tabellen halen in 1 query.
Ik heb de tabellen klant en extracontactpersoon en ik wil uit de tabel klant de waardes Email en C_email eruit lezen
Uit de tabel extracontactpersoon wil ik de waarde Emaill uitlezen.
Ik heb de volgende code maar die is denk ik best wel fout, en kom er niet uit zelf..
[ code verwijderd ]
Iemand ?
Met de functie array_rand()quote:Op donderdag 3 mei 2007 21:21 schreef Qunix het volgende:
Ik heb vier kolommen met wat tekst. Ze moeten allemaal getoond worden alleen op welke plek maakt me niet uit. Ieder kolom heeft een nummer. Ik wil dit met een rand(); functie doen.
Als ik rand(1, 4); doe, dan pakt hij een willekeurige nummer. Als ik dit voor iedere kolom doe, dan is er een kans dat hij een kolom 2x toont omdat er bv 2 dezelfde nummers zijn door de rand();. Hoe los ik dit op?
Of kan het op een andere manier?
1 |
Thanks.quote:Op donderdag 3 mei 2007 21:47 schreef doka het volgende:
[..]
Met de functie array_rand()
[ code verwijderd ]
Als $oudearray vier elementen bevat, bevat $newarr hierna die 4 elementen in willekeurige volgorde.
Klein dingetje...quote:
1 2 3 4 5 6 7 8 9 10 | $oldarr = array("left", "leftcenter", "rightcenter", "right"); $kolommen = array_rand($oldarr, 4); echo "<pre>"; print_r($kolommen); echo "</pre><br><br>"; echo $kolommen[3]; ?> |
hierom:quote:Op donderdag 3 mei 2007 22:24 schreef Qunix het volgende:
[..]
Klein dingetje...
[ code verwijderd ]
Ik krijg alleen het getal te zien. Hoe kan dat?
http://nl2.php.net/function.array_randquote:If you are picking only one entry, array_rand() returns the key for a random entry. Otherwise, it returns an array of keys for the random entries. This is done so that you can pick random keys as well as values out of the array.
1 2 3 4 5 6 7 8 9 10 | $oldarr = array("left", "leftcenter", "rightcenter", "right"); $kolommen = array_rand($oldarr, 4); echo "<pre>"; print_r($kolommen); echo "</pre><br><br>"; echo $oldarr[$kolommen[3]]; ?> |
Hij werkt! Tnxquote:Op donderdag 3 mei 2007 22:37 schreef mschol het volgende:
[..]
hierom:
[..]
http://nl2.php.net/function.array_rand
dus als je het goed wilt doen doe je dit:
[ code verwijderd ]
Wat zou ik aan moeten passen in de php.ini?quote:Op donderdag 3 mei 2007 13:05 schreef George.W.Bush het volgende:
[..]
Of je past je php.ini gewoon aan
Conclusie: als je php.exe los aanroept laadt hij die INI-file niet. Al geprobeerd die ini-file in c:\windows\ te zetten? Of kijk even in een README, misschien dat daar wat tips in staan over het gebruik van PHP als CLI executable.quote:Op vrijdag 4 mei 2007 08:48 schreef DJRandall het volgende:
[..]
Wat zou ik aan moeten passen in de php.ini?
De juiste dll's worden al geladen in php.ini!
Alleen php.exe via cmd gebruikt die dll's niet!
Je MOET ze apart aanroepen.
Dus ik moet dan datetime gebruiken?quote:Op woensdag 2 mei 2007 09:16 schreef Geqxon het volgende:
[..]
Precies, als je dan toch met PHP werkt kan het inderdaad vaak makkelijker om met timestamps te werken. Strtotime is een mooie functie waar je simpelweg "-1 day" als string in kan voeren.
Ik vraag mij daardoor ook af wie er MySQL in combinatie met iets anders gebruikt dan bijvoorbeeld PHP of Java / C.
Die conclusie lees ik niet in zijn post, ik zou zeggen: lees de relevante posts hier eens door en maak zelf een beslissing over wat je het handigst vindtquote:Op vrijdag 4 mei 2007 09:55 schreef super-muffin het volgende:
[..]
Dus ik moet dan datetime gebruiken?
1 2 | SELECT * FROM `persons` WHERE l_name LIKE A % |
Dat kan toch gewoon met een OR in je where-clause?quote:Op zaterdag 5 mei 2007 16:54 schreef mschol het volgende:
maar kan ik dit niet combineren in 1 querie? (vind ik zelf handiger te verwerken in mijn script...)
Ja.quote:Op zaterdag 5 mei 2007 16:55 schreef Aibmi het volgende:
[..]
Dat kan toch gewoon met een OR in je where-clause?
quote:Op zaterdag 5 mei 2007 16:55 schreef Aibmi het volgende:
[..]
Dat kan toch gewoon met een OR in je where-clause?
Index errors op variabelen die nog niet bestaan? Dat is wel een beetje vreemd, meestal krijg je die op arrays waarbij je een key aanspreekt die nog niet bestaat :Pquote:Op zondag 6 mei 2007 16:45 schreef mschol het volgende:
bestaat in php een functie die gelijk staat aan dim van VBscript??
(dus in 1x een heleboel lege variabelen creeren?)
ik zit nu namelijk zoveel mogelijk index error's weg te werken maar dan krijg je dus een hele rits variable = ''; in je bestand...
1 2 3 4 5 6 7 8 9 10 | $a = false; $b = 3; if (functieReturnWaarde()) { $a = true; } $b += ($a ? 2 : 3); unset($a); ?> |
1 2 3 | if ($naam == false) ?> |
nee ik had ze nog niet gedefineerd en dan krijg je idd index errorsquote:Op zondag 6 mei 2007 16:54 schreef JeRa het volgende:
[..]
Index errors op variabelen die nog niet bestaan? Dat is wel een beetje vreemd, meestal krijg je die op arrays waarbij je een key aanspreekt die nog niet bestaat :P
1 2 3 4 5 6 7 | $var1 = ''; $var3 = ''; $var2 = ''; //hier je code ?> |
Zou je een voorbeeld kunnen geven van een stuk code dat die error geeft?quote:Op zondag 6 mei 2007 17:28 schreef mschol het volgende:
[..]
nee ik had ze nog niet gedefineerd en dan krijg je idd index errors
Het hangt van je error_reporting af. Als je ook waarschuwingen weergeeft kun je een melding krijgen wanneer je probeert te lezen van een ongeinitializeerde variabele, bijvoorbeeld:quote:Op zondag 6 mei 2007 17:30 schreef JeRa het volgende:
[..]
Zou je een voorbeeld kunnen geven van een stuk code dat die error geeft? :) Want voor zover ik weet krijg je die error alleen in combinatie met arrays, en dan is het niet de variabele die de error geeft, maar de array.
1 2 3 4 | error_reporting(E_ALL); echo $hoi ?> |
Mijn tactiek is dan juist om dat altijd aan te zetten en je scripts dan zo te schrijven dat je die fouten niet krijgt.quote:Op zondag 6 mei 2007 18:09 schreef JortK het volgende:
ja die error_reporting(E_ALL); is echt dodelijk voor het tonen van al je meldingen haha
Ik heb deze functie eigenlijk altijd alleen maar aanstaan voor debuggen
Ja bij het ontwikkelen heb ik het ook altijd aan staan, maar daarna haal ik hem eruit.quote:Op zondag 6 mei 2007 18:13 schreef cyberstalker het volgende:
[..]
Mijn tactiek is dan juist om dat altijd aan te zetten en je scripts dan zo te schrijven dat je die fouten niet krijgt.
Ja, dat weet ik. Maar krijg je dan een index error (daar ging het om namelijk)?quote:Op zondag 6 mei 2007 17:56 schreef cyberstalker het volgende:
[..]
Het hangt van je error_reporting af. Als je ook waarschuwingen weergeeft kun je een melding krijgen wanneer je probeert te lezen van een ongeinitializeerde variabele, bijvoorbeeld:
[ code verwijderd ]
Wat bedoel je met index error? Een error als je een arrayelement wilt lezen wat nog niet bestaat?quote:Op zondag 6 mei 2007 18:22 schreef JeRa het volgende:
[..]
Ja, dat weet ik. Maar krijg je dan een index error (daar ging het om namelijk)?
Ja, zie mijn vorige posts waar ik mschol quotequote:Op zondag 6 mei 2007 18:30 schreef cyberstalker het volgende:
[..]
Wat bedoel je met index error? Een error als je een arrayelement wilt lezen wat nog niet bestaat?
zie de reactie van cyberstalker onder jouw reactie, dat is exact wanneer het gebeurd, nou probeer ik em zelfs met Error reporting op E_All em zo schoon mogelijk te hebben, en dan komt soms die Index error voorquote:Op zondag 6 mei 2007 17:30 schreef JeRa het volgende:
[..]
Zou je een voorbeeld kunnen geven van een stuk code dat die error geeft?Want voor zover ik weet krijg je die error alleen in combinatie met arrays, en dan is het niet de variabele die de error geeft, maar de array.
Ik krijg dan 'unknown variable'.quote:Op zondag 6 mei 2007 19:36 schreef mschol het volgende:
[..]
zie de reactie van cyberstalker onder jouw reactie, dat is exact wanneer het gebeurd, nou probeer ik em zelfs met Error reporting op E_All em zo schoon mogelijk te hebben, en dan komt soms die Index error voor
Ja dat kan ook.quote:
hmmm.. oke., ik heb kennelijk wat te lang zitten coden...quote:
ja dat dacht ik ook...quote:Op maandag 7 mei 2007 16:06 schreef fokME2 het volgende:
Ligt dat niet aan de encoding?
1 |
oplossing zat wel die kant op:quote:Op maandag 7 mei 2007 16:43 schreef fokME2 het volgende:
Misschien zelf voor de zekerheid de encoding meegeven in de headers?
[ code verwijderd ]
Edit: Dat werkt dus niet. o|O
1 2 3 | htmlentities($alt_title,ENT_NOQUOTES,"UTF-8") ?> |
quote:Op maandag 7 mei 2007 17:11 schreef mschol het volgende:
[..]
oplossing zat wel die kant op:
ik gebruikte de functie htmlentities en die moest ik de encoding meegeven..
dus met
[ code verwijderd ]
werd alles goed weergegeven
En hoe update ik dat of moet ik dan php5 installeren?quote:Op maandag 7 mei 2007 17:48 schreef JeRa het volgende:
@Bill.Clinton
De standaard mysql-extensie van PHP ondersteunt niet het nieuwe authenticatieprotocol van MySQL, je kunt daarvoor mysqli of PDO gebruiken
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 | $result = mysql_query($query); $count = mysql_num_rows($result); $counter = 0; $cats = array(); // alle informatie in arrays gooien while(list($id, $naam, $parent, $actief) = mysql_fetch_row($result)){ $cats[$counter] = array($id, $naam, $parent, $actief); $counter++; } // aantal categorieen $aantal = count($cats); $aantal = $aantal - 1; // array uitlezen for ($i=0; $i<=$aantal; $i++){ // root laag if ($cats[$i][2] == 0){ echo $cats[$i][1]; echo $cats[$i][2]; echo "<br>"; } } |
Welke versie van MySQL gebruik je en hoe ziet je databasemodel eruit?quote:Op maandag 7 mei 2007 19:45 schreef markiemark het volgende:
Ik ben een kleine applicatie aan het maken, maar wel met iets ingewikkelds er in.. voor mij..
Ik wil categorieën kunnen beheren met daaronder subcategorieën. Nu wil ik alle categorieen in een keer ophalen, in een array gooien en vervolgens sorteren. De root categorieen haal ik zo op:
[ code verwijderd ]
Dit werkt.. Maar hoe krijg ik nu de sub categorieen daar onder?
Hmmz, ik heb 4.4.2 draaien dus dat kan het probleem niet veroorzaken?quote:Op maandag 7 mei 2007 18:09 schreef George.W.Bush het volgende:
[..]
En hoe update ik dat of moet ik dan php5 installeren?
-edit- 4.3.11 of 5.0.4 inderdaad
Waarom MS SQL eigenlijk? kleven daar nog flinke voordelen aan of gewoon omdat je in een IIS-achtige omgeving draait ofzo?quote:Op dinsdag 8 mei 2007 18:39 schreef JortK het volgende:
Ik ga nu beginnen met PHP en MS SQL 2005
Het draait nu naar behoren kijken hoever ik kom met de functies die PHP voor MS SQL heeft
MSSQL no offence tegenover de MySQL fanaten is toch een van de meer stabielere database systemen.quote:Op dinsdag 8 mei 2007 18:49 schreef Intrepidity het volgende:
[..]
Waarom MS SQL eigenlijk? kleven daar nog flinke voordelen aan of gewoon omdat je in een IIS-achtige omgeving draait ofzo?
Zoals daar zijn?quote:Op dinsdag 8 mei 2007 19:08 schreef JortK het volgende:
En het aantal functionaliteit van MS SQL (en zeker 2005) is vele malen groter als MySQL als database systeem.
Helaas geen behoorlijke error afhandeling, maar ik zal morgen wel ff een scriptje daarvor plaatsen.quote:Op dinsdag 8 mei 2007 18:39 schreef JortK het volgende:
Ik ga nu beginnen met PHP en MS SQL 2005
Het draait nu naar behoren kijken hoever ik kom met de functies die PHP voor MS SQL heeft
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <form id="enquete" name="vragen" method="post" action="post.php"> <span class="vraag">01. Vraag 1!</span><br /> <label><input class="radio" type="radio" name="vraag1" value="a" /></label> Blah!<br /> <label><input class="radio" type="radio" name="vraag1" value="b" /></label> Blah!<br /> <label><input class="radio" type="radio" name="vraag1" value="c" /></label> Blah!<br /> <label><input class="radio" type="radio" name="vraag1" value="d" /></label> Blah!<br /> <br /> <span class="vraag">02. Vraag 2!</span><br /> <label><input class="radio" type="radio" name="vraag2" value="a" /></label> Blah!<br /> <label><input class="radio" type="radio" name="vraag2" value="b" /></label> Blah!<br /><br /> <br /> <INPUT name="Submit" type="submit" value="Submit"> </form> ?> |
1 2 3 | inhoud_van_regel_2 inhoud_van_regel_3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function get_sql_error () { $sql = "select @@ERROR as code"; $result = mssql_query($sql); $row = mssql_fetch_array($result); $code = $row["code"]; // error code $sql = "select cast (description as varchar(255)) as errtxt from master.dbo.sysmessages where error = $code and msglangid = 1033"; // german $result = mssql_query($sql); $row = mssql_fetch_array($result); if ($row) $text = $row["errtxt"]; // error text (with placeholders) else $text = "unknown error"; mssql_free_result($result); return "[$code] $text"; } ?> |
1 2 3 4 5 6 7 | FROM weblog_posts LEFT JOIN users ON users.id = weblog_posts.user_id LEFT JOIN weblog ON weblog.id = weblog_posts.weblog_id WHERE weblog_posts.message LIKE '%weblog%' GROUP BY weblog_posts.id LIMIT 0 , 30 |
Ja als hij het aantal records wil weten wel jaquote:Op woensdag 9 mei 2007 12:39 schreef JeRa het volgende:
@Chandler
Het enige wat ik nu even kan bedenken is dat hij COUNT(weblog_posts.id) als een aggregaatfunctie ziet bij "GROUP BY weblog_posts.id", waardoor hij het aantal weblog_posts.id's pér weblog_posts.id gaat tellen. Dan zou je als het goed is een hoop records met '1' moeten terugkrijgen. Zoek je niet toevallig COUNT(*)?
1 2 3 | $filename = tempnam("images", "news".$lastnewsid); ?> |
Dat lijkt me echt iets om in PHP op te lossen en niet in SQL.quote:Op woensdag 9 mei 2007 10:19 schreef HuHu het volgende:
[...]
Er staan dus 3 regels tekst in, gescheiden door een newline. Nu wil ik een view maken waarin elke regel zijn eigen cel krijgt. Ik kan de inhoud van de cel splitsen op '\n' en er zo 3 losse cellen van maken.
[...]
Ja, maar de 3 resultaat-cellen worden gebruikt in een externe applicatie die via ODBC de database uitleest. Ik kon dit dus niet in PHP oplossen en van de externe applicatie heb ik niet de beschikking over de broncode.quote:Op woensdag 9 mei 2007 17:24 schreef SuperRembo het volgende:
[..]
Dat lijkt me echt iets om in PHP op te lossen en niet in SQL.
Als je het in combinatie doet met mysql dan kan je toch net zo goed het bestand naar de sleutel vernoemen (altijd uniek...)?quote:Op woensdag 9 mei 2007 17:17 schreef hornage het volgende:
ik ben bezig met een fotouploadscript. Nu wil ik ervoor zorgen dat elke filename uniek is als ik hem wegschrijf. Ik vond hiervoor de mooie functie tempnam maar ik snap nog niet geheel hoe ik deze werkend krijg.
[ code verwijderd ]
Dit doe ik en ik krijg dan een pad naar een windows temp bestand terug.
Mijn bedoeling is dat ik een naam terugkrijg waarmee ik hem uniek in de map images op kan slaan. De bestandsnaam begint dan met news01 en daarna wat rommel om hem uniek te maken. Iemand een idee hoe dit te doen?
Daarvoor kun je de functie uniqid gebruiken wat een uniek id maakt.quote:Op woensdag 9 mei 2007 17:17 schreef hornage het volgende:
ik ben bezig met een fotouploadscript. Nu wil ik ervoor zorgen dat elke filename uniek is als ik hem wegschrijf. Ik vond hiervoor de mooie functie tempnam maar ik snap nog niet geheel hoe ik deze werkend krijg.
[ code verwijderd ]
Dit doe ik en ik krijg dan een pad naar een windows temp bestand terug.
Mijn bedoeling is dat ik een naam terugkrijg waarmee ik hem uniek in de map images op kan slaan. De bestandsnaam begint dan met news01 en daarna wat rommel om hem uniek te maken. Iemand een idee hoe dit te doen?
Ik zag vandaag toevallig een database-opzet voor een commerciële applicatie waarbij *alle* PK's gegenereerde UUID's waren. Wat bezielt sommige mensen?quote:
quote:Op woensdag 9 mei 2007 20:24 schreef CraZaay het volgende:
Ik gebruik DOMXML voor het parsen van een XML-bestand, maar ik krijg het niet voor elkaar om de waarde van een element uit te lezen (dus <element>waarde</element>). Wie heeft de gouden tip, want van de manual word ik ook niet echt wijzer (alle pogingen lijken niet te werken)?
1 2 3 | preg_match('<element>(.*?)</element>',$string); ?> |
Da's toch lichtelijk ranzig wat mij betreft hoorquote:Op woensdag 9 mei 2007 21:07 schreef mschol het volgende:
[..]
[ code verwijderd ]
even uit mijn hoofd hoor...
window.opener is een referentie naar het venster wat het nieuwe venster aanroept. Daarmee kun je gewoon variabelen of de DOM tree aanpassenquote:Op woensdag 9 mei 2007 22:48 schreef JortK het volgende:
Weet iemand hoe ik een nieuw browser venster kan openen, maar zeg maar als een soort dialoog scherm van me current browser window?
En dan die output vanuit het dialog window weer terug kan geven aan me current browser window?
Thanks!quote:Op woensdag 9 mei 2007 22:56 schreef cyberstalker het volgende:
[..]
window.opener is een referentie naar het venster wat het nieuwe venster aanroept. Daarmee kun je gewoon variabelen of de DOM tree aanpassen.
Hmm, zelf niet veel ervaring met parsen van bepaalde elementen van een DOM XML via PHP, maar op deze pagina staan alle Dom XML functies/classes van PHP. DomNode->child_nodes is kennelijk geschikt voor het parsen van elementen met meerdere childs.quote:Op woensdag 9 mei 2007 21:15 schreef CraZaay het volgende:
[..]
Da's toch lichtelijk ranzig wat mij betreft hoor
Ik wil graag DOMXML gebruiken om het XML-document te parsen, en het document niet als een string behandelen.
Waarschijnlijk is het issue dat een element meerdere kinderen heeft, omdat bijv. een tab ook een node is. Dan moet je weer gaan loopen om de eerste TextNode te vinden (net zoals in Javascript), maar ik vroeg me af of er geen functie is binnen de DOMXML-library die dit vanzelf doet.
Inderdaad is window.opener de referentie naar de window die je betreffende window geopend heeft. Een mooiere oplossing vind ik echter een <div>je die als 'venster' fungeert, in plaats van zo'n lelijk nieuw browservenster. Kun je 'm ook helemaal zelf stijlen.quote:
Weet ik en had uiteraard de manual al gelezenquote:Op woensdag 9 mei 2007 23:13 schreef Tuvai.net het volgende:
[..]
Hmm, zelf niet veel ervaring met parsen van bepaalde elementen van een DOM XML via PHP, maar op deze pagina staan alle Dom XML functies/classes van PHP. DomNode->child_nodes is kennelijk geschikt voor het parsen van elementen met meerdere childs.
Zoals ik al dacht heeft een element meerdere nodes in zich en gaat het om de text node.quote:Op donderdag 10 mei 2007 00:37 schreef CraZaay het volgende:
[..]
Weet ik en had uiteraard de manual al gelezen :) Punt is dus dat ik de waarde (cdata) van die child nodes wil hebben, maar dat lijkt nog niet zo makkelijk :P
1 2 3 4 5 6 7 | { if ($child2->node_type() == XML_TEXT_NODE) { echo($child->node_value()); } } |
Hoe bedoel je precies met een DIV, hoe kan ik op die manier een nieuw window opbouwen dan?quote:Op woensdag 9 mei 2007 23:13 schreef Tuvai.net het volgende:
Inderdaad is window.opener de referentie naar de window die je betreffende window geopend heeft. Een mooiere oplossing vind ik echter een <div>je die als 'venster' fungeert, in plaats van zo'n lelijk nieuw browservenster. Kun je 'm ook helemaal zelf stijlen.
Maak een 'zwevende' div die je met CSS styled als venster. Het is dus geen nieuw venster, maar een neppe.quote:Op donderdag 10 mei 2007 15:34 schreef JortK het volgende:
[..]
Hoe bedoel je precies met een DIV, hoe kan ik op die manier een nieuw window opbouwen dan?
* JortK wordt nu toch wel nieuwsgierig
Ik gaat eens kijken, als iemand toevallig nog een tut ervoor heeft, genre postenquote:Op donderdag 10 mei 2007 15:36 schreef Piles het volgende:
[..]
Maak een 'zwevende' div die je met CSS styled als venster. Het is dus geen nieuw venster, maar een neppe.
Zie als voorbeeld het PM systeem hier, als je het voorbeeld van een nieuw bericht bekijkt
OOhhhh die is goed die tipquote:Op donderdag 10 mei 2007 15:56 schreef CraZaay het volgende:
En een extragatis tip: leg tussen het 'venster' en de rest van de content een viewport-vullende div met een (semi-)transparante achtergrond als je niet wilt dat bezoekers buiten dat 'venster' op een link kunnen klikken.
Die is behoorlijk brak. Als je scrolt gaat het al misquote:
LOL je hebt gelijkquote:Op donderdag 10 mei 2007 16:00 schreef SuperRembo het volgende:
[..]
Die is behoorlijk brak. Als je scrolt gaat het al mis
Onder Safari gaat het scrollen wel goed, het is alleen jammer dat hij linksboven aan het venster snapt, en hij alle tekst op de pagina selecteert.quote:Op donderdag 10 mei 2007 16:00 schreef SuperRembo het volgende:
[..]
Die is behoorlijk brak. Als je scrolt gaat het al mis
Daarnaast gaat het bewegen fout, het maximaliseren is ruk en staat er levensgroot "deprecated" boven. Laat staan dat het er in m'n linuxdistro ontzettend lelijk uit zietquote:Op donderdag 10 mei 2007 16:00 schreef SuperRembo het volgende:
[..]
Die is behoorlijk brak. Als je scrolt gaat het al mis
Hebben jullie misschien een idee wat dat kan zijn? Indien ik de pagina niet include dan doet deze het wel. Zie hier.quote:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Zie voor meer info dus [PHP&MySQL] Includen en "correct" uitlezen uit de databasequote:Op donderdag 10 mei 2007 17:09 schreef poepeneesje het volgende:
Ik krijg de volgende error als ik probeer een pagina met daarin data uit een MsyQL-database probeer te includen:
Waarschijnlijk gebruik je ergens identieke variabellen-namen in de verschillende bestanden?quote:Op donderdag 10 mei 2007 17:09 schreef poepeneesje het volgende:
Beste mede-fokkers,
Ik krijg de volgende error als ik probeer een pagina met daarin data uit een MsyQL-database probeer te includen:
[..]
Hebben jullie misschien een idee wat dat kan zijn? Indien ik de pagina niet include dan doet deze het wel. Zie hier.
Poepeneesje.
Zou je zeggen ja!.quote:Op woensdag 9 mei 2007 12:39 schreef JeRa het volgende:
@Chandler
Het enige wat ik nu even kan bedenken is dat hij COUNT(weblog_posts.id) als een aggregaatfunctie ziet bij "GROUP BY weblog_posts.id", waardoor hij het aantal weblog_posts.id's pér weblog_posts.id gaat tellen. Dan zou je als het goed is een hoop records met '1' moeten terugkrijgen. Zoek je niet toevallig COUNT(*)?
Ik zal wel moeten, dit omdat ik 2 queries draai.quote:Op woensdag 9 mei 2007 13:38 schreef JortK het volgende:
Ja als hij het aantal records wil weten wel ja :Y
Het is trouwens nooit aan te raden om een veld wat in een aggregate function staat ook in een groupy by te gebruiken.
1 |
Huh?quote:Op donderdag 10 mei 2007 17:57 schreef Chandler het volgende:
[..]
group by is namelijk een vereiste bij joins..![]()
PHP komt met een interpreter die je vanaf de command-line kunt aanroepen met een PHP file als argument. Bijvoorbeeld onder DOS:quote:Op donderdag 10 mei 2007 19:06 schreef Geqxon het volgende:
Bestaat er voor bijvoorbeeld Mac OS X een PHP compiler? Dat ik in de terminal gewoon PHP commands (of desnoods een lap code) in kan voeren, en hij het resultaat teruggeeft?
Zou voor sommige kleine testpunten wel makkelijk zijn
1 |
@jera; dat doe je normaal toch met MySQL_NUM_ROWS... maar dan is de query al in zijn geheel uitgevoerd... en dat wil ik dus voorkomen qua preformance.quote:Op donderdag 10 mei 2007 18:53 schreef JeRa het volgende:
@Chandler
Het is nog steeds niet duidelijk wat je precies wilt tellen; het aantal mogelijke resultaten kun je eventueel afleiden door SQL_CALC_FOUND_ROWS en FOUND_ROWS() te gebruiken, het aantal resultaten per pagina bepaal je enerzijds vantevoren en anderzijds door te kijken hoeveel records je terugkrijgt.
@SuperRembo
Hij bedoelt dat hij een GROUP BY moet plaatsen omdat ie anders één item meerdere keren als zoekresultaat terugkrijgt
1 2 3 4 5 6 | FROM weblog_posts LEFT JOIN users ON users.id = weblog_posts.user_id LEFT JOIN weblog ON weblog.id = weblog_posts.weblog_id WHERE weblog_posts.subject LIKE '%post%' GROUP BY weblog_posts.id |
1 2 3 4 5 6 | FROM weblog_posts LEFT JOIN users ON users.id = weblog_posts.user_id LEFT JOIN weblog ON weblog.id = weblog_posts.weblog_id WHERE weblog_posts.subject LIKE '%post%' GROUP BY weblog_posts.id |
Ook niet...quote:Op donderdag 10 mei 2007 17:41 schreef Tuvai.net het volgende:
[..]
Waarschijnlijk gebruik je ergens identieke variabellen-namen in de verschillende bestanden?
1 |
1 2 3 4 5 6 | FROM weblog_posts wp JOIN users u ON u.id=wp.user_id JOIN weblog w ON w.id=wp.weblog_id WHERE wp.subject LIKE '%post%' ORDER BY wp.id |
Als jij een COUNT(*) doet moet MySQL toch de hele query uitvoeren, dus qua performance zit je niet goed. Sterker nog, je moet echt eens kijken naar SQL_CALC_FOUND_ROWS, omdat je daarmee óók met een LIMIT-clausule het totaal aantal rijen kunt bepalen, en je dus maar één query hoeft uit te voerenquote:Op donderdag 10 mei 2007 19:16 schreef Chandler het volgende:
[..]
@jera; dat doe je normaal toch met MySQL_NUM_ROWS... maar dan is de query al in zijn geheel uitgevoerd... en dat wil ik dus voorkomen qua preformance.
"De eerste resultaten"? En je weet dat een COUNT() zonder LIMIT alsnog de hele query uitvoert?quote:Op donderdag 10 mei 2007 19:47 schreef Chandler het volgende:
Helaas zit je toch FOUT!hehe
Stel een gebruiker wil het volgende.
1. Kijken hoeveel postings het woord (post) hebben.
2. Kijken hoeveel reacties een gebruiker heeft gepost (op basis van inner join met 'users')
3. Kijken hoeveel reacties een IP adres heeft en ga zo maar door.
Daarom moet ik de eerste resultaten doro een count halen. Daarna kan ik deze per pagina laten oproepen... Of zit ik nou raar te spacen?
Alleen als die velden daadwerkelijk opgehaald worden. Als je SQL_CALC_FOUND_ROWS gebruikt, wordt jouw tweede query uitgevoerd en zodra de LIMIT bereikt is gaat ie verder joinen (zonder de waarden op te halen!) en doet ie in feite een COUNT(*). Reken daarbij dat je maar de overhead van één grote en één kleine query hebt t.o.v. één grote en één normale query en je hebt performancewinst.quote:Op donderdag 10 mei 2007 21:45 schreef Chandler het volgende:
Dat weet ik, maar als je een query uitvoert op alle velden van een tabel of alleen op de ID's van een tabel scheelt dit toch aardig in de preformance?
"query uitvoeren op"? Het verschil zit 'm toch enkel in de hoeveelheid data die je retourneert? de where-claus blijft hetzelfde, net als de joins, etc.quote:Op donderdag 10 mei 2007 21:45 schreef Chandler het volgende:
Dat weet ik, maar als je een query uitvoert op alle velden van een tabel of alleen op de ID's van een tabel scheelt dit toch aardig in de preformance?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <tr> <td>titel 1</td> <td>titel 2</td> </tr> <tr> <td>titel 1</td> <td>titel 2</td> </tr> <tr> <td>titel 1</td> <td>titel 2</td> </tr> <tr> <td>titel 3</td> <td>titel 4</td> </tr> </table> |
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 | while($Details03 = mysql_fetch_assoc($result_detail03)) { if($kolom < 2) { if($kolom == 0) {$tabel .= "\r\t<tr>";} if($Details03['title_language'] != '') { $tabel .= "\r\t\t<td>".$Details03['title']."(".$Details03['title_language'].")</td>"; } else { $tabel .= "\r\t\t<td>".$Details03['title']."</td>"; } $kolom++; } else { $tabel .= "\r\t</tr>"; $kolom = 0; } } $tabel .= "\r\t</tr>"; ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |