Dat gezeik dat de jouwe korter is. I dont care. Als het maar doet wat het moet doen en duidelijk is.quote:
Lolquote:Op donderdag 27 augustus 2009 13:00 schreef GlowMouse het volgende:
Ha ha, nu moet jij een nieuwe aanmaken.
Zeikenquote:Op donderdag 27 augustus 2009 13:02 schreef Moozzie het volgende:
[..]
Dat gezeik dat de jouwe korter is.
Nou gelet op je overtrokken reactie blijkbaar wel.quote:I dont care.
Ja, ik heb volgens mij nergens a. een waarde oordeel aan het script gehangen of b. aanleiding gegeven om voor jou te denken dat ik er anders over denk.quote:Als het maar doet wat het moet doen en duidelijk is.
Ik kan wel een compact script schijven van 10 regels en dat nu begrijpen. Maar ik moet het over een jaar nog steeds begrijpen als ik het weer in zie omdat er iets aangepast moet worden. Dan schrijf ik liever een duidelijk script van 20 regels wat ik na een jaar meteen weer snap door de duidelijkheid en nodige comments
Doel je op de date_format? kun je eens meer info geven?quote:Op donderdag 27 augustus 2009 12:58 schreef GlowMouse het volgende:
[..]
Beter: je returnt de data die je nodig hebt voor de output. Serieus, als ik zo'n script tegenkom als het jouwe dan begin ik liever opnieuw.
En Chandler: voorkom toepassen van functies op kolomnamen omdat dat niet indexeerbaar is.
Het was geen kritiek hoor, het viel me op.quote:Op donderdag 27 augustus 2009 13:08 schreef Chandler het volgende:
@Swets; mijn class is bedoeld om de data uit te lezen en eventueel in te voeren, zo beknopt maar flexibel mogelijk. Meer heeft een poll eingelijk niet nodig.
Twitter gebruikt UTF-8 (iig voor de website). Dan zou je dus zonder problemen ¤ moeten kunnen gebruiken en heb je geen html entity nodig.quote:Op donderdag 27 augustus 2009 11:38 schreef Swetsenegger het volgende:
Ik heb een vraagje. Ik heb een site die wat tweets naar twitter verstuurt. En i9n die tweets staat een euro teken. Nu doe ik dat met & euro; zodat ik een crossplatform euroteken krijg. Maar.... voor twitter zijn ook allerlei desktop applicaties en die zijn in de regel NIET webbased. En in plaats van een mooi teken zie die nu dus de html entity.
Zend dan gewoon het euroteken daadwerkelijk mee, maar dan heb ik het probleem dat een ¤ er op bv OSX of Linux er als ĉ ofzo uitziet.
Hoe krijg ik een cross platform, cross applicatie euroteken?
Ja, maar desktop apps zijn niet altijd UTF-8. Dus krijg ik op OSX in een twitter app bv geen ¤ te zien. Ik vraag me af of ik niet wat in ASCII kan doen ofzo.quote:Op donderdag 27 augustus 2009 13:11 schreef Light het volgende:
[..]
Twitter gebruikt UTF-8 (iig voor de website). Dan zou je dus zonder problemen ¤ moeten kunnen gebruiken en heb je geen html entity nodig.
Der zijn wel een hoop dingen die ik anders zou doen.quote:Op donderdag 27 augustus 2009 10:34 schreef Chandler het volgende:
Mag ik commentaar op mijn class? wil nameljik leren en juist door te spelen leer ik dus.
PS ik gebruik mijn eigen mysql class, deze werkt nog niet middels PDO maar komt ooit nog
[ code verwijderd ]
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 | id (int) title (varchar * 64) comment (text) date_started (date) date_ended (date) answers (tinyint) votes (int) views (int) tinyPollAnswers id (int) pollID (int) answer (varchar * 64) votes (int) tinyPollVotesIp id (int) ip (varchar * 64) hostname (varchar * 128) tinyPollVotes ipID (int) pollID (int) answerID (int) votedate (date) |
1 2 3 4 5 6 7 8 9 10 | tinyPoll.id FROM tinyPoll LEFT JOIN tinyPollAnswers ON tinyPollAnswers.pollID = tinyPoll.id WHERE tinyPoll.id = '" . $this->db->escape($pollID) . "' AND tinyPollAnswers.id = '" . $this->db->escape($answerID) . "' AND UNIX_TIMESTAMP(date_ended) > NOW() LIMIT 1 |
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 | tpo_id tpo_title tpo_comment tpo_date_started tpo_date_ended tpo_answers tpo_votes tpo_views tiny_poll_answer tpa_id tpa_tpo_id tpa_answer tpa_votes tiny_poll_votes_ip tpi_id tpi_ip tpi_hostname tiny_poll_vote tpv_tpi_id tpv_tpo_id tpv_tpa_id tpv_votedate |
1 2 3 4 5 6 7 8 9 10 | tpo_id FROM tiny_poll LEFT JOIN tiny_poll_answer ON tpa_tpo_id = tpo_id WHERE tpa_tpo_id = '" . $this->db->escape($pollID) . "' AND tpa_id = '" . $this->db->escape($answerID) . "' AND UNIX_TIMESTAMP(tpo_date_ended) > NOW() LIMIT 1 |
Mwa dus totaal niet mee eens. Wij hebben hier tabellen met miljoenen records en hadden eerst varchar. De hele boel liep daarop vast omdat het dus dynamic tabellen werden. Door er fixt tabellen van te maken werd de tabel wel groter maar onwijs veel sneller.quote:Op donderdag 27 augustus 2009 13:43 schreef GlowMouse het volgende:
>> Zelf ben ik meer van de Char dan varchar (waar kan, in combinatie met een text veld gaat dat natuurlijk niet) Char is inderdaad groter in vele gevallen maar je tabel blijft wel fixt length. Waardoor het zoeken dus sneller gaat
En er minder in je geheugen past, waardoor het juist heel veel trager wordt.
1 |
Het went vanzelfquote:Op donderdag 27 augustus 2009 13:48 schreef Swetsenegger het volgende:
Zoals hier wel weer uit blijkt is het ook een kwestie van smaak, want ik krijg dus jeuk van dit soort benamingen
[ code verwijderd ]
Als we het er dan toch over hebben dat je over een jaar terug leest, snap je in eerste instantie van dit soort afkortingen ook niets meer. ID's per tabel benoemen is met het oog op joins inderdaad wel duidelijker.
Lol, ik gebruikte altijd unix_timestamp icm now() maar weet dat unix_timestamp nogal heerlijk sloom is qua functie...quote:Op donderdag 27 augustus 2009 13:10 schreef GlowMouse het volgende:
bv.
UNIX_TIMESTAMP(date_started) < ....
omschrijven naar
date_started < FROM_UNIXTIME(...)
en
UNIX_TIMESTAMP(date_started) < NOW()
klopt niet eens: NOW() is geen unix timestamp.
1 |
Eens.quote:Op donderdag 27 augustus 2009 13:48 schreef Swetsenegger het volgende:
Zoals hier wel weer uit blijkt is het ook een kwestie van smaak, want ik krijg dus jeuk van dit soort benamingen
[ code verwijderd ]
Nope het ging fout bij de selectsquote:Op donderdag 27 augustus 2009 14:29 schreef GlowMouse het volgende:
>> date_started =< FROM_UNIXTIME(NOW(), '%Y-%m-%d')
nee, het moet zijn date_started <= NOW()
>> Ook blijf ik kiezen voor varchar aangezien de velden die geinsert worden qua data niet veranderd gaan worden (ip,
ip kan (ipv6 buiten beschouwing latend) best in een int mbv INET_ATON
>> Wij hebben hier tabellen met miljoenen records en hadden eerst varchar. De hele boel liep daarop vast omdat het dus dynamic tabellen werden. Door er fixt tabellen van te maken werd de tabel wel groter maar onwijs veel sneller.
Had je een hoop updates? Het kan zijn dat je rijen gefragmenteerd werden. En als je varchar(255) gebruikte en nu char(100) omdat je wel op lengte let, maakt dat ook behoorlijk uit, bv als je in geheugen sorteert.
Nee de records werden niet geupdatequote:Op donderdag 27 augustus 2009 14:35 schreef GlowMouse het volgende:na updates gaat het fout bij selects ja, bij rij-fragmentatie.
Ik neem aan dat deze voor mij bedoeld was. Begrijp alleen even niet wat je bedoeldquote:Op woensdag 26 augustus 2009 10:11 schreef Swetsenegger het volgende:
Dan geef je toch een header('location:.'$_SERVER['PHP_SELF'].'); na het instellen van de sessie.
dat je de pagina een keer refreshed als je de sessie heb ingesteldquote:Op donderdag 27 augustus 2009 18:00 schreef uppie83 het volgende:
[..]
Ik neem aan dat deze voor mij bedoeld was. Begrijp alleen even niet wat je bedoeld
Dat is idd wel een oplossing, maar meer symptoombestrijding ipv probleemoplossend.quote:Op donderdag 27 augustus 2009 18:12 schreef Swetsenegger het volgende:
[..]
dat je de pagina een keer refreshed als je de sessie heb ingesteld
Nee dat is het niet. Cookies en Sessies (de laatste weet ik niet zeker) werken pas de volgende keer dat de pagina geladen wordt.quote:Op donderdag 27 augustus 2009 18:22 schreef uppie83 het volgende:
[..]
Dat is idd wel een oplossing, maar meer symptoombestrijding ipv probleemoplossend.
Hmm dat geeft weer ideeenquote:Op donderdag 27 augustus 2009 18:23 schreef Swetsenegger het volgende:
[..]
Nee dat is het niet. Cookies en Sessies (de laatste weet ik niet zeker) werken pas de volgende keer dat de pagina geladen wordt.
Bij sessies zeker niet; komt omdat je sessievars direct via de superglobal instelt.quote:Op donderdag 27 augustus 2009 18:23 schreef Swetsenegger het volgende:
[..]
Nee dat is het niet. Cookies en Sessies (de laatste weet ik niet zeker) werken pas de volgende keer dat de pagina geladen wordt.
Maar de eerste keer gaat het niet goed (heb nog geen tijd gehad om het een en ander naar index te verplaatsen, dus ik heb het nog over de oude situatie zoals die in de laatste post met code stond beschreven)... of komt dat doordat ik ook session_register nog een keer gebruik?quote:Op donderdag 27 augustus 2009 18:38 schreef GlowMouse het volgende:
session_register niet meer gebruiken, is niet nodig.
En de eerste keer zou het al goed moeten gaan.
[..]
Bij sessies zeker niet; komt omdat je sessievars direct via de superglobal instelt.
Sessies niet, die kun je direct gebruiken.quote:Op donderdag 27 augustus 2009 18:23 schreef Swetsenegger het volgende:
[..]
Nee dat is het niet. Cookies en Sessies (de laatste weet ik niet zeker) werken pas de volgende keer dat de pagina geladen wordt.
Je kunt het ook in het centrale 'ik ben zwanger'-topic posten natuurlijk, met dezelfde logica als dat je het hier postte.quote:Op donderdag 27 augustus 2009 22:49 schreef raaavi het volgende:
[..]
Eujahmoet ik mn eigen topic aanmaken dan?
Hij stuurt toch output? Session_write_close() heb ik echt nog nooit gezien ergens.quote:Op donderdag 27 augustus 2009 22:49 schreef Xcalibur het volgende:
[..]
Sessies niet, die kun je direct gebruiken.
Als je wilt dat ze als sessie bewaard blijven heb je wel output naar je browser nodig, anders gaan ze verloren. Gelukkig is daar session_write_close() voor, die kun je dus aanroepen voor een redirect, zodat je sessie bewaard blifjt
css voor dummies: [CSS] voor dummies - deel 12quote:Op donderdag 27 augustus 2009 22:49 schreef raaavi het volgende:
[..]
Eujahmoet ik mn eigen topic aanmaken dan?
Ja, dat zou hier het probleem niet moeten zijnquote:Op donderdag 27 augustus 2009 22:52 schreef GlowMouse het volgende:
Hij stuurt toch output? Session_write_close() heb ik echt nog nooit gezien ergens.
Je hoeft het niet allemaal te onthouden, je kan het makkelijk opzoeken.quote:Op vrijdag 28 augustus 2009 18:38 schreef Chandler het volgende:
@SuperRembo;
Ik zal het proberen te onthouden (alles over de dates)
Wat is er zo fijn aan 64 of 128quote:Ennuh jaik zal idd eens andere waarden gebruiken, maar 64/128 werkt zo fijn
Ben ik niet helemaal met je eens. Ik heb bijvoorbeeld heel vaak 'name', 'desc' en/of 'content' kolommen in verschillende tabellen. Als je deze tabellen gaat joinen dan moet je al gaan aliassen om de correcte kolom te kunnen benaderen in je code, of je moet in je daadwerkelijke query de hele tabelnaam als identifier mee gaan geven. Dan heb ik toch liever een kleine maar duidelijke prefix.quote:Op vrijdag 28 augustus 2009 17:30 schreef SuperRembo het volgende:
Het prefixen van kolomnamen met een afkorting van de tabelnaam vind ik onzinnig. Alleen voor een PK id kolom is 't wel handig om er de naam van de tabel in te verwerken, maar gebruik die dan ook voor lalle kolommen die er naar verwijzen.
ik heb dan weer een hekel aan luie programmeurs die de hele bende gaan afkortenquote:Op vrijdag 28 augustus 2009 21:36 schreef Tuvai.net het volgende:
Als je deze tabellen gaat joinen dan moet je al gaan aliassen om de correcte kolom te kunnen benaderen in je code, of je moet in je daadwerkelijke query de hele tabelnaam als identifier mee gaan geven. Dan heb ik toch liever een kleine maar duidelijke prefix.![]()
Ik kort helemaal niks af, ik zet juist overal een prefix voor.quote:Op vrijdag 28 augustus 2009 22:38 schreef Xcalibur het volgende:
[..]
ik heb dan weer een hekel aan luie programmeurs die de hele bende gaan afkorten![]()
geef mij maar fijne aliassen en overzichtelijke namen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | session_start(); require ("php/XXX/secFunctions.php"); $_SESSION['sessionString'] = randomString(5); session_write_close(); if(!IsSet($_POST['stage'])) { <form action=" echo $_SERVER["PHP_SELF"]; ?id=gbadd" method="POST"> . <img width="150" height="100" border="0" src="image.php?random='.microtime(true).'" alt=”secImage”> <br /> <input size="50" maxlength="60" type="text" name="sec"><br /> echo "session:"; Print_r ($_SESSION); <input type="hidden" name="stage" value=1> </form> } else { ?> |
1 2 3 4 5 6 7 8 9 10 11 | header( "Content-Type: image/png"); header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" ); header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); header( "Cache-Control: no-cache, must-revalidate" ); header( "Pragma: no-cache" ); session_start(); require ("php/XXX/secFunctions.php"); createSecImage(150, 100, 100, $_SESSION['sessionString']); ?> |
nope, draait helaasch intern. Is er iets dat je nodig hebt om de grote hamvraag die mij al dagen bezig houdt te kunnen beantwoorden, dan post ik dat echter graag.quote:
Heel goedquote:Op zaterdag 29 augustus 2009 01:40 schreef uppie83 het volgende:
Begrijp ik het goed dat je niet gelooft dat het niet werkt? :p
Beetje rare reactie. Ik zit niet voor niets al dagen te nagelbijten op dit probleem. Of denk je dat ik hier mensen voor jan met de korte achternaam laat zweten op een probleem dat eigenlijk al is opgelost?quote:
Ok verkeer begrepenquote:Op zaterdag 29 augustus 2009 01:48 schreef GlowMouse het volgende:
Als ik vergelijkbare code al vaak probleemloos heb toegepast, is het toch niet zo gek dat ik eerst wat wil zien voor ik het geloof?
De beste oplossing is om jezelf een tweedeling aan te leren: je voegt een regel /******************/ toe met daarboven geen html, en daaronder geen dataverwerking meer (zoals queries).quote:Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
De regel met de doctype-declaratie is output. Als je die gehad hebt, kun je geen headers meer aanpassen en geeft de functie header() zo'n foutmelding.quote:Op zaterdag 29 augustus 2009 13:02 schreef Lamzak_ het volgende:
Ik ben een echte newbie in php, maar kan iemand mij uitleggen waarom ik deze foutmelding krijg?:
Warning: Cannot modify header information - headers already sent by (output started at /index.php:2) in /index.php on line 35
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-transitional.dtd">
2 <?php
3 include("config.php");
4 $querytekst = "SELECT * FROM teksten";
.......
35 header('Location: ' . $_SERVER['REQUEST_URI']);
dus als ik die onder dat eerste stuk mysql->php zet, dan hoort het te functioneren?quote:Op zaterdag 29 augustus 2009 13:07 schreef Light het volgende:
[..]
De regel met de doctype-declaratie is output. Als je die gehad hebt, kun je geen headers meer aanpassen en geeft de functie header() zo'n foutmelding.
Het moet in ieder geval na alle header()-regels, dus sowieso na regel 35.quote:Op zaterdag 29 augustus 2009 13:10 schreef Lamzak_ het volgende:
[..]
dus als ik die onder dat eerste stuk mysql->php zet, dan hoort het te functioneren?
Die optie maakt een HTML element aan met de CSS eigenschap page-break-after. Dat wordt op z'n beurt weer gebruikt wanneer je bijvoorbeeld een webpagina gaat afdrukken.quote:Op zaterdag 29 augustus 2009 14:04 schreef Pizzahut het volgende:
Voor mijn CMS gebruik ik voor tekst fckeditor, werk er al een tijd mee een vind het heerlijk werken.
Alleen is er een mogelijkheid om een page-break in te voeren, nu neem ik aan dat dit een optie is om een pagina te halveren, alleen hoe werkt dit? Ik voeg een page-break in maar in de output zie ik vrij weinig van die page-break.
ah zo, thx!quote:Op zaterdag 29 augustus 2009 14:09 schreef Tuvai.net het volgende:
[..]
Die optie maakt een HTML element aan met de CSS eigenschap page-break-after. Dat wordt op z'n beurt weer gebruikt wanneer je bijvoorbeeld een webpagina gaat afdrukken.
Ej, toppertje, bedanktquote:Op zaterdag 29 augustus 2009 13:23 schreef Light het volgende:
[..]
Het moet in ieder geval na alle header()-regels, dus sowieso na regel 35.
1 2 3 4 5 | [0] => Fok is een [1] => bazige site heur, [2] => luitjes! ) |
Arrgh, reguliere expressies, noooes...quote:Op maandag 31 augustus 2009 20:42 schreef GlowMouse het volgende:
Probeer eens http://nl2.php.net/manual/en/function.preg-split.php
1 2 | print_r($zin); |
1 2 | print_r($zin); |
1 2 3 | explode(" ", $string); ?> |
1 2 3 4 5 6 7 8 | ( [0] => [1] => leenttje leerde lotje [2] => [3] => lopen langs de [4] => lange lindenlaan. ) |
Als dit jouw attentionspan is, stel ik voor dat je iets anders gaat doenquote:Op maandag 31 augustus 2009 21:24 schreef GSMboy het volgende:
Ik zit al 5 minuten te kloten ermee? Dus?
Ja, TV staat naast me. En nee SBS6 staat er niet op, campingzender.quote:Op maandag 31 augustus 2009 21:27 schreef Xcalibur het volgende:
[..]
Als dit jouw attentionspan is, stel ik voor dat je iets anders gaat doen
SBS6 kijken ofzo...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <body> <h1>Toevoegen Wedstrijdverloop </h1> <form action="3.1.3_controleWedstrijdVerloop.php" method="post"> <p>Team1: <select multiple="multiple" name="team1[]" size="20"> <?php $conn = mysql_connect("localhost", "root ","") or die(mysql_error()); $db = mysql_select_db("zaalvoetbal", $conn) or die(mysql_error()); $sql = 'SELECT spelers_achternaam, spelers_voornaam FROM `spelers`'; $result = mysql_query($sql) or die (mysql_error()); if(mysql_num_rows($result)) { while ($row = mysql_fetch_assoc($result)) { echo"<option>$row[spelers_voornaam] $row[spelers_achternaam]</option>"; } } ?> </select> <input type="submit" name="teamCheck" value="ControleTeam"</> </form> </body> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <body> <?php if($_POST['ControleTeam'] != "") { $teamLeden = $_POST['ControleTeam']; echo (count($teamLeden)); if(is_null($teamLeden)) { echo("GeenTeamleden"); } else { echo (count($teamLeden)); for($i=0; $i < count($teamLeden); $i++) { echo($teamLeden[$i] . " "); } echo("</p>"); } } ?> </body> </html> |
Ga dat eerst eens in praktijk brengen want je code is rotzooi.quote:Op zaterdag 29 augustus 2009 13:06 schreef GlowMouse het volgende:
[..]
De beste oplossing is om jezelf een tweedeling aan te leren: je voegt een regel /******************/ toe met daarboven geen html, en daaronder geen dataverwerking meer (zoals queries).
je bedoelt dat ik meer functies moet aanmaken?quote:Op maandag 31 augustus 2009 22:32 schreef GlowMouse het volgende:
[..]
Ga dat eerst eens in praktijk brengen want je code is rotzooi.
En ik snap je hele probleem niet.
Dat zou de volgende stap worden. En een database-class.quote:Op maandag 31 augustus 2009 22:48 schreef jakees het volgende:
[..]
je bedoelt dat ik meer functies moet aanmaken?
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 | $conn = mysql_connect("localhost", "root ","") or die(mysql_error()); $db = mysql_select_db("zaalvoetbal", $conn) or die(mysql_error()); $sql = 'SELECT spelers_achternaam, spelers_voornaam FROM `spelers`'; $result = mysql_query($sql) or die (mysql_error()); $spelers = array(); while ($row = mysql_fetch_assoc($result)) { $spelers[] = $row; } /************************************/ <html> <body> <h1>Toevoegen Wedstrijdverloop </h1> <form action="3.1.3_controleWedstrijdVerloop.php" method="post"> <p>Team1: <select multiple="multiple" name="team1[]" size="20"> foreach($spelers as $row) { echo"<option>$row[spelers_voornaam] $row[spelers_achternaam]</option>"; } </select> <input type="submit" name="teamCheck" value="ControleTeam"</> </form> </body> ?> |
ok thx.quote:Op maandag 31 augustus 2009 22:56 schreef GlowMouse het volgende:
[..]
Dat zou de volgende stap worden. En een database-class.
[ code verwijderd ]
de php sluit- en opentags staan niet goed in mijn post maar dit is het idee.
bedankt voor je reactie maar ik snap niet helemaal wat je zegt. Ik snap dat ik de variabele verkeerd gebruik en heb nu:quote:Op maandag 31 augustus 2009 23:03 schreef Trollface. het volgende:
Het moet $_POST['teamcheck'] != "" zijn ipv dat andere.
Also, vlak daarna $_POST['team1'] ipv $_POST['controleTeam'].
1 |
1 2 3 4 5 6 | if($_POST['teamcheck'] != "" ) { $teamLeden = $_POST['teamcheck']; echo (count($teamLeden)); .... |
Je gebruikt die functie nu wel, dus ervan afstappen zou een logische stap zijn.quote:Op dinsdag 1 september 2009 15:55 schreef Flaccid het volgende:
Ik zie dat deze functie niet in php 6 zit. Kan het op een andere manier?
Oh ik dacht dat ik m juist moet gebruiken. Ff googlen hoe ie uit gaat.quote:Op dinsdag 1 september 2009 15:56 schreef GlowMouse het volgende:
[..]
Je gebruikt die functie nu wel, dus ervan afstappen zou een logische stap zijn.
Die functie gooit juist quotes in je input (GET/POST/COOKIE) en dat wil je nietquote:Op dinsdag 1 september 2009 16:02 schreef Flaccid het volgende:
[..]
Oh ik dacht dat ik m juist moet gebruiken. Ff googlen hoe ie uit gaat.
Inderdaad, nu werkt t weer, via .htaccess uitgezet. Thanksquote:Op dinsdag 1 september 2009 16:04 schreef GlowMouse het volgende:
[..]
Die functie gooit juist quotes in je input (GET/POST/COOKIE) en dat wil je niet
SQL Server. Verkeerde topic.quote:Op woensdag 2 september 2009 08:00 schreef ReWout het volgende:
Ik heb even een vraagje over sql...
Ik zit met 't volgende probleem. Namelijk ik heb een tabel, laten we deze even y noemen. Deze heeft 2 velden.
id en naam. Nu kan een naam gekoppeld zijn aan 1 of meerdere andere namen in dezelfde tabel...
Dus gewoon een koppeltabel...
id_1 id_2
die beiden eigenlijk verwijzen naar de de eerste rij van de vorige tabel. Nu is mijn vraag.
Kan ik hier oor foreign key constraints op gebruiken? Ik probeer dit namelijk bij sql server maar lukt niet echt
Yup id in y is natuurlijk primary key. Mag ook geen null hebben en types zijn 't zelfde.quote:Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:
[..]
SQL Server. Verkeerde topic.
-> Het grote (?) .NET en MSSQL topic
Maar goed, wat gebruik je als ids? ints / bigints of uniqueidentifiers? De kolomtypes waar je de foreign key constraints op legt (dus de id kolom van je 'y' tabel en het betreffende id veld in je koppeltabel) dienen wel hetzelfde te zijn. Is het id veld van je 'y'-tabel wel primary key? Welke error krijg je overigens?
quote:Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:
Welke error krijg je overigens?
quote]quote:Op woensdag 2 september 2009 11:56 schreef ReWout het volgende:
nvm. heb 't al was een fout in 't schema.
1 2 3 4 5 | (id,bestelId,eigId,aantal,prijs) VALUES(0,'".$bestelId."','".$k."','".$v."',". SELECT prijs FROM eigenschappen WHERE id=$k .")"; |
Ja.quote:Op woensdag 2 september 2009 22:51 schreef Swetsenegger het volgende:
Kan je in een insert query een select subquery inbouwen?
voorbeeld
[ code verwijderd ]
Maar dan werkend
1 2 3 | (id, bestelId, eigId, aantal, prijs) VALUES(0, '".$bestelId."', '".$k."', '".$v."', (SELECT prijs FROM eigenschappen WHERE id=".$k.")) |
Handig spulquote:Op donderdag 3 september 2009 10:19 schreef Chandler het volgende:
vanaf welke versie (mysql) werken subqueries eingelijk?
Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.quote:Op donderdag 3 september 2009 11:28 schreef Mordreth het volgende:
[..]
Handig spul. Vertraagdt de boel wel flink.
Dat dus.quote:Op donderdag 3 september 2009 12:43 schreef GlowMouse het volgende:
[..]
Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.
Ook bij SELECTs kan een subquery sneller zijn.quote:Op donderdag 3 september 2009 12:45 schreef Tuvai.net het volgende:
[..]
Dat dus.
Om actuele data uit een andere tabel/record op te halen is een subquery ideaal bij een insert/update. Sowieso sneller dan de data zonder subquery ergens ophalen (en nog erger, dat IN je applicatie doen, buiten je database) en dan weer verwerken.
quote:Op donderdag 3 september 2009 18:57 schreef Darkomen het volgende:
Oke, ook ik zit met een mysql datum probleempje.
Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?
$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp=<$eindStamp) (eind_stamp>=$beginStamp ) ) ORDER BY begin_stamp";
Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '
en daarna te controleren of er een afspraak is.
Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400
[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]
Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.
1 |
En:quote:Op donderdag 3 september 2009 19:16 schreef Tuvai.net het volgende:
[..]
[ code verwijderd ]
Hoort er geen AND / OR te staan bij die sterretjes?
Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.quote:Op donderdag 3 september 2009 21:39 schreef wobbel het volgende:
Op dit moment heb ik een zelfgeschreven webshop met een tabel Categorieen en tabel Subcategorieen...
Graag zou ik het willen maken dat je oneindig veel categorieen kan maken (in de praktijk 3 of 4 dus)
Hoe ga je dat oplossen met PHP? ik kan er geen tutorials over lezen...
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort en hoe kan ik dat makkelijk weergeven...Want ik zou wel ontiegelijk veel query's moeten uithalen om dat dan weer te geven...quote:Op donderdag 3 september 2009 21:42 schreef Tuvai.net het volgende:
[..]
Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.
Afhankelijk van (wat je presenteert in) je applicatie, zul je bijvoorbeeld wel een 'recursieve functie' moeten schrijven als je een pagina hebt waar je de hele 'boomstructuur' van categorieën wilt weergeven.
Dat doe je dus met die ParentID kolom. Door rij ID 2 een ParentID van 1 te geven, wil dus zeggen dat rij ID 2 'onder' rij ID 1 ligt. Maak je nóg een record, maar dan met ParentID 2, dan leg je deze record 'onder' rij ID 2.quote:Op donderdag 3 september 2009 21:53 schreef wobbel het volgende:
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort
Het klinkt moeilijker dan het lijkt. In feite neem je gewoon de volgende stappen:quote:Op donderdag 3 september 2009 21:53 schreef wobbel het volgende:
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort en hoe kan ik dat makkelijk weergeven...Want ik zou wel ontiegelijk veel query's moeten uithalen om dat dan weer te geven...
Zal iets bij het copy/pasten fout gegaan zijn, er staat een or.quote:Op donderdag 3 september 2009 19:16 schreef Tuvai.net het volgende:
[..]
[ code verwijderd ]
Hoort er geen AND / OR te staan bij die sterretjes?
Dat werkt, maar is niet efficient. Een goede regel is dat je geen queries in loopjes uitvoert. Er kan altijd een reden zijn om daarvan af te wijken, maar voor iets als een menu (dat op iedere pagina terugkomt) lijkt me dat geen goed uitgangspunt.quote:Op donderdag 3 september 2009 22:10 schreef Tuvai.net het volgende:
[..]
Dat doe je dus met die ParentID kolom. Door rij ID 2 een ParentID van 1 te geven, wil dus zeggen dat rij ID 2 'onder' rij ID 1 ligt. Maak je nóg een record, maar dan met ParentID 2, dan leg je deze record 'onder' rij ID 2.
[..]
Het klinkt moeilijker dan het lijkt. In feite neem je gewoon de volgende stappen:
1) Maak een functie, die a.h.v. een ID, alle 'child' records ophaalt van dat ID. Oftewel, alle records ophalen waar de ParentID kolom gelijk staat aan de ID parameter die je mee stuurt naar je functie.
2) Als je door die records heen gaat loopen ( while($bla = mysql_fetch_array($QueryVanStapEen) ), roep je per iteratie (oftewel voor elke rij) wéér je functie aan, maar dit keer met het ID van de record die je aan het loopen bent, als parameter voor de functie.
Op dat moment is je functie dus 'recursief' (oftewel, blijft zichzelf aanroepen totdat je geen loopjes meer hebt).
Er zijn meerdere methodes om dit te doen. Maar dit vind ik persoonlijk in ieder geval de makkelijkste. Je kunt altijd naderhand nog zelf naar een 'moeilijkere' op zoek gaan die beter is voor de performance van je applicatie (want ja, deze methode haalt veel queries in één keer op).
Zie daarom dat laatste stukje tekst.quote:Op donderdag 3 september 2009 23:44 schreef Light het volgende:
[..]
Dat werkt, maar is niet efficient. Een goede regel is dat je geen queries in loopjes uitvoert. Er kan altijd een reden zijn om daarvan af te wijken, maar voor iets als een menu (dat op iedere pagina terugkomt) lijkt me dat geen goed uitgangspunt.
Dan zou ik het toch anders doen. Gewoon in 1 query alle menu-items ophalen en daar in 1 lus een tweedimensionale array van maken.quote:Op donderdag 3 september 2009 23:46 schreef Tuvai.net het volgende:
[..]
Zie daarom dat laatste stukje tekst. :P Ik weet dat er duizend en één efficientere (doch vaak meer complexe) methodes zijn, maar lijkt me niet zo handig om daar een beginneling meteen mee te confronteren. Nogmaals, bovenstaand voorbeeld is kinderlijk eenvoudig en voor een leek heel snel onder de knie te krijgen.
1 2 3 4 5 6 | $result = mysql_query('SELECT * FROM menu'); while($row = mysql_fetch_assoc($result)) { $menu[$row['parentId']] = $row; } ?> |
Zo do ik het dus ook vaak. Nog vaker heb ik dat je niet default al de hele boom wilt laten zien en een hele lap records / resultset naar je applicatie wilt trekken, maar alleen de hoofd nodes en bij het openklappen pas child nodes wilt zien. In zo'n geval wil ik ook nog wel eens AJAX gebruiken om het lijsje met onderliggende nodes op te halen.quote:Op vrijdag 4 september 2009 00:19 schreef Light het volgende:
[..]
Dan zou ik het toch anders doen. Gewoon in 1 query alle menu-items ophalen en daar in 1 lus een tweedimensionale array van maken.
[ code verwijderd ]
Dan heb je alleen nog een recursieve oplossing nodig voor het weergeven van het menu.
Je zult die informatie toch bij moeten houden. Je kunt het laatste bezoek bijhouden zodat je alleen maar nieuwe records op te vragen sinds het laatste bezoek.quote:Op zaterdag 5 september 2009 08:29 schreef Sjoe538 het volgende:
Het loggen van een persoon in de database met een datum/tijd/logged/gebruiker bij elke page refresh uitlezen of er een nieuwe record is bijgekomen én dit niet de user is die momenteel op de site zit én er (vandaag, dit uur, afgelopen 10 minuten) nog geen melding is gegeven dat deze persoon online is gekomen lijkt me omslachtig.
Heeft iemand hier een goed idee voor?
Ik zou beginnen met je sessies in de database op te slaan, dan ben je al een heel eind met bezoekers identificerenquote:Op zaterdag 5 september 2009 08:29 schreef Sjoe538 het volgende:
Ik heb een vraagje omtrent gebruikers die je site bezoeken (let op geregistreerd).
Wat ik aan het maken ben is een soort van hyves popup zoals je ziet wanneer iemand online komt. (als iemand een verwijzing naar zo'n dergelijk script heeft graag de URL)
Mijn probleem zit in het herkennen dat de gebruiker die de site bezoekt niet de gebruiker is die momenteel op de site zit. Zo heb ik niks aan de standaard PHP variablen als een IP uitlezen want ik kan deze niet vergelijken omdat je altijd de IP terug krijgt van de persoon die nu op de site zit.
Het loggen van een persoon in de database met een datum/tijd/logged/gebruiker bij elke page refresh uitlezen of er een nieuwe record is bijgekomen én dit niet de user is die momenteel op de site zit én er (vandaag, dit uur, afgelopen 10 minuten) nog geen melding is gegeven dat deze persoon online is gekomen lijkt me omslachtig.
Heeft iemand hier een goed idee voor?
Idd zo ver was ik al, alleen hoopte ik dat er een makkelijkere manier was, aangezien PHP server side werkt, ik hoopte dat het mogelijk moest zijn om alle sessies uit te lezen die momenteel open staan.quote:Op zaterdag 5 september 2009 11:53 schreef Xcalibur het volgende:
[..]
Ik zou beginnen met je sessies in de database op te slaan, dan ben je al een heel eind met bezoekers identificeren
Hadden jullie nog een idee, volgens mij is het niet zo lang geleden langsgekomen in de topics, alleen heb ik het toen niet gevolgdquote:Op donderdag 3 september 2009 18:57 schreef Darkomen het volgende:
Oke, ook ik zit met een mysql datum probleempje.
Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?
$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE $aid (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp BETWEEN $beginStamp AND $eindStamp) OR (eind_stamp BETWEEN $beginStamp AND $eindStamp) ) ORDER BY begin_stamp";
Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '
en daarna te controleren of er een afspraak is.
Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400
[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]
Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.
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 | <status result="ok"> <ewallet> <id>45177</id> <status>completed</status> <created>20090906135439</created> <modified/> </ewallet> <customer> <currency>EUR</currency> <amount>1595</amount> <exchange_rate>1</exchange_rate> <firstname>Naam</firstname> <lastname>Achternaam</lastname> <city>Woonplaats</city> <state/> <country>NL</country> <countryname>Netherlands</countryname> </customer> <transaction> <id>6</id> <currency>EUR</currency> <amount>1595</amount> <description>Webshop order</description> <var1/> <var2/> <var3/> <items/> </transaction> </status> |
1 |
1 2 | preg_match('/\<id\>(.*)\<\/id\>/U', $transaction[1], $id); |
1 2 3 | preg_match('/\<transaction\>.*\<id\>(.*)\<\/id\>.*\<\/transaction\>/U', $reply, $id); ?> |
Doe je die HTML eerst replacen? Gooi eens een htmlentities / htmlspecialchars over je HTML data die je in je XML node stopt heen.quote:Op zondag 6 september 2009 22:31 schreef Swetsenegger het volgende:
xml functies ga ik even naar kijken.
Iemand trouwens ervaring met multisafepay? In de documentatie staat dat je in een bepaald element van de transaction request (XML) een uitgebreide beschrijving mee kan geven van de bestelling. Er staat letterlijk "Uitgebreide beschrijving (HTML)". Maar zodra ik HTML embed in het xml element krijg ik de melding terug dat het een fout XML bericht is.
Nou staan geen rare dingen in, gewoon een tabel met wat data.quote:Op zondag 6 september 2009 23:11 schreef Tuvai.net het volgende:
[..]
Doe je die HTML eerst replacen? Gooi eens een htmlentities / htmlspecialchars over je HTML data die je in je XML node stopt heen. :)
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 | <redirecttransaction ua="custom-1.2"> <merchant> <account>1000000</account> <site_id>1000</site_id> <site_secure_code>100000</site_secure_code> <notification_url>http://www.domein.nl:80//notificatie.php?type=initial</notification_url> </merchant> <customer> <locale>nl_NL</locale> <ipaddress>255.255.255.255</ipaddress> <forwardedip></forwardedip> <firstname>Naam</firstname> <lastname>Naam</lastname> <address1>Adres</address1> <address2></address2> <housenumber>10</housenumber> <zipcode>1000 AA</zipcode> <city>Stad</city> <state></state> <country>NL</country> <phone></phone> <email>mail@domain.com</email> </customer> <transaction> <id>36</id> <currency>EUR</currency> <amount>1999</amount> <description>Bestelling 36 bij Webshop. U kunt de status van uw bestelling bekijken als u inlogged op onze website.</description> <var1></var1> <var2></var2> <var3></var3> <items> <table style="border-collapse:collapse;width:100%;text-align:center"> <tr style="color:black;font-size:9pt;"> <td style="border-style:solid;border-width:1px 0 1px 1px;border-color:rgb(160,166,176)">Aantal</td> <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikelcode</td> <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikel</td> <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Kleur</td> <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Maat</td> <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Prijs</td> </tr> <tr style="background-color:white;font-size:11pt;"> <td style="width:45px;">1</td> <td style="width:75px;">001</td> <td style="width:250px;">Mexx - Zomershirt</td> <td style="margin:5px;width:10px;background-color:#FF0011"></td> <td style="width:250px;">Small</td> <td>19,99</td> </tr> </table> <br /> <table style="width:100%;border:solid 1px rgb(160,166,176);text-align:left;"> <tr> <td style="color:black;font-size:11pt;">Prijs:</td> <td style="width:600px;text-align:right;font-size:14pt;color:black;">€ 19,99</td> </tr> </table> </items> <manual>false</manual> <gateway></gateway> <daysactive>2</daysactive> </transaction> <signature>d786a106edf874df4ed6e8cc612e9650</signature> </redirecttransaction> |
Hoeft ook niet. Ligt er maar net aan hoe Multisafepay met de data in die node om gaat. Ik kan me herinneren dat ik wel eens RSS feeds heb moeten maken, en de HTML die in de <description> node stond moest parsen als reeds vervangen HTML.quote:Op zondag 6 september 2009 23:18 schreef Swetsenegger het volgende:
[..]
Nou staan geen rare dingen in, gewoon een tabel met wat data.
[ code verwijderd ]
Ok.... wat doe ik daaraan? -edit- ow wacht html entities en specialchars natuurlijk. Dat is het proberen waardquote:Op zondag 6 september 2009 23:21 schreef Tuvai.net het volgende:
[..]
Hoeft ook niet. Ligt er maar net aan hoe Multisafepay met de data in die node om gaat. Ik kan me herinneren dat ik wel eens RSS feeds heb moeten maken, en de HTML die in de <description> node stond moest parsen als reeds vervangen HTML.Waarschijnlijk wordt je <table> tag nu bijvoorbeeld als een daadwerkelijke node van het XML bestand geïnterpreteerd.
quote:Op maandag 7 september 2009 08:57 schreef Swetsenegger het volgende:
Ok.... wat doe ik daaraan? -edit- ow wacht html entities en specialchars natuurlijk. Dat is het proberen waard
quote:Op zondag 6 september 2009 23:11 schreef Tuvai.net het volgende:
Doe je die HTML eerst replacen? Gooi eens een htmlentities / htmlspecialchars over je HTML data die je in je XML node stopt heen.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |