abonnement Unibet Coolblue
  donderdag 15 maart 2012 @ 12:04:49 #1
12348 _Flash_
Heeft altijd blackjack
pi_109125419


Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt :)

Zie ook:
PHP Dataverwerking
Officiële PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 12:25:35 #2
12348 _Flash_
Heeft altijd blackjack
pi_109126001
Ok. Zal ik eens een vraag neerzetten.

Stel je hebt een tabel met klanten en een tabel met adressen. Eén klant heeft drie adressen.
Nu ben je een zoekfunctie aan het schrijven die ook in de adressen moet gaan zoeken naar bepaalde keywords. Dit wil je in één query doen, waar dan alle unieke klanten uit komen rollen waarbij de keywords voorkomen in minimaal 1 van de doorzoekbare velden van de klant en/of bijbehorende adressen.

Nu kan je via 3 left joins de drie adressen aan een klant breien en dan in de WHERE via LIKE gaan testen. Dit gaat zwaar ten koste van de performance.

Hoe zou je dit het beste kunnen oplossen?

Idee van mijzelf: plemp alle adresinformatie in één nieuwe kolom (tekstarea) in de klantentabel en zoek hierbinnen. Scheelt je JOINS en is relatief eenvoudig, bij een update van adresinformatie moet je even dit veld ook updaten.

Wie weet er wat slimmers?
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 12:29:07 #3
75592 GlowMouse
l'état, c'est moi
pi_109126126
Die twee opties zijn vergelijkbaar.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 maart 2012 @ 12:39:45 #4
12348 _Flash_
Heeft altijd blackjack
pi_109126493
Qua performance zijn ze niet vergelijkbaar. Als je ze aan elkaar joint en dan gebruik maakt van LIKE om in die 20 a 30 extra velden te zoeken, dan kost dat zo een seconde of 20 tot 60. (Stel 1000 klanten en dus ook 3000 adressen).

Hou je de adresinformatie ook in een hulp-kolom in de klantentabel bij, dan werkt de zoekfunctie bijna instantaneous.

Ik vraag me af of er via mysql nog wat te bedenken is dat snel en toch eleganter dan het genoemde alternatief werkt.

Ik bedenk me, dat is niet echt een PHP-vraag, maar goed :-)
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 13:38:40 #5
4159 GI
Nee ik heet geen JOE
pi_109128268
Waarom hou je in de adressentabel niet een key (of meerdere keys) bij om te kijken bij welke klant het hoort ?
  donderdag 15 maart 2012 @ 13:50:33 #6
12348 _Flash_
Heeft altijd blackjack
pi_109128694
Zit de vertraging in dit geval niet in het toepassen van LIKE op zoveel velden?

NB, voor iedere key en ieder extra veld ontstaat weer een ritsje extra LIKES:

WHERE (klant.naam LIKE %key1% OR adres1.plaats LIKE %key1% OR...)
AND (klant.naam LIKE %key2% OR adres1.plaats LIKE %key2% OR...)
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
pi_109129973
@_FLASH_
gebruik PostgrSQL ipv MysQL en doe een FULLTEXT search ipv like.
FULLTEXT search is vele malen snellen dan een LIKE.
  donderdag 15 maart 2012 @ 14:35:51 #8
63192 ursel
"Het Is Hier Fantastisch!
pi_109130285
Ook voor MySQL zijn daar oplossingen voor. Hoef je niet direct andere DB neer te zetten.
  donderdag 15 maart 2012 @ 14:42:12 #9
75592 GlowMouse
l'état, c'est moi
pi_109130453
quote:
0s.gif Op donderdag 15 maart 2012 12:39 schreef _Flash_ het volgende:
Qua performance zijn ze niet vergelijkbaar.
Dan doe je wat verkeerd, je zult de index voor de join wel vergeten zijn.
quote:
0s.gif Op donderdag 15 maart 2012 14:25 schreef totalvamp het volgende:
@_FLASH_
gebruik PostgrSQL ipv MysQL en doe een FULLTEXT search ipv like.
FULLTEXT search is vele malen snellen dan een LIKE.
Maar de resultaten zijn ook anders.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 maart 2012 @ 14:57:15 #10
12348 _Flash_
Heeft altijd blackjack
pi_109130895
quote:
0s.gif Op donderdag 15 maart 2012 14:42 schreef GlowMouse het volgende:

[..]

Dan doe je wat verkeerd, je zult de index voor de join wel vergeten zijn.

Ongetwijfeld :)
De id's van beide tabellen zijn primary keys.
In de join zeg ik iets als SELECT ... FROM klant LEFT JOIN adres AS adres1 ON klant.id=adres.id_klant WHERE ...

Bedoel je met "index voor de join" iets dat ik in de tabellen zelf moet instellen of iets in de query?
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 15:29:05 #11
75592 GlowMouse
l'état, c'est moi
pi_109131983
Post de EXPLAIN van je query met joins en like eens.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 maart 2012 @ 16:09:06 #12
12348 _Flash_
Heeft altijd blackjack
pi_109133366
Oei daar vraag je me wat. Op de live site is het deel van de adressen er nu hardhandig uitgecomment om de performance weer acceptabel te krijgen. Zal vanavond even echo'en en copypasten.

Edit; toch even handmatig de PHP code hersteld die de query genereert, ter lering en/of vermaak:

$zoektermen = explode(" ", $zoekstring);
foreach ($zoektermen AS $zoekterm) {
$where_deel .= " AND (".$system_prefix."klant.klantnaam LIKE '%".$zoekterm."%' OR ".$system_prefix."klant.klantcode LIKE '%".$zoekterm."%' OR ad1.adres1 LIKE '%".$zoekterm."%' OR ad1.adres2 LIKE '%".$zoekterm."%' OR ad2.adres1 LIKE '%".$zoekterm."%' OR ad2.adres2 LIKE '%".$zoekterm."%' OR ad2.plaats LIKE '%".$zoekterm."%' OR ad1.telefoon LIKE '%".$zoekterm."%' OR ad2.telefoon LIKE '%".$zoekterm."%')";
}
$sql_query = mysql_query("SELECT COUNT(".$system_prefix."klant.id) as aantal FROM (".$system_prefix."klant LEFT JOIN ".$system_prefix."klant_adres AS ad1 ON (".$system_prefix."klant.id=ad1.klant AND ad1.soort=1)) LEFT JOIN ".$system_prefix."klant_adres AS ad2 ON (".$system_prefix."klant.id=ad2.klant AND ad2.soort=2) WHERE ".$system_prefix."klant.status='ok'".$where_deel.";");
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 16:19:24 #13
12348 _Flash_
Heeft altijd blackjack
pi_109133790
De explain:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE prefix_klant ALL NULL NULL NULL NULL 1451 Using where
1 SIMPLE ad1 ALL NULL NULL NULL NULL 2902
1 SIMPLE ad2 ALL NULL NULL NULL NULL 2902 Using where
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  donderdag 15 maart 2012 @ 16:29:23 #14
75592 GlowMouse
l'état, c'est moi
pi_109134174
In ad1 en ad2 mist de index op klant. Ik zou hier een index maken op (klant,soort) (1 index op 2 velden).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109139029
quote:
0s.gif Op donderdag 15 maart 2012 16:29 schreef GlowMouse het volgende:
In ad1 en ad2 mist de index op klant. Ik zou hier een index maken op (klant,soort) (1 index op 2 velden).
Wat is eigenlijk het voordeel van 1 index op 2 velden en in welke situaties is dat het beste te benutten? Ik heb dat nooit goed gesnapt...
  donderdag 15 maart 2012 @ 20:25:22 #16
75592 GlowMouse
l'état, c'est moi
pi_109142958
quote:
0s.gif Op donderdag 15 maart 2012 19:07 schreef The_Terminator het volgende:

[..]

Wat is eigenlijk het voordeel van 1 index op 2 velden en in welke situaties is dat het beste te benutten? Ik heb dat nooit goed gesnapt...
zie het als een gesorteerde lijst; een telefoonboek is één index op (plaats,naam). Dat werkt makkelijker dan wanneer er alleen op plaats of alleen op naam is gesorteerd, maar alleen als je een naam zoekt in een specifieke plaats (of sorteert op plaats,naam; of bij één plaats wilt sorteren op naam).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109143490
Een index alleen heeft niet heul veul nut tenzij je graag GROUP BY gebruikt op die 2 kolommen (zover ik weet), maar een (primary key/foreign key/unique) constraint met 2 (of meer) kolommen wel.
  donderdag 15 maart 2012 @ 20:34:26 #18
75592 GlowMouse
l'état, c'est moi
pi_109143534
quote:
0s.gif Op donderdag 15 maart 2012 20:33 schreef kucher het volgende:
Een index alleen heeft niet heul veul nut tenzij je graag GROUP BY gebruikt op die 2 kolommen (zover ik weet), maar een (primary key/foreign key/unique) constraint met 2 (of meer) kolommen wel.
helaas, geen koelkast
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109144309
quote:
0s.gif Op donderdag 15 maart 2012 11:57 schreef _Flash_ het volgende:
Thanks, mooie site.
Als je nog wat tips wilt voor de beveiliging of om spam te voorkomen (je gaat veel spam krijgen met zo'n formulier) dan moet je het maar laten weten :)
Is goed! Ik ga proberen de rest werkend te maken, en als ik dan nog tijd heb kom ik hier nog wel mijn neus om de hoek steken. Heel erg bedankt O+

quote:
0s.gif Op donderdag 15 maart 2012 11:57 schreef The_Terminator het volgende:

[..]

Mooi!

Ik heb nog wel een suggestie als zijnde een verbetering van je huidige invoer-verwerking:
[ code verwijderd ]

De $input_naam variable kun je vervolgens in je mail gebruiken:
[ code verwijderd ]

Hierdoor weet je zeker dat bijzondere tekens goed verwerkt worden en dat je geen waarschuwingen krijgt indien een een element niet bestaat in de POST array.
Oh, dit ga ik proberen, bedankt! O+
  zondag 18 maart 2012 @ 18:36:41 #20
363305 Muffle
Mufflelicious
pi_109242604
Wie zou mij kunnen helpen met PHP code?
Het betreft algoritmes invoeren om punten te berekenen, maar hiervoor moeten variabelen worden gemaakt enzovoort.
  zondag 18 maart 2012 @ 19:58:34 #21
84244 Scorpie
Abject en infaam!
pi_109245779
Zelf beginnen en als je er niet uitkomt horen we het wel.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  zondag 18 maart 2012 @ 21:22:00 #22
12348 _Flash_
Heeft altijd blackjack
pi_109250390
Hoe ver ben je en waar gaat het fout?
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  zondag 18 maart 2012 @ 23:48:59 #23
87680 Mirel
Mirel wil een bongophone.
pi_109259473
Ik moet een contactformulier maken op een website die ik sinds kort beheer (www.sbscoaching.nl). Ik kom er net achter dat ik niks kan invullen in de tekstboxen. Die doen het gewoon in een testbestand.

Hoe komt dit? Ik weet niet echt waar ik naar moet zoeken..

De site heeft zover ik weet nergens een contactformulier staan. Ik zie in de backend wel een mapje genaamd phpmailer, maar ik weet niet waar die voor is.
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 10:32:30 #24
118585 Crutch
Filantroop || Taalzwengel
pi_109265962
Ik kom er niet uit.
Cookies die ik 'check' en 'set' in een if-statement worden niet onthouden wanneer ik de browser afsluit en daarna weer open.

Als ik een cookie 'set' buiten een if-statement dan blijft deze wel aanwezig.

Dus cookies worden gewoon geaccepteerd, check.
Register Globals staat op 'on', check.

Ik kwam ook ergens de functie ob_start(); tegen, maar dat maakt verder geen verschil als ik die functie aanroep aan het begin van mijn code.

Als ik een cookie aanmaak in een if-statement en ik ververs de pagina dan is ie wel aanwezig, maar sluit ik de browser en open ik de pagina opnieuw dan is ie weer weg.

Ik gebruik overigens MAMP in OSX.
Je moeder is een hamster
pi_109266241
quote:
0s.gif Op maandag 19 maart 2012 10:32 schreef Crutch het volgende:
Ik kom er niet uit.
Cookies die ik 'check' en 'set' in een if-statement worden niet onthouden wanneer ik de browser afsluit en daarna weer open.

Als ik een cookie 'set' buiten een if-statement dan blijft deze wel aanwezig.

Dus cookies worden gewoon geaccepteerd, check.
Register Globals staat op 'on', check.

Ik kwam ook ergens de functie ob_start(); tegen, maar dat maakt verder geen verschil als ik die functie aanroep aan het begin van mijn code.

Als ik een cookie aanmaak in een if-statement en ik ververs de pagina dan is ie wel aanwezig, maar sluit ik de browser en open ik de pagina opnieuw dan is ie weer weg.

Ik gebruik overigens MAMP in OSX.
Geef je een geldigheidsduur mee aan de setcookie functie?
  maandag 19 maart 2012 @ 10:49:41 #26
118585 Crutch
Filantroop || Taalzwengel
pi_109266393
quote:
0s.gif Op maandag 19 maart 2012 10:43 schreef The_Terminator het volgende:

[..]

Geef je een geldigheidsduur mee aan de setcookie functie?
STOP DE PERSEN!!

Ja deed ik dus wel, maar ik zag over het hoofd dat ik eerder tijdens het testen ergens in mijn if-statement nadat ik de cookie aanmaakte de cookie nogmaals aanmaakte zonder geldigheidsduur. :')

Tja dan vervalt ie wanneer je de browser sluit.

Gewoon slordig van me, maar toch bedankt. :')
Je moeder is een hamster
  maandag 19 maart 2012 @ 12:08:52 #27
12348 _Flash_
Heeft altijd blackjack
pi_109268852
quote:
0s.gif Op zondag 18 maart 2012 23:48 schreef Mirel het volgende:
Ik moet een contactformulier maken op een website die ik sinds kort beheer (www.sbscoaching.nl). Ik kom er net achter dat ik niks kan invullen in de tekstboxen. Die doen het gewoon in een testbestand.

Hoe komt dit? Ik weet niet echt waar ik naar moet zoeken..

De site heeft zover ik weet nergens een contactformulier staan. Ik zie in de backend wel een mapje genaamd phpmailer, maar ik weet niet waar die voor is.
Phpmailer is een tool om mailtjes mee te versturen.

Wat bedoel je met "Ik kom er net achter dat ik niks kan invullen in de tekstboxen. Die doen het gewoon in een testbestand."? Heb je al een begin gemaakt met het opmaken van het HTML-formulier opgemaakt en een PHP-script dat de mailing verzorgt? Waar gaat het mis?

Zo te zien zit er trouwens geen CMS achter de site. Is dat niet een idee om te koppelen?
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  maandag 19 maart 2012 @ 12:12:28 #28
87680 Mirel
Mirel wil een bongophone.
pi_109268958
Het HTML formulier is af, en het phpscript erachter ook, maar die kan ik nog niet testen. Ik kan letterlijk niks in een tekstveld typen: http://sbscoaching.nl/contact-test.php

Er is niks mis met het formulier zover ik weet, ik heb die even op een testpagina op m'n eigen site gezet en daar kan ik wel gewoon dingen erin tikken. Zo'n tekstboxje heb ik even verplaatst op een andere plek in de sbscoaching site (zonder form tag), en daar kan ik ook niks invullen.
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 12:18:49 #29
12348 _Flash_
Heeft altijd blackjack
pi_109269157
Haal die drie java-dingetjes even uit de <body>. De maker van die HTML heeft de pagina dmv die commando's beveiligd tegen klikken, rechtsklikken en selecteren e.d. Daarom gebeurt er niks als je in zo'n tekst-vakje klikt.
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
pi_109273017
quote:
0s.gif Op maandag 19 maart 2012 10:32 schreef Crutch het volgende:
Register Globals staat op 'on', check.
Wat? Meen je dit? Welke pipo heeft bedacht dat dit een goed idee was?
GELIJK weer uitzetten anders weet je zeker dat je script gehackt wordt. Ze hebben niet voor niets die functie verwijderd in de nieuwste PHP versie.
  maandag 19 maart 2012 @ 14:31:27 #31
75592 GlowMouse
l'état, c'est moi
pi_109273055
quote:
0s.gif Op maandag 19 maart 2012 14:29 schreef totalvamp het volgende:

[..]

GELIJK weer uitzetten anders weet je zeker dat je script gehackt wordt.
als je netjes code dan valt dat wel mee
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109273089
quote:
0s.gif Op maandag 19 maart 2012 14:31 schreef GlowMouse het volgende:

[..]

als je netjes code dan valt dat wel mee
Het is een serieus veiligheids probleem... dat kun je niet goedpraten.
  maandag 19 maart 2012 @ 14:34:11 #33
87680 Mirel
Mirel wil een bongophone.
pi_109273163
quote:
0s.gif Op maandag 19 maart 2012 12:18 schreef _Flash_ het volgende:
Haal die drie java-dingetjes even uit de <body>. De maker van die HTML heeft de pagina dmv die commando's beveiligd tegen klikken, rechtsklikken en selecteren e.d. Daarom gebeurt er niks als je in zo'n tekst-vakje klikt.
Ah thanks. Zulke dingen zijn toch waardeloos :')

Maar welke zijn het precies? Ik zie niks in de source. Op de indivuele pagina op de server staat ook niks. Op de index staat dit, maar het is iets anders, niet voor de muiskliks:
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
<?php
<script type="text/JavaScript">
<!--
function 
MM_swapImgRestore() { //v3.0
  
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function 
MM_preloadImages() { //v3.0
  
var d=document; if(d.images){ if(!d.MM_pd.MM_p=new Array();
    var 
i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0i<a.lengthi++)
    if (
a[i].indexOf("#")!=0){ d.MM_p[j]=new Imaged.MM_p[j++].src=a[i];}}
}

function 
MM_findObj(nd) { //v4.01
  
var p,i,x;  if(!dd=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    
d=parent.frames[n.substring(p+1)].documentn=n.substring(0,p);}
  if(!(
x=d[n])&&d.allx=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(
i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!
&& d.getElementByIdx=d.getElementById(n); return x;
}

function 
MM_swapImage() { //v3.0
  
var i,j=0,x,a=MM_swapImage.argumentsdocument.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((
x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrcx.oSrc=x.srcx.src=a[i+2];}
}
//-->
</script>
?>
When all else fails, you always have delusion.
pi_109273279
Niks wat daarbij staat...

dit moet je vinden
1<body onContextMenu="return false;" onmousedown="return false;" onselectstart="return false;">
  maandag 19 maart 2012 @ 14:38:45 #35
87680 Mirel
Mirel wil een bongophone.
pi_109273313
OH DAT. Die shit heb ik er zelf in moeten doen ooit. :')

:')
When all else fails, you always have delusion.
pi_109273348
quote:
0s.gif Op maandag 19 maart 2012 14:38 schreef Mirel het volgende:
OH DAT. Die shit heb ik er zelf in moeten doen ooit. :')

:')
laat me raden: de eigenaar van de site is voor het eerst online en denkt ik moet alles beveiligen tegen alles :')
  maandag 19 maart 2012 @ 14:44:01 #37
87680 Mirel
Mirel wil een bongophone.
pi_109273505
Zoiets
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 14:54:33 #38
87680 Mirel
Mirel wil een bongophone.
pi_109273866
Ok die zooi is nu in te vullen, maar de submit doet niks. Browser zegt dat http://sbscoaching.nl/contactformulieraction.php niet bestaat ;(

Hij staat echt daar:
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
<?php

// We definiëren eerst de variabelen die altijd hetzelfde blijven.
$ontvanger "mirelmirelmirel@gmail.com";
$onderwerp "Ingevuld contactformulier SBS Coaching!"

// We definiëren vervolgens de veranderlijke variabelen.
$email                     $_POST['email'];
$aanhef                 $_POST['aanhef'];
$voornaam                 $_POST['voornaam'];
$tussenvoegsels            $_POST['tussenvoegsels'];
$achternaam                $_POST['achternaam'];
$geboortedatum             $_POST['geboortedatum'];
$priveadres                $_POST['priveadres'];
$telefoon                 $_POST['telefoon'];
$opleidingwerkniveau    $_POST['opleidingwerkniveau'];
$plaats                    $_POST['plaats'];
$vragenopmerkingen        $_POST['vragenopmerkingen'];

//Bericht
$bericht "Iemand heeft je contactformulier ingevuld.<br>Het gaat om '".$voornaam."', met het e-mailadres '".$email."', wonende in '".$plaats."'. Hij vulde de volgende opmerking in:<br><br>'".$tekst."'";

// Verzenden
mail($ontvanger$onderwerp$bericht);

// Bericht verzonden

echo "Uw bericht werd verzonden.";
?>

Ik moet nog de rest van de variabelen erin doen. Ik vraag me overigens af hoe ik ze onder elkaar krijg. Dat met die ' en " komma's voor en na een string snap ik niet.

Zoiets?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$bericht 
=    "Iemand heeft je contactformulier ingevuld. <br>
            '"
.$aanhef."' '".$voornaam."' '".$tussenvoegsels." '".$achternaam." <br>
            '"
.$email."' <br>
            '"
.$geboortedatum."' <br>
            '"
.$opleidingwerkniveau"' <br>
            '"
.$priveadres."' <br>
            '"
.$telefoon."' <br>
            '"
.$plaats."' <br>
            opmerkingen: <br>
            '"
.$vragenopmerkingen."'";
?>

Die string ID's zijn slordig ja ):O
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 14:57:44 #39
75592 GlowMouse
l'état, c'est moi
pi_109273973
check je error log
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 19 maart 2012 @ 14:59:52 #40
118585 Crutch
Filantroop || Taalzwengel
pi_109274046
quote:
0s.gif Op maandag 19 maart 2012 14:29 schreef totalvamp het volgende:

[..]

Wat? Meen je dit? Welke pipo heeft bedacht dat dit een goed idee was?
GELIJK weer uitzetten anders weet je zeker dat je script gehackt wordt. Ze hebben niet voor niets die functie verwijderd in de nieuwste PHP versie.
ok staat uit en alles werkt, dank je.
Je moeder is een hamster
  maandag 19 maart 2012 @ 15:00:15 #41
87680 Mirel
Mirel wil een bongophone.
pi_109274060
Remote server or file not found
Check that the address is spelled correctly, or try searching for the site.

Is wel goedgespeld. :?

Ik zie nergens anders een plek waar errors komen dan in de browser.
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 15:07:21 #42
118585 Crutch
Filantroop || Taalzwengel
pi_109274292
quote:
0s.gif Op maandag 19 maart 2012 14:54 schreef Mirel het volgende:
Ok die zooi is nu in te vullen, maar de submit doet niks. Browser zegt dat http://sbscoaching.nl/contactformulieraction.php niet bestaat ;(
Klik er eens op dan.
Je moeder is een hamster
  maandag 19 maart 2012 @ 15:08:28 #43
87680 Mirel
Mirel wil een bongophone.
pi_109274325
Dat doe ik, en dan geeft de browser een error dat het niet bestaat of dat de naam fout is. Maar dat is niet zo. Of mis ik nu iets? :? Maar het is puur php, dus dan zou ik neem ik aan gewoon een blanco pagina zien?
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 15:10:01 #44
56176 Catch22-
Ben je Blind?!
pi_109274369
hij geeft een HTTP500 error, je hebt dus een fout in je script. Debuggen 101
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_109274407
misschien een htaccess error :)
  maandag 19 maart 2012 @ 15:11:17 #46
87680 Mirel
Mirel wil een bongophone.
pi_109274413
In opera zag ik niet wat voor soort error het was. In firefox was het enkel een lege pagina. Maar ik vraag ook hier wat de fout in het script is. Het gedeelte wat in de mail te zien is is me nooit duidelijk, met al die komma's :?
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 15:11:33 #47
25889 Sitethief
Fulltime Flapdrol
pi_109274424
sluit regel 5 eerst maar eens correct af.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  maandag 19 maart 2012 @ 15:11:56 #48
118585 Crutch
Filantroop || Taalzwengel
pi_109274435
quote:
0s.gif Op maandag 19 maart 2012 15:11 schreef Sitethief het volgende:
sluit regel 5 eerst maar eens correct af.
_O-
Je moeder is een hamster
  maandag 19 maart 2012 @ 15:12:29 #49
25889 Sitethief
Fulltime Flapdrol
pi_109274455
En of je gebruikt enkele aanhalingstekens om je strings, of dubbele, maar allebei is niet nodig :).
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  maandag 19 maart 2012 @ 15:12:45 #50
56176 Catch22-
Ben je Blind?!
pi_109274467
Dus; fix een goede editor en lees een debugguide.

quote:
0s.gif Op maandag 19 maart 2012 15:12 schreef Sitethief het volgende:
En of je gebruikt enkele aanhalingstekens om je strings, of dubbele, maar allebei is niet nodig :).
je kan die variabelen toch gewoon inline gooien?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  maandag 19 maart 2012 @ 15:12:58 #51
87680 Mirel
Mirel wil een bongophone.
pi_109274473
Oke. Die had ik van een tutorial gevonden :)
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 15:14:04 #52
87680 Mirel
Mirel wil een bongophone.
pi_109274510
quote:
11s.gif Op maandag 19 maart 2012 15:12 schreef Catch22- het volgende:
Dus; fix een goede editor en lees een debugguide.

[..]

je kan die variabelen toch gewoon inline gooien?
Er was ook iets dat als ik de laatste ' en " weghaalde, dat de php ; z'n kleurtje kwijtraakte, wat betekende dat de code onjuist was.
When all else fails, you always have delusion.
  maandag 19 maart 2012 @ 15:24:12 #53
25889 Sitethief
Fulltime Flapdrol
pi_109274801
1
2
3
4
5
<?php
$string 
"blabla".$variabele."bloblo";
//of
$string 'blabla'.$variabele.'bloblo';
?>

Als je jezelf vastlegt om een van beide te gebruiken kun je ook niet zomaar door de war komen, vroeger was er nog een snelheidsprobleem tussen beiden dat is er nu niet.

Met de code die jij schrijft zou ik opteren voor de single quote, zodat je er veilig HTML tussen kan zetten die dubbele quotes gebruiken, hoef je die niet te escapen. Officieel mogen enkele quotes ook in HTML, alleen zie je dat veel minder imho

Het lijkt me een stap te ver om nu diep in te gaan in het memory gebruik van concatenate en manieren om dit te versnellen etc etc. Probeer eerst de basis concepten van PHP te begrijpen.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_109312221
Kleine vraag, waarschijnlijk kijk ik ergens overheen

Stel ik heb 2 classes

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
<?php

class plugin extends hoofd {
     public function validate()
     {
         parent::verander('plugin test');
     }
}

class hoofd {
     public $veranderVariabel = 'null';
     
     public function __construct($databaseCls = '')
     {
         $this->databaseCls = $databaseCls;
     }

     public function startPlugin()
     {
          $p = new plugin();

          $p->validate();
     }

     public function verander($var)
     {
         $this->veranderVariabel = $var;
     }
     public function geef()
     {
          return $this->veranderVariabel;
     }
}

$databaseCls = true;
$hoofd = new hoofd($databaseCls);

echo $hoofd->geef();
echo $hoofd->veranderVariabel . '<br />';

$hoofd->startPlugin();

// zou nu 'plugin test' moeten zijn?

echo $hoofd->geef();
echo $hoofd->veranderVariabel . '<br />';
?>

Waar ga ik de fout in? omg. wil in een class een andere class laden en dan de parent qua gegevens updaten en dan weer verdergaan met de parent en deze gegevens kunnen gebruiken.
Just say hi!
  dinsdag 20 maart 2012 @ 14:06:34 #55
25889 Sitethief
Fulltime Flapdrol
pi_109312421
Je kunt volgens mij niet in in een parent de child class oproepen, met andere woorden, extending gaat maar een kant op, namelijk parent->child. Nu heb je volgens mij een loop want je roept in hoofd plugin aan en die extend hoofd en die roept plugin aan etc etc.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_109313169
Wat ben je van plan? Want ik zit even je code door te lezen, maar ik snap er helemaal geen hol van. Childs aanroepen in je parent class en parent functies aanroepen die niet bestaan?

Duik eerst eens in het OO programmeren, want je hebt er volgens mij nog niet echt kaas van gegeten en gooi protected abstract function validate(); even in je hoofd klasse, zodat je verplicht wordt om in kinder klasses deze aan te roepen.
  dinsdag 20 maart 2012 @ 14:35:13 #57
84244 Scorpie
Abject en infaam!
pi_109313360
quote:
0s.gif Op dinsdag 20 maart 2012 14:00 schreef Chandler het volgende:
Kleine vraag, waarschijnlijk kijk ik ergens overheen

Stel ik heb 2 classes
[ code verwijderd ]

Waar ga ik de fout in? omg. wil in een class een andere class laden en dan de parent qua gegevens updaten en dan weer verdergaan met de parent en deze gegevens kunnen gebruiken.
Begin maar opnieuw met OO.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_109321250
Wat ik wil is gewoon in een class een andere class aanroepen, deze class voert bepaalde code uit en moet daarvoor weer variabelen in de hoofd class aanpassen, that's all.

@Scorpie; je hebt gelijk al heb ik al vele malen een hoop documentatie doorgelezen maar krijg het er blijkbaar niet in! :)
Just say hi!
pi_109321348
quote:
0s.gif Op dinsdag 20 maart 2012 18:23 schreef Chandler het volgende:
Wat ik wil is gewoon in een class een andere class aanroepen, deze class voert bepaalde code uit en moet daarvoor weer variabelen in de hoofd class aanpassen, that's all.

@Scorpie; je hebt gelijk al heb ik al vele malen een hoop documentatie doorgelezen maar krijg het er blijkbaar niet in! :)
Waarom wil je variabelen wijzigen in je hoofdclass?
pi_109321442
Ik ben bezig met een 1 produkt webshop en daarin wil ik plugins verwerken maar zie nu dat ik die beter buiten de class kan aanroepen en dan de shop class kan aanroepen om gegevens te verwerken!.
Just say hi!
pi_109372228
quote:
0s.gif Op dinsdag 20 maart 2012 18:23 schreef Chandler het volgende:
Wat ik wil is gewoon in een class een andere class aanroepen, deze class voert bepaalde code uit en moet daarvoor weer variabelen in de hoofd class aanpassen, that's all.

@Scorpie; je hebt gelijk al heb ik al vele malen een hoop documentatie doorgelezen maar krijg het er blijkbaar niet in! :)
Buiten dat bovenstaande enorme troep is, kan je toch in je klasse gewoon een nieuwe instantie aanmaken en in een variabele stoppen?
In je parent hou je dan de instanties bij. Waarom extend plugin hoofd? Weet je wat extenden is en waar t voor gebruikt wordt? Ik heb een vermoeden dat je het als doorgeefluik aan het gebruiken bent...
pi_109391308
Gisteren maar een nieuw project gestart(na het hebben van een vage droom). Hier kan ik weer gelijk alle nieuwe technieken voor leren en gebruiken :).
Het is een simulator :P
  donderdag 22 maart 2012 @ 16:18:46 #63
136730 PiRANiA
All thinking men are atheists.
pi_109391433
Heeft iemand een goed idee hoe ik IP's het beste kan opslaan in een databaas? Het worden op termijn miljoenen rows die goed doorzoekbaar moeten zijn.

Omzetten naar int? Of zal char goed zijn? Binary misschien?
  donderdag 22 maart 2012 @ 16:24:59 #64
91039 mstx
2x1/2 = 1/2 x 1/2
pi_109391641
quote:
5s.gif Op donderdag 22 maart 2012 16:18 schreef PiRANiA het volgende:
Heeft iemand een goed idee hoe ik IP's het beste kan opslaan in een databaas? Het worden op termijn miljoenen rows die goed doorzoekbaar moeten zijn.

Omzetten naar int? Of zal char goed zijn? Binary misschien?
Unsigned int, opslaan kan dan makkelijk met INET_ATON() en weer ophalen met INET_NTOA().
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  donderdag 22 maart 2012 @ 16:27:19 #65
111382 Ofyles2
Bestemming: onbekend
pi_109391712
Ik houd het voorlopig bij VARCHAR, dit om voorbereid te zijn op IPv6.

Uiteraard kijk ik wel of het eenvoudiger kan.
pi_109396531
quote:
0s.gif Op donderdag 22 maart 2012 16:27 schreef Ofyles2 het volgende:
Ik houd het voorlopig bij VARCHAR, dit om voorbereid te zijn op IPv6.

Uiteraard kijk ik wel of het eenvoudiger kan.
Lijkt me makkelijker dan om 1 veld ip4 te hebben en 1 ip6.
pi_109427797
Ik kom er even niet uit, ik verwijder een record in mijn database waardoor ik dus een gat krijg in de data
het was 1,2,3,4,5
Ik verwijder 2 dus nu heb ik 1,3,4,5.
Met welke mysql update query krijg ik gewoon weer een rijtje 1,2,3,4 eruit?
Typ mee! FOK!Whatpulse
PSN OnlineID: LightLuke92
pi_109428661
quote:
0s.gif Op vrijdag 23 maart 2012 14:10 schreef LightLuke het volgende:
Ik kom er even niet uit, ik verwijder een record in mijn database waardoor ik dus een gat krijg in de data
het was 1,2,3,4,5
Ik verwijder 2 dus nu heb ik 1,3,4,5.
Met welke mysql update query krijg ik gewoon weer een rijtje 1,2,3,4 eruit?
is het een autoincrement waarde?

niet netjes maar zou moeten werken:
1
2
ALTER TABLE tablename DROP id 
ALTER TABLE tablename ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id), AUTO_INCREMENT=1 
volgens mij kent mysql geen functie om alles opnieuw toe te wijzen
pi_109428739
quote:
0s.gif Op vrijdag 23 maart 2012 14:29 schreef mschol het volgende:

[..]

is het een autoincrement waarde?

niet netjes maar zou moeten werken:
[ code verwijderd ]

volgens mij kent mysql geen functie om alles opnieuw toe te wijzen
Het is geen autoincrement waarde :P
Typ mee! FOK!Whatpulse
PSN OnlineID: LightLuke92
pi_109429989
quote:
0s.gif Op vrijdag 23 maart 2012 14:10 schreef LightLuke het volgende:
Ik kom er even niet uit, ik verwijder een record in mijn database waardoor ik dus een gat krijg in de data
het was 1,2,3,4,5
Ik verwijder 2 dus nu heb ik 1,3,4,5.
Met welke mysql update query krijg ik gewoon weer een rijtje 1,2,3,4 eruit?
waarom zou je dat willen? In welke situatie gebruik je dit?
pi_109430423
quote:
0s.gif Op vrijdag 23 maart 2012 14:31 schreef LightLuke het volgende:

[..]

Het is geen autoincrement waarde :P
Dan bepaal je zelf toch gewoon de waarde??

Edit:
Laat maar, vraag verkeerd geinterpreteerd :)
pi_109431872
quote:
0s.gif Op vrijdag 23 maart 2012 15:05 schreef totalvamp het volgende:

[..]

waarom zou je dat willen? In welke situatie gebruik je dit?
In het bepalen van de volgorde van een playlist.
de genoemde getallen staan voor de positie van een track in een playlist.
Typ mee! FOK!Whatpulse
PSN OnlineID: LightLuke92
  vrijdag 23 maart 2012 @ 15:55:28 #73
56176 Catch22-
Ben je Blind?!
pi_109431912
1UPDATE tblPlaylists SET positie = positie - 1 WHERE positie > $netverwijderdepositie AND playlistid = $playlist
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_109432016
quote:
11s.gif Op vrijdag 23 maart 2012 15:55 schreef Catch22- het volgende:

[ code verwijderd ]

Haha thanks! Dat is hem :)
Typ mee! FOK!Whatpulse
PSN OnlineID: LightLuke92
  zaterdag 24 maart 2012 @ 09:58:58 #75
370539 kucher
is snucher
pi_109455878
Het hangt af van de toepassing, je kan

• Gewoon niet IP-adressen bewaren als dat niet een vereiste is voor de functionaliteit van het programma
• De eerste 48 bits opslaan in een bigint
• Bij het ontbreken van een IP-type, aangepaste typen en arrays het volledige adres opslaan in 2 bigints (niet echt een optie in de meeste gevallen)
• Het adres met nullen opslaan in een char(39)

De eerste optie is de makkelijkste, de tweede is een goede interim-oplossing en bij de laatste 2 oplossingen moet je IPv4 omzetten in gelijkwaardige IPv6-adressen (:: ffff: ...). Het beste zou zijn om een native IP gegevenstype hebben met functies ter ondersteuning, zoals multicast() en routable().

Als de functionaliteit vereist is om IP-adressen op te slaan in MySQL, dan zou ik optie 4 nemen, anders 1 of 2. Tenzij je een IPv6 router aan het implementeren bent in stored functions, dan is optie 3 het efficiëntst (oftewel nooit).

[ Bericht 7% gewijzigd door kucher op 24-03-2012 10:09:32 ]
pi_109458440
md5 hash van de ip's opslaan als binary(16) ?
..///
pi_109460087
quote:
0s.gif Op zaterdag 24 maart 2012 12:07 schreef wipes66 het volgende:
md5 hash van de ip's opslaan als binary(16) ?
Een md5 hash past niet in een binary(16) veld. Daarnaast ben je alle zoekopties kwijt als je een hash gebruikt. (Het zou ook kunnen dat er twee ip's met dezelfde md5 hashes bestaan.)
pi_109463738
quote:
0s.gif Op zaterdag 24 maart 2012 13:19 schreef Light het volgende:

[..]

Een md5 hash past niet in een binary(16) veld. Daarnaast ben je alle zoekopties kwijt als je een hash gebruikt. (Het zou ook kunnen dat er twee ip's met dezelfde md5 hashes bestaan.)
md5 is 16 bytes dus dat moet passen. collision is inderdaad een nadeel, maar voor veel toepassingen maakt dat niet veel uit.
..///
  zaterdag 24 maart 2012 @ 16:21:05 #79
370539 kucher
is snucher
  zaterdag 24 maart 2012 @ 18:53:56 #80
25889 Sitethief
Fulltime Flapdrol
pi_109467991
a 128-bit (16-byte) hash value.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  zaterdag 24 maart 2012 @ 21:23:54 #81
370539 kucher
is snucher
pi_109474940
quote:
De MD5 berekendingen die ik ken, leveren een MD5 hash op als een string van 32 karakters.
  zaterdag 24 maart 2012 @ 22:43:13 #83
370539 kucher
is snucher
  zaterdag 24 maart 2012 @ 23:10:06 #84
85514 ralfie
!Yvan eht nioj
pi_109477297
Misschien is het te laat maar zijn we het niet allemaal eens met elkaar hier?
  zondag 25 maart 2012 @ 00:06:36 #85
370539 kucher
is snucher
pi_109478675
quote:
Misschien is het te laat maar zijn we het niet allemaal eens met elkaar hier?
Nee, lol. De stupide om een 128-bits IP adres door nota bene een 128-bits hashfunctie te halen is voorbij mij.
pi_109515265
:o Moet ik een nieuwe database maken als ik een fresh install doet van Joomla 2.5.3? :? (heb 1.5.3 weggehaald!)
pi_109523586
quote:
0s.gif Op zondag 25 maart 2012 23:32 schreef Blue_Panther_Ninja het volgende:
:o Moet ik een nieuwe database maken als ik een fresh install doet van Joomla 2.5.3? :? (heb 1.5.3 weggehaald!)
Wat wil je ervan bewaren? Want het kan zijn zoals in de link aangegeven is dat bepaalde tabellen veranderd zijn in de DB. daarom kun je het beste controleren met een eigen installatie op XAMPP localhost (voorbeeld ) en daar je DB installeren om te kijken of er verschillen in zijn. Dit gaat over een kleinere versie stap dan jij dat nu hebt. Als het om een grote aantal gebruikers gaat is het de moeite waard, anders raad ik aan toch een nieuwe DB in te zetten.

Bron:
http://support.open-realt(...)Import-user-Database


Al heeft dit een import functie: http://www.zriel.com/joom(...)-csv-file-16-17-25-3

Hoe dit werkt?
1. maak een nieuw bestand op je server aan met alle gegevens. ( CSV dump van je DB)
2. maak een nieuw bestand aan met een .php extensie en zet daarin alle php en vervolgens zet je onderaan het example en laat deze verwijzen naar je CSV file.
Hiermee importeer je al je users.

Maak altijd voor de zekerheid een backup van je DB en van je Nieuwe DB die je installeert.
Mogelijk helpt dit iets.

[ Bericht 9% gewijzigd door cablegunmaster op 26-03-2012 11:19:09 ]
Redacted
pi_109528762
quote:
0s.gif Op maandag 26 maart 2012 11:12 schreef cablegunmaster het volgende:

[..]

Wat wil je ervan bewaren? Want het kan zijn zoals in de link aangegeven is dat bepaalde tabellen veranderd zijn in de DB. daarom kun je het beste controleren met een eigen installatie op XAMPP localhost (voorbeeld ) en daar je DB installeren om te kijken of er verschillen in zijn. Dit gaat over een kleinere versie stap dan jij dat nu hebt. Als het om een grote aantal gebruikers gaat is het de moeite waard, anders raad ik aan toch een nieuwe DB in te zetten.

Bron:
http://support.open-realt(...)Import-user-Database

Al heeft dit een import functie: http://www.zriel.com/joom(...)-csv-file-16-17-25-3

Hoe dit werkt?
1. maak een nieuw bestand op je server aan met alle gegevens. ( CSV dump van je DB)
2. maak een nieuw bestand aan met een .php extensie en zet daarin alle php en vervolgens zet je onderaan het example en laat deze verwijzen naar je CSV file.
Hiermee importeer je al je users.

Maak altijd voor de zekerheid een backup van je DB en van je Nieuwe DB die je installeert.
Mogelijk helpt dit iets.
Ik,XAMPP gebruiken??Mooi niet,ik heb LAMP. :9~
  maandag 26 maart 2012 @ 14:34:19 #89
25889 Sitethief
Fulltime Flapdrol
pi_109529810
quote:
0s.gif Op maandag 26 maart 2012 14:02 schreef Blue_Panther_Ninja het volgende:

[..]

Ik,XAMPP gebruiken??Mooi niet,ik heb LAMP. :9~
Je weet dat de X in XAMPP staat voor om het even welke OS, dus ook voor LAMP ?
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_109529959
quote:
0s.gif Op maandag 26 maart 2012 14:34 schreef Sitethief het volgende:

[..]

Je weet dat de X in XAMPP staat voor om het even welke OS, dus ook voor LAMP ?
Lamp = Linux Apache Mysql Php

anyway:
Heeft iemand hier ervaringen met pathfinding op een grid?
  maandag 26 maart 2012 @ 17:31:06 #91
292596 Faux.
Fan van zichzelf
pi_109536367
Hallo,

ik wil graag aan de slag met de imgur API. Nu hebben zij het volgende script om bestanden naar de imgur-servers up te loaden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
?
    
$filename "image.jpg";
    
$handle fopen($filename"r");
    
$data fread($handlefilesize($filename));

    
// $data is file data
    
$pvars   = array('image' => base64_encode($data), 'key' => IMGUR_API_KEY);
    
$timeout 30;
    
$curl    curl_init();

    
curl_setopt($curlCURLOPT_URL'http://api.imgur.com/2/upload.xml');
    
curl_setopt($curlCURLOPT_TIMEOUT$timeout);
    
curl_setopt($curlCURLOPT_POST1);
    
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    
curl_setopt($curlCURLOPT_POSTFIELDS$pvars);

    
$xml curl_exec($curl);

    
curl_close ($curl);
?>
?>

Ik wil dat graag samen laten werken met een HTML-formuliertje. Hoe zorg ik ervoor dat de afbeelding die de gebruiker uploadt gelijk naar imgur wordt verzonden en niet eerst op mijn server wordt opgeslagen? :)
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
  maandag 26 maart 2012 @ 17:32:49 #92
75592 GlowMouse
l'état, c'est moi
pi_109536428
toch tijdelijk op je eigen server opslaan
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 26 maart 2012 @ 17:33:28 #93
84244 Scorpie
Abject en infaam!
pi_109536454
Er wordt altijd een tijdelijk bestand aangemaakt op de server.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  maandag 26 maart 2012 @ 17:33:52 #94
292596 Faux.
Fan van zichzelf
pi_109536471
En brengt dat veiligheidsrisico's met zich mee? :@
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
  maandag 26 maart 2012 @ 17:36:31 #95
84244 Scorpie
Abject en infaam!
pi_109536546
quote:
11s.gif Op maandag 26 maart 2012 17:33 schreef Faux. het volgende:
En brengt dat veiligheidsrisico's met zich mee? :@
Depends wat je voor veiligheidschecks hebt.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  maandag 26 maart 2012 @ 17:39:06 #96
292596 Faux.
Fan van zichzelf
pi_109536631
quote:
7s.gif Op maandag 26 maart 2012 17:36 schreef Scorpie het volgende:

[..]

Depends wat je voor veiligheidschecks hebt.
En als je de afbeelding van de gebruik opslaat, uploadt naar imgur en gelijk weer verwijderd, loop je dan geen risico?
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
  maandag 26 maart 2012 @ 17:40:55 #97
75592 GlowMouse
l'état, c'est moi
pi_109536693
quote:
11s.gif Op maandag 26 maart 2012 17:39 schreef Faux. het volgende:

[..]

En als je de afbeelding van de gebruik opslaat, uploadt naar imgur en gelijk weer verwijderd, loop je dan geen risico?
over welk risico heb je het precies? Let ook op je grammatica.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 26 maart 2012 @ 17:44:56 #98
292596 Faux.
Fan van zichzelf
pi_109536824
quote:
0s.gif Op maandag 26 maart 2012 17:40 schreef GlowMouse het volgende:

[..]

over welk risico heb je het precies? Let ook op je grammatica.
verwijdert :@

De risico's die hier beschreven worden: http://corpocrat.com/2007(...)-file-upload-in-php/
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
  maandag 26 maart 2012 @ 17:47:31 #99
75592 GlowMouse
l'état, c'est moi
pi_109536908
daar staat een hele makkelijke oplossing genoemd
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 26 maart 2012 @ 22:14:25 #100
370539 kucher
is snucher
pi_109549589
Je hoeft het niet te verwijderen, dat doet PHP zelf al.
  maandag 26 maart 2012 @ 22:19:40 #101
75592 GlowMouse
l'état, c'est moi
pi_109549898
quote:
0s.gif Op maandag 26 maart 2012 22:14 schreef kucher het volgende:
Je hoeft het niet te verwijderen, dat doet PHP zelf al.
dat moet wel, aangezien je niet altijd files uit de upload_tmp_dir mag lezen (oa. als safe mode aanstaat of open_basedir ingesteld is) en je dus eerst move_uploaded_file moet aanroepen
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 27 maart 2012 @ 16:12:57 #102
25889 Sitethief
Fulltime Flapdrol
pi_109571112
Dillema

Ik heb een class waarin enkele debug en log functies staan die vooral gebruikt worden om fouten te ontdekken, debuggen, en loggen. Dat loggen gebeurt in sommige gevallen naar de database. En de database class logt wanneer er iets verkeerd gaat...

Zie hier mijn dillema, ik kan natuurlijk mijn debug.log class opsplitsen, maar ergens vind ik dat geen ideale oplossing.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  dinsdag 27 maart 2012 @ 16:50:44 #103
298746 Dalando
18, niet meer gefrustreerd
pi_109572586
Ik kwam deze tegen en ik dacht ik laat hem even hier achter, misschien goed voor in de OP.

http://phptuts.nl/home/
Spel-, taal- en grammaticafouten voorbehouden.
994a040db3f025e25771e045468fc121
pi_109575426
quote:
2s.gif Op dinsdag 27 maart 2012 16:50 schreef Dalando het volgende:
Ik kwam deze tegen en ik dacht ik laat hem even hier achter, misschien goed voor in de OP.

http://phptuts.nl/home/
Goede site, tutorials zijn lekker uptodate (zoals het hoort). Dit durf ik tenminste te geven aan een beginner! Zeker een aanrader.
  Redactie Sport / Supervogel dinsdag 27 maart 2012 @ 18:22:05 #105
270182 crew  Pino112
Pino van Luna O+
pi_109575637
quote:
0s.gif Op dinsdag 27 maart 2012 18:14 schreef totalvamp het volgende:

[..]

Goede site, tutorials zijn lekker uptodate (zoals het hoort). Dit durf ik tenminste te geven aan een beginner! Zeker een aanrader.
Sarcastisch?
pi_109575659
quote:
14s.gif Op dinsdag 27 maart 2012 18:22 schreef Pino112 het volgende:

[..]

Sarcastisch?
Nee, anders zou ik wel zeggen dat de site klote is... en dat holbewoners zelfs niet gebruik maakten van globals.

[ Bericht 5% gewijzigd door #ANONIEM op 27-03-2012 18:23:21 ]
  Redactie Sport / Supervogel dinsdag 27 maart 2012 @ 18:23:23 #107
270182 crew  Pino112
Pino van Luna O+
pi_109575683
quote:
0s.gif Op dinsdag 27 maart 2012 18:22 schreef totalvamp het volgende:

[..]

Nee, anders zou ik wel zeggen dat de site klote is...
Ik zag tuts uit 2008 staan, dus daarom mijn twijfels. :)
pi_109575697
quote:
0s.gif Op dinsdag 27 maart 2012 18:22 schreef totalvamp het volgende:

[..]

Nee, anders zou ik wel zeggen dat de site klote is...
De laatste tutorial stamt uit eind 2009. Ik kan dat nou niet bepaald 'up-to-date' noemen...
pi_109575724
quote:
0s.gif Op dinsdag 27 maart 2012 18:23 schreef The_Terminator het volgende:

[..]

De laaste tutorial stamt uit eind 2009. Ik kan dat nou niet bepaald 'up-to-date' noemen...
Als je kijkt zie je dat de techniek die gebruikt wordt gewoon goed is. Ik had eerst ook mijn twijfels erover, maar zeker voor een beginner is dit een betere start dan een PHP for Dummies boek.
  dinsdag 27 maart 2012 @ 19:49:42 #110
111382 Ofyles2
Bestemming: onbekend
pi_109579178
quote:
14s.gif Op dinsdag 27 maart 2012 18:23 schreef Pino112 het volgende:

[..]

Ik zag tuts uit 2008 staan, dus daarom mijn twijfels. :)
Momenteel is PHP6 nog niet wijdverbreid.
  dinsdag 27 maart 2012 @ 21:32:29 #111
370539 kucher
is snucher
pi_109584648
PHP6 is dood, maar het verschil tussen 5.2 en 5.4 is wel groot.
pi_109589736
quote:
15s.gif Op dinsdag 27 maart 2012 21:32 schreef kucher het volgende:
PHP6 is dood, maar het verschil tussen 5.2 en 5.4 is wel groot.
Dat wel, maar om dat een beginner te gaan leren ;) alhoewel misschien is namespacing wel een goede start :P
pi_109589900
quote:
0s.gif Op dinsdag 27 maart 2012 22:49 schreef totalvamp het volgende:

[..]

Dat wel, maar om dat een beginner te gaan leren ;) alhoewel misschien is namespacing wel een goede start :P
namespaces is iets van PHP 5.3. Als je iets typisch PHP 5.4 als vorobeeld wilt geven, kun je bijvoorbeeld traits nemen. Maar om dat nou bij een beginner uit te leggen, lijkt me niet slim...
pi_109597076
quote:
0s.gif Op dinsdag 27 maart 2012 22:49 schreef totalvamp het volgende:

[..]

Dat wel, maar om dat een beginner te gaan leren ;) alhoewel misschien is namespacing wel een goede start :P
Ik zie het nut van namespaces bij PHP niet helemaal in. Je moet de bestanden toch includen dus die tijd ben je al kwijt. Als PHP goed omgaat met niet geheel inlezen van de bestanden totdat de namespace wordt aangeroepen, dan heeft het wel een voordeel aangezien hij dan pas gaat inlezen wat hij nodig heeft.

Enige wat ik trouwens van PHP zag dat nog een verbetering was is het gebruik van woord "static" n functies. Dat hij het afdwingt deze functies beter te gebruiken. Liever had ik punten gezien als:
• betere type casting $var1 = string en blijft een string, niet dat het halvewege de code ineens een integer kan worden.
• Return types in functie name, zodat je precies weet wat je terug krijgt.
• Verplicht parameter types opgeven
• Functie overloading
pi_109611415
quote:
0s.gif Op woensdag 28 maart 2012 09:16 schreef Pakspul het volgende:

[..]

Ik zie het nut van namespaces bij PHP niet helemaal in. Je moet de bestanden toch includen dus die tijd ben je al kwijt. Als PHP goed omgaat met niet geheel inlezen van de bestanden totdat de namespace wordt aangeroepen, dan heeft het wel een voordeel aangezien hij dan pas gaat inlezen wat hij nodig heeft.

Enige wat ik trouwens van PHP zag dat nog een verbetering was is het gebruik van woord "static" n functies. Dat hij het afdwingt deze functies beter te gebruiken. Liever had ik punten gezien als:
• betere type casting $var1 = string en blijft een string, niet dat het halvewege de code ineens een integer kan worden.
• Return types in functie name, zodat je precies weet wat je terug krijgt.
• Verplicht parameter types opgeven
• Functie overloading
Het nut is dat je nooit meer 2 dezelfde classes kan aanroepen. Aangezien er meerdere classes kunnen bestaan met dezelfde naamgeving is dat dus handig. Ook hoeft includen dus niet meer. voor mijn huidige applicatie is dit perfect!

static methods bestaat al een tijdje hoor ;)

Ik ben het wel eens met je dat method parameter types aangegeven moeten kunnen worden in een interface/abstract class.
overloading bestaat al
waarom zou je return types in de functienaam willen? Je hoort gewoon iets terug te geven en dat zet je in een comment boven de functie.
pi_109620123
quote:
0s.gif Op woensdag 28 maart 2012 16:11 schreef totalvamp het volgende:

[..]

Het nut is dat je nooit meer 2 dezelfde classes kan aanroepen. Aangezien er meerdere classes kunnen bestaan met dezelfde naamgeving is dat dus handig. Ook hoeft includen dus niet meer. voor mijn huidige applicatie is dit perfect!
Hoe weet PHP dan waar de classes staan als includen niet meer hoeft?
quote:
static methods bestaat al een tijdje hoor ;)
Weet ik, maar waar ik op doel is dat het volgende mogelijk is zonder foutmelding
1
2
3
4
5
6
7
8
9
10
11
<?php
class Foo
{
    public function 
Bar()
    {
        echo 
"Foo::Bar!!!";
    }
}

Foo::Bar();
?>

Dit mag niet, static moet er bij anders klopt het gewoon niet.
quote:
Ik ben het wel eens met je dat method parameter types aangegeven moeten kunnen worden in een interface/abstract class.
*O*
quote:
overloading bestaat al
Dit kan in PHP niet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class Foo
{
    public function 
Bar(PrimaryClass $var)
    {
        
// do something
    
}

    public function 
Bar(SecondaryClass $var)
    {
        
// do something
    
}

    public function 
Bar(TertiaryClass $var)
    {
        
// do something
    
}
}
?>

Wat wel heel handig is.
quote:
waarom zou je return types in de functienaam willen? Je hoort gewoon iets terug te geven en dat zet je in een comment boven de functie.
Commentaar dwingt het niet af en dat zou wel ideaal zijn. Ook voor het opvoeden van de programmeur die wordt dan gedwongen om goed om te gaan met types.
pi_109621581
quote:
0s.gif Op woensdag 28 maart 2012 19:37 schreef Pakspul het volgende:
Hoe weet PHP dan waar de classes staan als includen niet meer hoeft?
Ik maak zelf gebruik van een autoloader (zoals je normaal ook zou hebben).
quote:
Weet ik, maar waar ik op doel is dat het volgende mogelijk is zonder foutmelding
[ code verwijderd ]
Dit mag niet, static moet er bij anders klopt het gewoon niet.
Dat is toch logisch? het voordeel van static is dat er geen instance gemaakt hoeft te worden van de class. Dit is gewoon zoals het hoort imo.

quote:
Dit kan in PHP niet:
[ code verwijderd ]

Wat wel heel handig is.
overloading houdt iets anders is.
http://php.net/manual/en/language.oop5.overloading.php

quote:
Commentaar dwingt het niet af en dat zou wel ideaal zijn. Ook voor het opvoeden van de programmeur die wordt dan gedwongen om goed om te gaan met types.
Ik neem dan aan dat je zoiets zou willen:
1
2
3
4
5
<?php

function foo(int $int, @return string) {
  return 
'het getal is: '.$int;
}

dat zou inderdaad wel van pas komen.
pi_109622108
quote:
0s.gif Op woensdag 28 maart 2012 20:03 schreef totalvamp het volgende:

[..]

Ik maak zelf gebruik van een autoloader (zoals je normaal ook zou hebben).
Dan worden de bestanden toch nog gewoon geinclude? Maar goed, dubbel class namen kan handig zijn.
quote:
[..]

Dat is toch logisch? het voordeel van static is dat er geen instance gemaakt hoeft te worden van de class. Dit is gewoon zoals het hoort imo.
Nee, want je static functie kan anders zijn dan je normale funtie. In je normale functie kun je gebruik maken van je $this variabel.

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
<?php
class String
{
    public 
$Value;

    public function 
__construct($val)
    {
        
$this->Value $var;
    }

    public function 
ConCat(String $var)
    {
        return new 
String($this->Value $var->Value);
    }

    public static function 
ConCat(String $v1String $v2)
    {
        return new 
String($v1->Value $v2->Value);
    }
}

$query = new String('SELECT ');
$query $query->ConCat(new String('FROM ');

$query2 String::ConCat(new String('SELECT '), new String('FROM '));
?>

Zo programmeer je static functies (niet kijken naar de classes, kon even niets beters verzinnen :P ), maar je niet zomaar een static functie als een normale functie gebruiken. Dan komt het overloaden verhaal weer om de hoek kijken.

quote:
[..]

overloading houdt iets anders is.
http://php.net/manual/en/language.oop5.overloading.php
Duidelijk dat PHP en OO wereld twee andere dingen bedoelen. Ik doel op hoe het in OO wereld hoort: http://en.wikipedia.org/wiki/Function_overloading
quote:
[..]

Ik neem dan aan dat je zoiets zou willen:
[ code verwijderd ]

dat zou inderdaad wel van pas komen.
Liever op de c# manier
1public int Drive(int miles, int speed) { return 0; }
pi_109622589
quote:
0s.gif Op woensdag 28 maart 2012 20:13 schreef Pakspul het volgende:

[..]

Dan worden de bestanden toch nog gewoon geinclude? Maar goed, dubbel class namen kan handig zijn.
Ja maar het aanroepen van de class gaat dus anders ;) Op namespace en niet op naam en die kijkt in een folder etc.

quote:
Nee, want je static functie kan anders zijn dan je normale funtie. In je normale functie kun je gebruik maken van je $this variabel.
[ code verwijderd ]

Zo programmeer je static functies (niet kijken naar de classes, kon even niets beters verzinnen :P ), maar je niet zomaar een static functie als een normale functie gebruiken. Dan komt het overloaden verhaal weer om de hoek kijken.
Je kunt in static functies gebruik maken van self::

quote:
Duidelijk dat PHP en OO wereld twee andere dingen bedoelen. Ik doel op hoe het in OO wereld hoort: http://en.wikipedia.org/wiki/Function_overloading
Hmm interessant, ik kan begrijpen waarom je dat zou willen ja. Nu ik erover nadenk... waarom ik dat wel zou willen ;)

quote:
Liever op de c# manier
[ code verwijderd ]

Ik zou het dan liever zo zien, ik vind het wel fijn als er ook echt function bij staat :P
1public function int Drive()

Voorbeeldje van mijn autoloader:

1
2
3
4
5
6
7
8
9
10
<?php
namespace Traffic\System\Core;

function Autoloader($className)
{
    //echo 'The following class was loaded:'. $className. '<br />';
    $className = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
    require $className;
}
?>

Hoe ik in bestanden iets aanroep:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require 'Traffic/System/Core/Autoloader.php';
    spl_autoload_register('\\Traffic\\System\\Core\\Autoloader');
    define('DIRSEP', DIRECTORY_SEPARATOR);
    
    // database test
    $db = new Traffic\System\Core\Database();
    $view = new Traffic\Views;
    
    // New grid
    $grid = new Traffic\Grid();
      
    $grid->addRoad(new Traffic\Roads\Sides\Topside, $coords = array(5,4));  
    $grid->addRoad(new Traffic\Roads\Sides\BottomSide, $coords = array(5,5));  
    // etc

?>

EDIT: de FoK! php highlight ondersteunt nog geen namespaces :')

[ Bericht 12% gewijzigd door #ANONIEM op 28-03-2012 20:23:14 ]
pi_109622892
quote:
0s.gif Op woensdag 28 maart 2012 20:21 schreef totalvamp het volgende:

[..]

Ja maar het aanroepen van de class gaat dus anders ;) Op namespace en niet op naam en die kijkt in een folder etc.

[..]

Je kunt in static functies gebruik maken van self::
Weet ik, maar dat zijn wel twee verschillende dingen en die gebruik je niet door elkaar heen. Als je statische functies gebruikt mag $this niet voorkomen en dat is in PHP nu wel mogelijk.
quote:
[..]

Hmm interessant, ik kan begrijpen waarom je dat zou willen ja. Nu ik erover nadenk... waarom ik dat wel zou willen ;)

[..]

Ik zou het dan liever zo zien, ik vind het wel fijn als er ook echt function bij staat :P
[ code verwijderd ]
Extra type werk :P de ( ) geeft al aan dat het een functie is :P
quote:
Voorbeeldje van mijn autoloader:
[ code verwijderd ]

Hoe ik in bestanden iets aanroep:
[ code verwijderd ]

EDIT: de FoK! php highlight ondersteunt nog geen namespaces :')
Snap het idee, maar ben benieuwd of introductie van namespaces ook invloed heeft op performance.
pi_109623172
quote:
0s.gif Op woensdag 28 maart 2012 20:26 schreef Pakspul het volgende:

[..]

Weet ik, maar dat zijn wel twee verschillende dingen en die gebruik je niet door elkaar heen. Als je statische functies gebruikt mag $this niet voorkomen en dat is in PHP nu wel mogelijk.

[..]

Extra type werk :P de ( ) geeft al aan dat het een functie is :P

[..]

Snap het idee, maar ben benieuwd of introductie van namespaces ook invloed heeft op performance.
Tja er kloppen wel meer dingen niet (qua logica) in PHP.

Meh ik vind function erbij horen xD alhoewel je kunt voorstellen dat het een behoorlijk lange naam wordt op zo'n manier

1
2
3
<?php
final static public int function Foo();
?>

Ja het heeft zeker effect op performance. Ik kan het artikel niet zo snel vinden, maar het was een stuk sneller (met grote apps) dan normale loading.

[ Bericht 2% gewijzigd door #ANONIEM op 28-03-2012 20:32:12 ]
pi_109623505
En als we dan toch nog even bezig zijn fields mogen ook toegevoegd worden.

http://msdn.microsoft.com/en-us/library/ms173118.aspx

Fokking ideaal!
pi_109623726
quote:
0s.gif Op woensdag 28 maart 2012 20:36 schreef Pakspul het volgende:
En als we dan toch nog even bezig zijn fields mogen ook toegevoegd worden.

http://msdn.microsoft.com/en-us/library/ms173118.aspx

Fokking ideaal!
Ik zie niet zo snel het voordeel ervan in tegenover een eigen class maken.
pi_109625036
quote:
0s.gif Op woensdag 28 maart 2012 20:13 schreef Pakspul het volgende:

[..]

Dan worden de bestanden toch nog gewoon geinclude? Maar goed, dubbel class namen kan handig zijn.

[..]

Nee, want je static functie kan anders zijn dan je normale funtie. In je normale functie kun je gebruik maken van je $this variabel.
[ code verwijderd ]

Zo programmeer je static functies (niet kijken naar de classes, kon even niets beters verzinnen :P ), maar je niet zomaar een static functie als een normale functie gebruiken. Dan komt het overloaden verhaal weer om de hoek kijken.
Ik vind die code lelijk, maar dat komt vooral omdat functienamen en propertyname met een hoofdletter beginnen. Da's wel gebruikelijk voor class names, niet voor andere dingen. En die static functie heb je niet nodig als je dit kunt doen:
1
2
3
<?php
$query 
= new String('SELECT ')->concat(new String ('FROM ')) 
?>
quote:
Duidelijk dat PHP en OO wereld twee andere dingen bedoelen. Ik doel op hoe het in OO wereld hoort: http://en.wikipedia.org/wiki/Function_overloading
In PHP kun je een functie maken die optionele parameters heeft. Dat is vergelijkbaar met je overloading voorbeeld.
quote:
Liever op de c# manier
[ code verwijderd ]
Ik vraag me af of er dynamically typed talen zijn waar dat in werkt.
pi_109625049
quote:
0s.gif Op woensdag 28 maart 2012 20:40 schreef totalvamp het volgende:

[..]

Ik zie niet zo snel het voordeel ervan in tegenover een eigen class maken.
Je kunt checks uitvoeren op je class variabelen. Of readonly variabelen maken.
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
class
{
    protected DateTime _Birthday;

    public DateTime BirthDay
    {
        set
        {
            if ( value > DateTime.Now )
            {
                // geboortedatum ligt in de toekomst dat kan niet
                throw new ArgumentOutOfRangeException();
            }

            this._Birthday = value;
        }
        get
        {
            return this.Birthday;
        }
    }

    public int Age
    {
        get
        {
            TimeSpan diff = DateTime.Now - this._Bithday;
            return (int) Math.Floor(diff.Days / 365.25);
        }
    }
}
pi_109625181
quote:
0s.gif Op woensdag 28 maart 2012 21:00 schreef Pakspul het volgende:

[..]

Je kunt checks uitvoeren op je class variabelen. Of readonly variabelen maken.
[ code verwijderd ]

Dat is gewoon een hele andere programmeer style ineens :P
Komt vast ooit wel in PHP terecht.
pi_109625316
quote:
0s.gif Op woensdag 28 maart 2012 21:00 schreef Light het volgende:

[..]

Ik vind die code lelijk, maar dat komt vooral omdat functienamen en propertyname met een hoofdletter beginnen. Da's wel gebruikelijk voor class names, niet voor andere dingen. En die static functie heb je niet nodig als je dit kunt doen:
[ code verwijderd ]
Uppercamelcase is lowercamelcase mag je gebruiken zoals je wil, als je maar consistent bent in het gebruik.

Het was ook een voorbeeld en wat jij doet kan niet aangezien. PHP geeft dan een error.
quote:
[..]

In PHP kun je een functie maken die optionele parameters heeft. Dat is vergelijkbaar met je overloading voorbeeld.
Het is weer zo'n afgeraffelde oplossing.
quote:
[..]

Ik vraag me af of er dynamically typed talen zijn waar dat in werkt.
Dit maakt PHP ook een makkelijke taal, maar officieel moet het gewoon anders en dat zou wel mooi zijn als ze dat eens ingaan voeren. Want ze zijn al bezig om een volwassen taal te worden.

Nadeel is dat de mensen dan heel veel code opnieuw moeten gaan schrijven.
pi_109625373
quote:
0s.gif Op woensdag 28 maart 2012 21:02 schreef totalvamp het volgende:

[..]

Dat is gewoon een hele andere programmeer style ineens :P
Komt vast ooit wel in PHP terecht.
Voorbeeld is geschreven in c#, maar dat werkt wel super goed. Readonly variabelen ook, soms kan dat best handig uitkomen.
  woensdag 28 maart 2012 @ 21:09:25 #129
25889 Sitethief
Fulltime Flapdrol
pi_109625620
quote:
0s.gif Op woensdag 28 maart 2012 21:04 schreef Pakspul het volgende:
Dit maakt PHP ook een makkelijke taal, maar officieel moet het gewoon anders en dat zou wel mooi zijn als ze dat eens ingaan voeren.
Moet? mag PHP nog een eigen taal zijn, of moet het allemaal een pot nat zijn en allemaal hetzelfde?
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_109625681
quote:
0s.gif Op woensdag 28 maart 2012 21:00 schreef Pakspul het volgende:

[..]

Je kunt checks uitvoeren op je class variabelen. Of readonly variabelen maken.
[ code verwijderd ]

Dat kan in PHP ook:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class Foo {
    private 
$birthDate;
    public function 
getBirthDate() { return $this->birthDate; }
    public function 
setBirthDate(DateTime $date) {
        if(
$date > new DateTime() {
            throw new 
InvalidArgumentException('Datum mag niet in de toekomst liggen');
        }
        
$this->birthDate $date;
    }
    public function 
getAge() {
        
$diff $this->birthDate->diff(new DateTime());
        
$age $diff->y;
        return 
$age;
    }
}
?>
pi_109625986
quote:
0s.gif Op woensdag 28 maart 2012 21:09 schreef Sitethief het volgende:

[..]

Moet? mag PHP nog een eigen taal zijn, of moet het allemaal een pot nat zijn en allemaal hetzelfde?
Nou ja moet, zou leuk zijn als ze de standaarden volgen.
quote:
0s.gif Op woensdag 28 maart 2012 21:10 schreef Light het volgende:

[..]

Dat kan in PHP ook:
[ code verwijderd ]

Weet ik, maar die get/set functies in vind ik dan weer niet mooi :P c# en PHP lijken best voor op elkaar, maar als het op er aan komt dan kies ik toch voor c# en dan kijk ik niet naar mogelijkheden, maar puur naar opmaak.
pi_109626765
quote:
0s.gif Op woensdag 28 maart 2012 21:04 schreef Pakspul het volgende:

[..]

Uppercamelcase is lowercamelcase mag je gebruiken zoals je wil, als je maar consistent bent in het gebruik.
Dat is het belangrijkste. :)
quote:
Het was ook een voorbeeld en wat jij doet kan niet aangezien. PHP geeft dan een error.
Sinds PHP 5.4 kan het wel, iig als je twee haakjes toevoegt (en misschien ook zonder die extra haakjes):
1
2
3
<?php
$query 
= (new String('SELECT '))->concat(new String ('FROM '))
?>
quote:
[..]

Het is weer zo'n afgeraffelde oplossing.
Nee, het is een valide manier van werken, helemaal in de tijd dat typehinten in PHP nog niet mogelijk was.
quote:
[..]

Dit maakt PHP ook een makkelijke taal, maar officieel moet het gewoon anders en dat zou wel mooi zijn als ze dat eens ingaan voeren. Want ze zijn al bezig om een volwassen taal te worden.

Nadeel is dat de mensen dan heel veel code opnieuw moeten gaan schrijven.
PHP is dynamically typed, en dat heeft voor- en nadelen. Jouw idee over hoe dingen moeten, zijn niet altijd mogelijk. En als je een statically typed taal wilt, moet je geen PHP gebruiken.
pi_109626834
quote:
0s.gif Op woensdag 28 maart 2012 21:15 schreef Pakspul het volgende:

Weet ik, maar die get/set functies in vind ik dan weer niet mooi :P c# en PHP lijken best voor op elkaar, maar als het op er aan komt dan kies ik toch voor c# en dan kijk ik niet naar mogelijkheden, maar puur naar opmaak.
Dan kun je nog altijd de magic funnctions __get en __set gebruiken.
pi_109627281
quote:
0s.gif Op woensdag 28 maart 2012 21:28 schreef Light het volgende:

[..]

Dan kun je nog altijd de magic funnctions __get en __set gebruiken.
en _call en _callStatic

Opties zat, maar heb geen zin om methodes te bouwen om functionaliteiten na te bootsen.
pi_109629393
quote:
0s.gif Op woensdag 28 maart 2012 21:36 schreef Pakspul het volgende:

[..]

en _call en _callStatic

Opties zat, maar heb geen zin om methodes te bouwen om functionaliteiten na te bootsen.
Bij de fields in C# bouw je ook methods. Je geeft ze alleen niet zo expliciet een naam.
  donderdag 29 maart 2012 @ 11:14:17 #136
87680 Mirel
Mirel wil een bongophone.
pi_109644703
edit
When all else fails, you always have delusion.
pi_109693924
kun je met php de rotatie van een foto achterhalen,
dus als een foto portrait is gemaakt, ook portrait wordt weergegeven en niet landscape
zit een rotatie in de data van een foto?
pi_109694001
http://php.net/manual/en/function.exif-read-data.php

sommige fototoestellen nemen idd een rotatie op in de exif data.
pi_109694842
quote:
14s.gif Op vrijdag 30 maart 2012 14:23 schreef KomtTijd... het volgende:
http://php.net/manual/en/function.exif-read-data.php

sommige fototoestellen nemen idd een rotatie op in de exif data.
thanks..iemand al ooit iets mee gedaan?
ik wil een fotoupload op een site..
stuur een foto naar een specifiek mailadres, de foto komt met de juiste rotatie op een site
zoiets is het idee
  vrijdag 30 maart 2012 @ 20:41:48 #140
370539 kucher
is snucher
pi_109710472
O jah, nieuwe Joomla database gemaakt!! *O*


hoe kan ik dit weghalen??


[ Bericht 15% gewijzigd door Blue_Panther_Ninja op 30-03-2012 22:47:17 ]
  vrijdag 30 maart 2012 @ 23:10:57 #142
299167 stefanhaan
Bloeddorstige wasbeer
pi_109715940
quote:
0s.gif Op vrijdag 30 maart 2012 21:30 schreef Blue_Panther_Ninja het volgende:
O jah, nieuwe Joomla database gemaakt!! *O*


hoe kan ik dit weghalen??
[ link | afbeelding ]

even inloggen en dan kun je in de settings maintenance mode uit zetten als het goed is.

Tevens leuke hentai tab heb je open ~O>
It was an opportunity to honour our memories and to make room for new ones
pi_109718291
quote:
1s.gif Op vrijdag 30 maart 2012 23:10 schreef stefanhaan het volgende:

[..]

even inloggen en dan kun je in de settings maintenance mode uit zetten als het goed is.

Tevens leuke hentai tab heb je open ~O>
Even proberen!!

Ik ben bijna 6 jaar H-palm member,er is nog 1 he! :9
  zaterdag 31 maart 2012 @ 00:05:45 #144
370539 kucher
is snucher
pi_109718354
meh
pi_109718695
index.php

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
<?php
/**
 * @package        Joomla.Site
 * @copyright    Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */

// Set flag that this is a parent file.
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);

if (file_exists(dirname(__FILE__) . '/defines.php')) {
    include_once dirname(__FILE__) . '/defines.php';
}

if (!defined('_JDEFINES')) {
    define('JPATH_BASE', dirname(__FILE__));
    require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';

// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;

// Instantiate the application.
$app = JFactory::getApplication('site');

// Initialise the application.
$app->initialise();

// Mark afterIntialise in the profiler.
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;

// Route the application.
$app->route();

// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER->mark('afterRoute') : null;

// Dispatch the application.
$app->dispatch();

// Mark afterDispatch in the profiler.
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;

// Render the application.
$app->render();

// Mark afterRender in the profiler.
JDEBUG ? $_PROFILER->mark('afterRender') : null;

// Return the response.
echo $app;

Welke moet ik weg hebben voor de site login in gedoe als het offline is?
  zaterdag 31 maart 2012 @ 00:21:39 #146
299167 stefanhaan
Bloeddorstige wasbeer
pi_109718892
quote:
0s.gif Op zaterdag 31 maart 2012 00:16 schreef Blue_Panther_Ninja het volgende:
index.php
[ code verwijderd ]

Welke moet ik weg hebben voor de site login in gedoe als het offline is?
dat kun je niet vanuit de index :P beschrijf even specifiek wat je wil :+
It was an opportunity to honour our memories and to make room for new ones
pi_109720648
quote:
1s.gif Op zaterdag 31 maart 2012 00:21 schreef stefanhaan het volgende:

[..]

dat kun je niet vanuit de index :P beschrijf even specifiek wat je wil :+
Zie post 141. :*
  zaterdag 31 maart 2012 @ 01:24:48 #148
299167 stefanhaan
Bloeddorstige wasbeer
pi_109720697
quote:
0s.gif Op zaterdag 31 maart 2012 01:22 schreef Blue_Panther_Ninja het volgende:

[..]

Zie post 141. :*
Ja maar wil je alleen het inloggen weghalen of de hele under construction?
It was an opportunity to honour our memories and to make room for new ones
pi_109721056
quote:
1s.gif Op zaterdag 31 maart 2012 01:24 schreef stefanhaan het volgende:

[..]

Ja maar wil je alleen het inloggen weghalen of de hele under construction?
alleen inloggen. :9
pi_109839530
Vraagje...

Ik heb 3 queries

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT TOP 1
    t.IETS1,
    t.IETS2
FROM
    TABEL1 AS t
WHERE 
    t.ID='2'

SELECT TOP 1
    q.IETS3
FROM
    TABEL2 AS q
WHERE
    q.ID='2'

SELECT TOP 1
    s.IETS4
    s.IETS5
    s.IETS6
FROM
    TABEL3 AS s
WHERE
    s.ID='2'

De resultaten die ik selecteer wil ik combineren. Nu dacht ik eerst gewoon UNION maar dat kan dus niet omdat ik niet dezelfde velden selecteer. Toen dacht ik het kan ook gewoon zo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT TOP 1
    t.IETS1,
    t.IETS2,
    q.IETS3,
    s.IETS4,
    s.IETS5,
    s.IETS6
FROM
    TABEL1 AS t
    TABEL2 AS q
    TABEL3 AS s
WHERE
    t.ID='2' AND
    q.ID='2' AND
    s.ID='2'

Nu werkt dit eigenlijk in vrijwel alle gevallen. Alleen bij een paar ID's blijft de query uitvoeren tot een timeout. Ik geloof dat dit is omdat het resultaat van een tabel NULL is en hij dus in feite niets vind. Wanneer ik echter de queries voor die specifieke ID apart uitvoer returned hij het resultaat wel onmiddelijk...

Waarom doet hij het dus wel wanneer ik de queries apart uitvoer maar niet in 1 gebundelde query?
  dinsdag 3 april 2012 @ 10:07:26 #151
84244 Scorpie
Abject en infaam!
pi_109839661
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_109839811
quote:
0s.gif Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Ja zoiets vermoed ik ook al. Hij gaat, denk ik, een relatie zoeken waarmee de where clause overeenstemt. Dus hij zoekt ook in de lege tabel een record met ID='2', die dus niet bestaat en dus oneindig lang gaat zoeken?

Is er dan een manier zodat hij dat niet doet? Of is er een andere manier om de resultaten van mijn query simpel te mergen? (Zoals gezegd een union gaat helaas niet).
  dinsdag 3 april 2012 @ 10:13:57 #153
267443 Cue_
Cuecumbergirl
pi_109839824
Moet je niet een OR gebruiken ipv een AND?
  dinsdag 3 april 2012 @ 10:16:24 #154
299167 stefanhaan
Bloeddorstige wasbeer
pi_109839892
quote:
0s.gif Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Dit.
Allereerst je tabel namen in een enkele query is nergens voor nodig. Dus maak het je niet onnodig lastig dat je alle velden vanuit je query via t.** moet benaderen maar gewoon **.

De TOP tag werkt alleen in SQL server (Dacht ik) dus kan je beter LIMIT gebruiken doet exact hetzelfde en is vrijwel overal ondersteunt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT TOP 1
    t.IETS1,
    t.IETS2
FROM
    TABEL1 AS t
WHERE 
    t.ID='2'

SELECT TOP 1
    q.IETS3
FROM
    TABEL2 AS q
WHERE
    q.ID='2'

SELECT TOP 1
    s.IETS4
    s.IETS5
    s.IETS6
FROM
    TABEL3 AS s
WHERE
    s.ID='2'

=>

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
SELECT 
    veld1
   veld2
FROM
    tabel1
WHERE 
   id='2'
LIMIT 1

UNION

SELECT 
    veld3
FROM
    tabel2
WHERE
    id='2'
LIMIT 1

UNION

SELECT
    veld4
    veld5
    veld6
FROM
   tabel3
WHERE
    id='2'
LIMIT 1

Alleen hou deze restricties in je achterhoofd:
quote:
* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
It was an opportunity to honour our memories and to make room for new ones
pi_109840058
quote:
10s.gif Op dinsdag 3 april 2012 10:16 schreef stefanhaan het volgende:

[..]

Dit.
Allereerst je tabel namen in een enkele query is nergens voor nodig. Dus maak het je niet onnodig lastig dat je alle velden vanuit je query via t.** moet benaderen maar gewoon **.

De TOP tag werkt alleen in SQL server (Dacht ik) dus kan je beter LIMIT gebruiken doet exact hetzelfde en is vrijwel overal ondersteunt.
[ code verwijderd ]

=>
[ code verwijderd ]

Alleen hou deze restricties in je achterhoofd:

[..]

I know ;) maar het was even handig nu met copy-paste :P en LIMIT wordt in mijn geval, MS SQL server, niet ondersteund. Maar evengoed datgene wat je post heb ik dus geprobeerd en werkt niet omdat het aantal kolommen niet gelijk is.

quote:
0s.gif Op dinsdag 3 april 2012 10:13 schreef Cue_ het volgende:
Moet je niet een OR gebruiken ipv een AND?
Gedaan, had geen effect, hoewel ik wel idd dacht dat dit zou werken.
  dinsdag 3 april 2012 @ 10:24:24 #156
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840085
Daarom poste ik ook dit.
quote:
* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien? :9
It was an opportunity to honour our memories and to make room for new ones
pi_109840321
quote:
10s.gif Op dinsdag 3 april 2012 10:24 schreef stefanhaan het volgende:
Daarom poste ik ook dit.

[..]

Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien? :9
Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.

Ik had net ook nog geprobeerd met een FULL OUTER JOIN maar daarbij zelfde resultaat.
  dinsdag 3 april 2012 @ 10:36:17 #158
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840394
quote:
7s.gif Op dinsdag 3 april 2012 10:33 schreef Dale. het volgende:

[..]

Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.

Ik had net ook nog geprobeerd met een FULL OUTER JOIN maar daarbij zelfde resultaat.
Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.
It was an opportunity to honour our memories and to make room for new ones
pi_109840463
quote:
10s.gif Op dinsdag 3 april 2012 10:36 schreef stefanhaan het volgende:

[..]

Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.
True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doen :P
  dinsdag 3 april 2012 @ 10:41:10 #160
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840560
quote:
7s.gif Op dinsdag 3 april 2012 10:38 schreef Dale. het volgende:

[..]

True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doen :P
Zelfs dan valt het nog mee mits goede server.
It was an opportunity to honour our memories and to make room for new ones
pi_109840651
quote:
10s.gif Op dinsdag 3 april 2012 10:41 schreef stefanhaan het volgende:

[..]

Zelfs dan valt het nog mee mits goede server.
Die is er niet maar goed :') krijg ik nog een antwoord :P of blijft dit een ja-dit-ja-zus gesprek hahaha want ik wil de resultaten toch combineren.
  dinsdag 3 april 2012 @ 10:45:07 #162
75592 GlowMouse
l'état, c'est moi
pi_109840717
UNION was toch al genoemd?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109840756
quote:
0s.gif Op dinsdag 3 april 2012 10:45 schreef GlowMouse het volgende:
UNION was toch al genoemd?
quote:
en werkt niet omdat het aantal kolommen niet gelijk is.
  dinsdag 3 april 2012 @ 10:50:30 #164
75592 GlowMouse
l'état, c'est moi
pi_109840915
Andere oplossingen worden echt lelijk :')

hoofdletters als tabel-/kolomnamen zijn echt lelijk :')

SELECT t.IETS1,t.IETS2,q.IETS3,q.IETS4
FROM TABEL1 AS t
LEFT JOIN TABEL 2 AS q ON(q.ID=2)
WHERE t.ID=2
LIMIT 1
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 3 april 2012 @ 10:54:08 #165
75592 GlowMouse
l'état, c'est moi
pi_109841055
Het is mooier om, als je maar één kolom hebt en bij een andere twee kolommen, toch UNION te gebruiken en dan ipv select veld1 te doen: select veld1,0
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109841912
quote:
0s.gif Op dinsdag 3 april 2012 10:50 schreef GlowMouse het volgende:
Andere oplossingen worden echt lelijk :')

hoofdletters als tabel-/kolomnamen zijn echt lelijk :')

SELECT t.IETS1,t.IETS2,q.IETS3,q.IETS4
FROM TABEL1 AS t
LEFT JOIN TABEL 2 AS q ON(q.ID=2)
WHERE t.ID=2
LIMIT 1
Okee! En ja sorry ik heb het database schema niet gemaakt :') maar ander vraagje... Ik hou het dus gewoon bij 3 queries... Maar kan ik dan de resultaten in sql makkelijk mergen?

Ik heb dan dus zoiets als

@SET result1 = SELECT ...
@SET result2 = SELECT ...
@SET result3 = SELECT ...

Waarbij result1,2 en 3 dus iets zijn als
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-----------
| a1 | a2 |
-----------

----------------
| b1 | b2 | b3 |
----------------

------
| c1 |
------

Wordt

-------------------------------
| a1 | a2 | b1 | b2 | b3 | c1 |
-------------------------------

quote:
0s.gif Op dinsdag 3 april 2012 10:54 schreef GlowMouse het volgende:
Het is mooier om, als je maar één kolom hebt en bij een andere twee kolommen, toch UNION te gebruiken en dan ipv select veld1 te doen: select veld1,0
Dat zou idd werken helaas merk ik net dat ik dan nog tegen een conversie fout aanloop :')
  dinsdag 3 april 2012 @ 11:35:09 #167
75592 GlowMouse
l'état, c'est moi
pi_109842741
Nee dat kan niet. De methode van joinen is het enige alternatief op union dat ik kan bedenken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109842771
quote:
0s.gif Op dinsdag 3 april 2012 11:35 schreef GlowMouse het volgende:
Nee dat kan niet. De methode van joinen is het enige alternatief op union dat ik kan bedenken.
Oke thanks. Dan gewoon maar een loopje en in de programmeertaal mergen.
  dinsdag 3 april 2012 @ 11:39:31 #169
305897 remi1986
This MF is infected by madness
pi_109842931
Ik kwam dit lelijke stukje code tegen in de code van een oud werknemer.

1
2
$var = false;
$arr = array("key" => $var['key']);

De verwachting is dat hij eruit klapt met een undefined index, maar blijkbaar mag dit. Is dit nieuw?
Als $var gedefinieerd wordt als $var = array(), doet hij dat wel namelijk.
  dinsdag 3 april 2012 @ 21:09:03 #170
370539 kucher
is snucher
pi_109867339
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   SELECT TOP 1
      t.iets1,
      t.iets2,
      NULL
   FROM tabel1 AS t
   WHERE t.id=2
UNION ALL
   SELECT TOP 1
      q.iets3,
      NULL,
      NULL
   FROM tabel2 AS q
   WHERE q.id=2
UNION ALL
   SELECT TOP 1
      s.iets4
      s.iets5
      s.iets6
   FROM tabel3 AS s
   WHERE s.id=2
  donderdag 5 april 2012 @ 11:47:52 #171
118585 Crutch
Filantroop || Taalzwengel
pi_109933301
Hoe zou ik accessoires gerelateerd kunnen maken aan meerdere producten?
Zelf zat ik te denken aan een cel met kommagescheiden waarden(id's) waar het product bij zou passen, maar wordt een query dan niet ongelofelijk omslachtig?

En zou ik die accessoires in dezelfde tabel als de producten mogen zetten?
Je moeder is een hamster
  donderdag 5 april 2012 @ 11:48:35 #172
56176 Catch22-
Ben je Blind?!
pi_109933328
koppeltabel maken?

product_id | accessoire_id

?

en dan een gecombineerde sleutel maken
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 11:48:59 #173
299167 stefanhaan
Bloeddorstige wasbeer
pi_109933343
quote:
11s.gif Op donderdag 5 april 2012 11:48 schreef Catch22- het volgende:
koppeltabel maken?

product_id | accessoire_id

?

en dan een gecombineerde sleutel maken
Dat lijkt me wel de beste oplossing. En het simpelst om te implementeren.
It was an opportunity to honour our memories and to make room for new ones
  donderdag 5 april 2012 @ 11:50:07 #174
56176 Catch22-
Ben je Blind?!
pi_109933393
Ik mis het devven soms best wel. Ben nu fulltime met de frontend bezig (en interaction design), maar backenddevelopment kan toch ook wel tof zijn soms.

Maarja, je kan niet alles doen he
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 11:51:25 #175
118585 Crutch
Filantroop || Taalzwengel
pi_109933447
Ok, koppeltabel dus. :)

Hoe moet ik die structuur voor me zien?
Je moeder is een hamster
  donderdag 5 april 2012 @ 12:16:19 #176
118585 Crutch
Filantroop || Taalzwengel
pi_109934346
Zoiets begrijp ik?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
productentabel
| id | productnaam   |
|  1 | Apparaat 1    |
|  2 | Apparaat 2    |
|  3 | Apparaat 3    |
|  4 | Accessoire 1  |
|  5 | Accessoire 2  |

Dus als accessoire 1 bij product 2 en 3 hoort 
en accessoire 2 bij product 1 en 2 dan zal het als volgt
moeten in een relatietabel?

productenrelatiestabel
| id | accessoire_id | gerelateerd_product_id |
|  1 |      4        |            2           |
|  2 |      4        |            3           |
|  3 |      5        |            1           |
|  4 |      5        |            2           |
Je moeder is een hamster
  donderdag 5 april 2012 @ 13:06:28 #177
75592 GlowMouse
l'état, c'est moi
pi_109936176
maar dan zonder id in de tweede tabel
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 5 april 2012 @ 13:09:14 #178
56176 Catch22-
Ben je Blind?!
pi_109936295
en je maakt van accessoire_id en product_id (niet gerelateerd_product_id) een composite key. Hiermee dwing je uniqueness af.
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 13:33:30 #179
118585 Crutch
Filantroop || Taalzwengel
pi_109937200
quote:
0s.gif Op donderdag 5 april 2012 13:06 schreef GlowMouse het volgende:
maar dan zonder id in de tweede tabel
quote:
11s.gif Op donderdag 5 april 2012 13:09 schreef Catch22- het volgende:
en je maakt van accessoire_id en product_id (niet gerelateerd_product_id) een composite key. Hiermee dwing je uniqueness af.
Dus 'id' is niet verplicht in een tabel? Nou mooi, kan die weg. ;)

En wat Catch22- zegt, bedoel je daarmee dat ik een kolom moet toevoegen waarin ik aangeef bij welk product(id) deze niet hoort?
Wat is daar het praktisch nut van?
Je moeder is een hamster
pi_109938236
hij bedoelt dat het woordje "gerelateerd" een beetje onzinnige toevoeging is aan de kolom-naam. Beter weglaten.

En als tweede bedoelt hij, dat je een key ook over meerdere kolommen kan defineren. Daarom is de kolom ID overbodig. Aangezien de combinatie [accessoire_id + product_id] sowieso al uniek is.
  donderdag 5 april 2012 @ 13:57:14 #181
56176 Catch22-
Ben je Blind?!
pi_109938334
quote:
0s.gif Op donderdag 5 april 2012 13:33 schreef Crutch het volgende:

[..]

[..]

Dus 'id' is niet verplicht in een tabel? Nou mooi, kan die weg. ;)

En wat Catch22- zegt, bedoel je daarmee dat ik een kolom moet toevoegen waarin ik aangeef bij welk product(id) deze niet hoort?
Wat is daar het praktisch nut van?
Met een koppeltabel geef je aan welke 2 entiteiten bijelkaar horen. Deze combinatie is uniek. Dit stel je in door een composite key te gebruiken. Hierdoor heeft die rij niet nog een eigen id nodig, want zijn unique identifier is de composite key :)

en in een koppeltabel zijn beide id's "gerelateerd_", dus dat moet je gewoon weglaten.
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 14:03:12 #182
118585 Crutch
Filantroop || Taalzwengel
pi_109938578
quote:
14s.gif Op donderdag 5 april 2012 13:55 schreef KomtTijd... het volgende:
hij bedoelt dat het woordje "gerelateerd" een beetje onzinnige toevoeging is aan de kolom-naam. Beter weglaten.

En als tweede bedoelt hij, dat je een key ook over meerdere kolommen kan defineren. Daarom is de kolom ID overbodig. Aangezien de combinatie [accessoire_id + product_id] sowieso al uniek is.
Oh, lol. Die kolomnamen zijn hier puur ter illustratie.
Je moeder is een hamster
  donderdag 5 april 2012 @ 14:05:56 #183
118585 Crutch
Filantroop || Taalzwengel
pi_109938680
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
Je moeder is een hamster
pi_109959785
quote:
0s.gif Op donderdag 5 april 2012 14:05 schreef Crutch het volgende:
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
Je hebt 2 hoofdtabellen:
Users met info en id
Rights met naam van rechten etc en id

UserRights met user_id en rights_id

Je kunt dus voor 1 user meerdere rechten toekennen en andersom.
Zoiets dus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
Users.*, Rights.name
FROM
Users
INNER JOIN
UserRights
ON
UserRights.user_id = Users.id
INNER JOIN
Rights
ON
Rights.id = UserRights.right_id
WHERE
Users.id = 1
pi_109960646
quote:
0s.gif Op donderdag 5 april 2012 14:05 schreef Crutch het volgende:
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
1
2
3
4
5
6
CREATE TABLE `user_rights` (
      `user_id` INT NOT NULL
    , `right_id` INT NOT NULL
    , PRIMARY KEY(`user_id`, `right_id`)
    , INDEX (`right_id`)
);
Zo ongeveer. De combinatie van user_id en right_id is uniek, en de primary key werkt tevens als index op user_id (voor als je alle rechten van een user wilt zoeken). De index op right_id is handig als je wilt weten welke users een bepaald right hebben. (Eigenlijk wil je in zo'n koppeltabel altijd beide kanten op kunnen zoeken en daarbij gebruik maken van een index.)
  donderdag 5 april 2012 @ 22:16:44 #186
118585 Crutch
Filantroop || Taalzwengel
pi_109960824
^O^ Tof!
Ik ga er morgen even mee klooien. Beiden bedankt. :)
Je moeder is een hamster
  FOK!-Schrikkelbaas donderdag 5 april 2012 @ 23:07:50 #187
1972 Swetsenegger
Egocentrische Narcist
pi_109963704
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen

1
2
3
4
5
6
SELECT parent.name AS parentName, products.*
FROM nested_menu AS node, nested_menu AS parent, produkten AS products
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.menu_id = products.product_menu
AND products.highlight=1
GROUP BY product_id ORDER BY parentName, first_price ASC

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
1AND node.lft > parent.lft IF product_id <van deze rij> != product_id <vorige rij>

is dit uberhaupt mogelijk?
pi_109964120
quote:
5s.gif Op donderdag 5 april 2012 23:07 schreef Swetsenegger het volgende:
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen
[ code verwijderd ]

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
[ code verwijderd ]

is dit uberhaupt mogelijk?
Je kunt hier even kijken (al lijkt je query er al een beetje op)
http://stackoverflow.com/(...)e-children-of-a-node
Eerlijk gezegd zet ik nooit alles in 1 grote query vaak maakt dit dingen alleen maar langzamer dan bijvoorbeeld een paar losse :P (niet altijd hoor).
pi_109964526
quote:
5s.gif Op donderdag 5 april 2012 23:07 schreef Swetsenegger het volgende:
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen
[ code verwijderd ]

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
[ code verwijderd ]

is dit uberhaupt mogelijk?
Is het niet makkelijker om te stellen dat node.id != parent.id ? Volgens mij ben je er al als je dat toeveoegt aan je query.
pi_109964667
quote:
0s.gif Op donderdag 5 april 2012 23:16 schreef totalvamp het volgende:

[..]

Je kunt hier even kijken (al lijkt je query er al een beetje op)
http://stackoverflow.com/(...)e-children-of-a-node
Eerlijk gezegd zet ik nooit alles in 1 grote query vaak maakt dit dingen alleen maar langzamer dan bijvoorbeeld een paar losse :P (niet altijd hoor).
Als je de indexen goed hebt, kun je behoorlijk grote query's nog snel uitvoeren. Meerdere query's maken kan ook, maar dat vereist weer extra logica in PHP en die kost ook tijd.
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 20:38:24 #191
1972 Swetsenegger
Egocentrische Narcist
pi_109997352
quote:
0s.gif Op donderdag 5 april 2012 23:25 schreef Light het volgende:

[..]

Is het niet makkelijker om te stellen dat node.id != parent.id ? Volgens mij ben je er al als je dat toeveoegt aan je query.
Nee, zelfde probleem... als je maar 1 niveau diep bent klopt dat namelijk wel.
pi_110002233
quote:
0s.gif Op vrijdag 6 april 2012 20:38 schreef Swetsenegger het volgende:

[..]

Nee, zelfde probleem... als je maar 1 niveau diep bent klopt dat namelijk wel.
Hmm... 't klinkt wel als een leuk probleem :)
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:05:28 #193
1972 Swetsenegger
Egocentrische Narcist
pi_110002421
quote:
0s.gif Op vrijdag 6 april 2012 22:02 schreef Light het volgende:

[..]

Hmm... 't klinkt wel als een leuk probleem :)
:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
pi_110002800
quote:
7s.gif Op vrijdag 6 april 2012 22:05 schreef Swetsenegger het volgende:

[..]

:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
Da's ook een optie natuurlijk. Maar ik wil wel proberen een nettere oplossing te vinden. Moet ik alleen eerst die tabelstructuur voor mezelf helder krijgen.
  vrijdag 6 april 2012 @ 22:32:47 #195
75592 GlowMouse
l'état, c'est moi
pi_110004052
quote:
7s.gif Op vrijdag 6 april 2012 22:05 schreef Swetsenegger het volgende:

[..]

:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
http://crisp.tweakblogs.n(...)-only-one-query.html
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:39:41 #196
1972 Swetsenegger
Egocentrische Narcist
pi_110004456
quote:
Ow maar mijn menu tree opbouwen doe ik ook met 1 query.

1
2
3
4
5
6
SELECT parent.".$menuName." AS parentname, node.menu_id, node.".$menuName." AS name, node.lft, node.rgt, (
       COUNT( parent.".$menuName." ) -1) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.menu_id
       ORDER BY node.lft
  vrijdag 6 april 2012 @ 22:43:15 #197
75592 GlowMouse
l'état, c'est moi
pi_110004628
Jouw query is lelijker omdat hij niet via indices gesorteerd kan worden.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:52:35 #198
1972 Swetsenegger
Egocentrische Narcist
pi_110005145
quote:
0s.gif Op vrijdag 6 april 2012 22:43 schreef GlowMouse het volgende:
Jouw query is lelijker omdat hij niet via indices gesorteerd kan worden.
Ow vast, maar ik heb nu een menu tree waar je zonder problemen items tussen kan voegen, kan deleten, op kan schuiven, etc.

Ideaal om klanten via een cmsje zelf een menu te laten bouwen. En ja... daar komen misschien 40 records in. Deze query draait in 15.2ms voor het volledige menu.
  zaterdag 7 april 2012 @ 11:42:21 #199
267547 smegmanus
FOK! ambassadeur
pi_110017732
Ik wil een path veranderen (voor een applicatie die foto's weg schrijft naar een bepaalde dir) en gebruik het volgende command:

1UPDATE image SET path = UPDATE(path, d:/dir/dir2,g:/dir/dir2); 

Het werkt echter niet, wat doe ik verkeerd? :@
Op donderdag 15 januari 2015 19:01 schreef Maanvis het volgende:
smegmanus is de as van het kwaad. een verbrand stukje Hitler.
  zaterdag 7 april 2012 @ 11:44:54 #200
299167 stefanhaan
Bloeddorstige wasbeer
pi_110017799
quote:
7s.gif Op zaterdag 7 april 2012 11:42 schreef smegmanus het volgende:
Ik wil een path veranderen (voor een applicatie die foto's weg schrijft naar een bepaalde dir) en gebruik het volgende command:
[ code verwijderd ]

Het werkt echter niet, wat doe ik verkeerd? :@
1
2
3
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Dus moet het worden

1
2
3
UPDATE image
SET path = "d:/dir/dir2"
WHERE id=xx

Bv. of gebruik je mysql procedures / functions?
It was an opportunity to honour our memories and to make room for new ones
  zaterdag 7 april 2012 @ 11:47:02 #201
370539 kucher
is snucher
pi_110017856
Bewaar alleen het relatieve pad in je db, bedank me later.
  zaterdag 7 april 2012 @ 11:50:57 #202
267547 smegmanus
FOK! ambassadeur
pi_110017951
We gaan eens testen, bedankt voor zover.
Op donderdag 15 januari 2015 19:01 schreef Maanvis het volgende:
smegmanus is de as van het kwaad. een verbrand stukje Hitler.
pi_110030671
Heren,

Ik hoop dat jullie me weer eens kunnen helpen.
Ik ben iets aan het bouwen dat de usertabellen van vbullentin 4 gebruikt.
Hierin staat de usertimezone welke het verschil van hun tijd zone met GMT. bijvoorbeeld voor mijzelf +1

In mijn script wil ik data gaan opslaan en voor iedereen in de goede tijd weergeven.
Dat leek mij vrij simpel.
De user geeft een datum en tijd in, hier maak ik een tijdstamp van dmv mktime.
Daar haal ik het verschil aan uren vergeleken met gmt af om de gmt tijd te krijgen.
Deze sla ik op en als ik deze uit de database haal reken ik deze weer om naar de tijdzone van de user.

de server staat op -5 van gmt, dit verreken ik als ik time() aanroep.
Ik heb ook geprobeerd om de default tijd zonde van de server op gmt te zetten.

Ik krijg het alleen niet voor elkaar om de datums goed te krijgen, misschien dat ik er gister te lang naar heb zitten staren...

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
<?php
date_default_timezone_set('GMT');
function serverToGMTStamp() { // replaces time
    return  time();//-((date("O") / 100)*60*60);// server timestamp to gmt timestmap
}

function userInputToGMTStamp($userStamp,$userTimeZone) { // to be saved to database
    return  $userStamp-($userTimeZone*60*60);// user timestamp to gmt timestmap
}

function gmtToUserTime($gmtStamp,$userTimeZone,$format="d-m-Y H:i") { // displayed date /time in user timezone
    return date($format,$gmtStamp+($userTimeZone*60*60));
}
function inputTimetoStamp($input){
    if($input){    
        list($date, $time) = explode(' ',$input);
        list($hour, $minute) = explode(':',$time);
        list($month, $day, $year) = explode('/',$date);
        $input = mktime ($hour, $minute, 0, $day, $month, $year);
        return $input;
    }
}

$databaseDate = '04/06/2012 20:00'; //date in database already
$userTimeZone = 1; //compared to gmt
$databaseDateTimestamp = 1333742400; // gmt stamp from database
$databaseDateTimestampToUser = $databaseDateTimestamp+($userTimeZone*60*60); // to user timezonestamp 

$serverToGMTStamp = serverToGMTStamp();
$serverToUserGMTtoUser = $serverToGMTStamp+($userTimeZone*60*60); // to user timezonestamp 
echo 'databaseDateTimestamp (gmt): '.$databaseDateTimestamp.'<br />';
echo 'databaseDateTimestamp date (gmt): '.date("m/d/Y, H:i",$databaseDateTimestamp).'<br /><br />';

echo 'databaseDateTimestamp (user): '.$databaseDateTimestampToUser.'<br />';
echo 'databaseDateTimestamp date (user): '.date("m/d/Y, H:i",$databaseDateTimestampToUser).'<br /><br />';

echo 'serverTimeStamp (gmt): '.$serverToGMTStamp.'<br />';
echo 'serverTimeStamp date (gmt): '.date("m/d/Y, H:i",$serverToGMTStamp).'<br /><br />';

//echo 'serverTimeStamp (user): '.$serverToUserGMTtoUser.'<br />';
//echo 'serverTimeStamp date (user): '.date("m/d/Y, H:i",$serverToUserGMTtoUser).'<br /><br />';

if($serverToUserGMTtoUser>$databaseDateTimestampToUser)
{
echo 'input time already past by '.(($serverToUserGMTtoUser-$databaseDateTimestampToUser)/(60*60));
}
else{
echo 'input time not past';
}
exit();
  zaterdag 7 april 2012 @ 18:43:00 #204
370539 kucher
is snucher
pi_110031308
1
2
3
4
5
<?php
function serverToGMTStamp() { // replaces time
    
return time();
}
?>
Daarom betalen ze mij 120 Euro per uur, clientèle krijgen waar voor hun geld :7
pi_110031614
zoals je daarachter ziet ben ik veel aan het kutten geweest.

Maar mijn 'concept' klopt toch?
pi_110038929
quote:
0s.gif Op zaterdag 7 april 2012 18:24 schreef Darkomen het volgende:
Heren,

Ik hoop dat jullie me weer eens kunnen helpen.
Ik ben iets aan het bouwen dat de usertabellen van vbullentin 4 gebruikt.
Hierin staat de usertimezone welke het verschil van hun tijd zone met GMT. bijvoorbeeld voor mijzelf +1

Voordat je denkt dat je iets fout doet terwijl het niet zo is; momenteel is het voor ons GMT +2 omdat het zomertijd is.
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 14:26:10 #208
1972 Swetsenegger
Egocentrische Narcist
pi_110181251
Zie ik iets over het hoofd :?

Ik heb een tekstfile waarin ik userid's opsla.

Die file lees ik in een array, en vervolgens controleer ik over de userID uit mijn sessie in die tekstfile staat. Zo niet, schrijf ik een variabele EN schrijf vervolgens de sessie ID naar de textfile.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $wallPosts 
= array();
    
$wallPosts=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
        
    if(!
in_array($_SESSION['uid'], $wallPost)) {
        
$onload "onload=\"postToWall();\"";
        
$fp fopen('wallPost.txt''a');
        
fwrite($fp$_SESSION['uid']."\r\n");
        
fclose($fp);
        echo 
$onload;
    }
?>

Maar nou het lullige. Ik weet 100% zeker dat mijn sessie ID niet in de tekstfile staat (sterker nog, de file is leeg), maar $onload wordt niet geschreven de eerste keer dat ik de file laadt de fwrite wordt wel uitgevoerd.

als ik vervolgens de tekstfile leeg maak en opnieuw laadt werkt het wel zoals verwacht. Delete ik echter alle history & sessies en probeer het weer van voor af aan gaat het weer mis.

Het lijkt wel of de file schrijven wordt uitgevoerd waardoor de voorwaarde van de if false is.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $wallPosts 
= array();
    
$wallPosts=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
    
print_r($wallPosts); // dit geeft een array terug met de sessieID die HIERONDER geschreven wordt
    
    
if(!in_array($_SESSION['uid'], $wallPost)) {
        
$onload "onload=\"postToWall();\""// wordt niet uitgevoerd
        
$fp fopen('wallPost.txt''a'); //wordt wel uitgevoerd
        
fwrite($fp$_SESSION['uid']."\r\n"); //wordt wel uitgevoerd
        
fclose($fp); // wordt wel uitgevoerd
        
echo $onload;
    }
?>
  woensdag 11 april 2012 @ 14:50:14 #209
75592 GlowMouse
l'état, c'est moi
pi_110182283
$_SESSION['uid'] zal wel leeg zijn, maar dat is standaard debugwerk. Regel 2 is overbodig.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 14:59:53 #210
1972 Swetsenegger
Egocentrische Narcist
pi_110182767
quote:
0s.gif Op woensdag 11 april 2012 14:50 schreef GlowMouse het volgende:
$_SESSION['uid'] zal wel leeg zijn, maar dat is standaard debugwerk. Regel 2 is overbodig.
Nee hij is niet leeg, anders kan hij die ook niet schrijven naar de txt file op regel 8...
Ik weet dat regel 2 overbodig is, die heb ik maar toegevoegd om te zien of dat het probleem oplost
  woensdag 11 april 2012 @ 15:01:43 #211
75592 GlowMouse
l'état, c'est moi
pi_110182838
var_dump($_SESSION['uid'], $wallPost)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 11 april 2012 @ 15:04:41 #212
75592 GlowMouse
l'état, c'est moi
pi_110182943
of je browser cache
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:14:17 #213
1972 Swetsenegger
Egocentrische Narcist
pi_110183367
quote:
14s.gif Op woensdag 11 april 2012 15:01 schreef GlowMouse het volgende:
var_dump($_SESSION['uid'], $wallPost)
string(15) "100003526677056" NULL

-edit-

Of je zet de goede variabele in je dumb

string(15) "100003526677056" array(0) { }
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:15:02 #214
1972 Swetsenegger
Egocentrische Narcist
pi_110183399
quote:
14s.gif Op woensdag 11 april 2012 15:04 schreef GlowMouse het volgende:
of je browser cache
Ik delete alle history en browser gegevens tussen elke test
  woensdag 11 april 2012 @ 15:26:11 #215
75592 GlowMouse
l'état, c'est moi
pi_110183936
wijzig echo $onload; in die($onload), dan kun je hem niet missen
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:27:45 #216
1972 Swetsenegger
Egocentrische Narcist
pi_110184002
ik loop nu tegen een facebook restrictie aan, kan niet meer verder testen :')
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:45:28 #217
1972 Swetsenegger
Egocentrische Narcist
pi_110184888
quote:
14s.gif Op woensdag 11 april 2012 15:26 schreef GlowMouse het volgende:
wijzig echo $onload; in die($onload), dan kun je hem niet missen
Script loopt gewoon door. UID wordt in de txt file geschreven maar geen 'die'

1
2
3
4
5
6
7
8
9
10
11
<?php
    $wallPosts
=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
        
    if(!
in_array($_SESSION['uid'], $wallPosts)) {
        
$onload "onload=\"postToWall();\"";
        
$fp fopen('wallPost.txt''a');
        
fwrite($fp$_SESSION['uid']."\r\n");
        
fclose($fp);
        die(
$onload);
    }
?>

Ik begrijp er geen flikker van :{
  woensdag 11 april 2012 @ 18:08:28 #218
137776 boem-dikkie
Jedi Mind Baby!
pi_110191599
Iemand een oplossing voor mijn kwestie, of een schop in de goede richting?

Ik heb meerdere rows met informatie in een tabel.

Eén van de kolommen in een rij heet tags.

In die kolommen zitten de tags als volgt: leuk, hoi, hai.

Nu wil ik de tags van alle rijen laten zien zonder dat ik duplicates heb.

Ik heb bijv. twee rijen:
ID | Tags
1 | Een, twee, drie
2 | Vier, vijf, twee, een.

Nou wil ik als output: Een, twee, drie, vier, vijf.

Ik krijg als ik gewoon de boel select en naar buiten gooi nu: Een, twee, drie, vier, vijf, twee, een.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  woensdag 11 april 2012 @ 18:29:49 #219
25889 Sitethief
Fulltime Flapdrol
pi_110192424
GROUP BY al geprobeerd?
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_110193168
Waarom sla je meerdere tags in één veld op?
  woensdag 11 april 2012 @ 18:48:37 #221
137776 boem-dikkie
Jedi Mind Baby!
pi_110193175
Jep. Helaas.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  woensdag 11 april 2012 @ 19:39:02 #222
370539 kucher
is snucher
pi_110196006
Meerdere tags in 1 veld is idd de WTF, daardoor kun je niet SELECT DISTINCT gebruiken of GROUP BY. Met een genormaliseerde database kan dit wel, je hebt dan een aparte tabel met tags en een koppeltabel om de tags ergens aan toe te wijzen.

Met een stored procedure die alle tags in een tijdelijke tabel opslaat en vervolgens erop los joint kan het wel maar dat is beduidend meer werk, fout-gevoelig en lang niet zo snel in uitvoering. Iets beters dan dit schiet me niet zo gauw te binnen. Een recursieve query met een CTE zou nog een mogelijkheid kunnen zijn maar dat zou zomaar de WTF award van het jaar kunnen winnen.
  woensdag 11 april 2012 @ 19:42:06 #223
137776 boem-dikkie
Jedi Mind Baby!
pi_110196242
Hehe ja weet ik wel maar ik had geen zin om voor één of twee keer gebruik dat te doen.

Maar goed, misschien maar wel gewoon doen. :')
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  zaterdag 14 april 2012 @ 21:52:59 #224
113667 Keiichi
Konnichiwa!
pi_110328750
Ik heb ruzie met unique keys in innodb icm character sets.

Voorheen was alles latin1 encoding. Daar kon ik unique keys hebben die ook onderscheiden werden op puntjes op een a bv. 'ä' en 'a' waren elk uniek

Met utf8-general of utf8-unicode, niet meer :( Het is een database met gebruikersgegevens waarbij een unique key op gebruikersnaam rust, dus het is vrij vervelend als ik deze moet verwijderen ;)

Hoe kan ik unique keys toch goed laten werken op deze manier?
  zaterdag 14 april 2012 @ 23:38:01 #225
113667 Keiichi
Konnichiwa!
pi_110333694
Ik ben nog verder met character encodings aan het kloten, ik heb nu het volgende.

De huidige pagina is ISO-8859-1. Ik ben er achter gekomen dat goede browsers automatisch UTF-8 of karakters buiten ISO omzet naar htmlentities. Hierdoor leek het altijd of UTF8 nooit een probleem geweest is. Probleem is dat ik de output uit de database overal door htmlentities ga afvangen, waardoor data onbruikbaar is (alle &'s worden vervangen door & waardoor eerder gemaakt htmlentities() letterlijk getoond worden. Daar kan niemand wat mee.

Is er een mogelijkheid om htmlentities die bestaan met rust laten en alle ander karakters die geen htmlentitiy vormen wel door htmlentities()
pi_110335943
quote:
10s.gif Op woensdag 11 april 2012 19:42 schreef boem-dikkie het volgende:
Hehe ja weet ik wel maar ik had geen zin om voor één of twee keer gebruik dat te doen.

Maar goed, misschien maar wel gewoon doen. :')
Je bent gewoon genaaid :P weggooien en opnieuw starten.

Of nieuw datamodel opzetten en even een script runnen om de tags uit te lezen en in het nieuwe datamodel te plaatsen.
  zondag 15 april 2012 @ 00:49:31 #227
25889 Sitethief
Fulltime Flapdrol
pi_110336709
quote:
0s.gif Op zaterdag 14 april 2012 23:38 schreef Keiichi het volgende:
Ik ben nog verder met character encodings aan het kloten, ik heb nu het volgende.

De huidige pagina is ISO-8859-1. Ik ben er achter gekomen dat goede browsers automatisch UTF-8 of karakters buiten ISO omzet naar htmlentities. Hierdoor leek het altijd of UTF8 nooit een probleem geweest is. Probleem is dat ik de output uit de database overal door htmlentities ga afvangen, waardoor data onbruikbaar is (alle &'s worden vervangen door & waardoor eerder gemaakt htmlentities() letterlijk getoond worden. Daar kan niemand wat mee.

Is er een mogelijkheid om htmlentities die bestaan met rust laten en alle ander karakters die geen htmlentitiy vormen wel door htmlentities()
http://php.net/manual/en/function.htmlentities.php zet double_encode op false.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  zondag 15 april 2012 @ 01:49:50 #228
113667 Keiichi
Konnichiwa!
pi_110338150
quote:
0s.gif Op zondag 15 april 2012 00:49 schreef Sitethief het volgende:

[..]

http://php.net/manual/en/function.htmlentities.php zet double_encode op false.
^O^ dat deed de truc.

Iets anders, welke karacters kunnen er in latin1 voorkomen? Ik heb een veld waar iemand gepresteerd heeft dit karakter in te zetten: http://www.fileformat.info/info/unicode/char/2018/index.htm

-edit-

Ik word vaak gebeten door karakter encoding nu ik alles naar UTF8 probeer te brengen. :(
pi_110339777
quote:
0s.gif Op zondag 15 april 2012 01:49 schreef Keiichi het volgende:

[..]

^O^ dat deed de truc.

Iets anders, welke karacters kunnen er in latin1 voorkomen? Ik heb een veld waar iemand gepresteerd heeft dit karakter in te zetten: http://www.fileformat.info/info/unicode/char/2018/index.htm

-edit-

Ik word vaak gebeten door karakter encoding nu ik alles naar UTF8 probeer te brengen. :(
Ik weet niet wat voor veld je bedoelt, maar als ik jou was en je wil weten wat je mag toepassen , dan zou ik alle velden bijlangs gaan en een lijst met Karakters samenstellen die er wel in mogen. :) Om dit soort karakters te voorkomen.
Redacted
  zondag 15 april 2012 @ 13:15:33 #230
113667 Keiichi
Konnichiwa!
pi_110346931
quote:
0s.gif Op zondag 15 april 2012 03:23 schreef cablegunmaster het volgende:

[..]

Ik weet niet wat voor veld je bedoelt, maar als ik jou was en je wil weten wat je mag toepassen , dan zou ik alle velden bijlangs gaan en een lijst met Karakters samenstellen die er wel in mogen. :) Om dit soort karakters te voorkomen.
Is die collation daar niet voor bedoeld om ongeldige karakters niet (of anders) op te slaan? Nu lijkt het alsof dat ene specifieke UTF8 geldige karakter gewoon in latin1 voor kan komen.
pi_110360773
Knip,
Redacted
  zondag 15 april 2012 @ 19:08:20 #232
260431 drumminggod
Ik zeg: Doen!
pi_110360802
Hoi.

Ik heb een gastenboek gemaakt. Alleen nu heb ik een probleempje. Ik heb 3 velden.

• Naam
• Bericht
• captcha code

Nu heb ik alles ingevoerd en moet hij naar mijn mysql gaan. Ik heb even een paar scripts bekeken maar wordt er niet wijzer van.
Moet dit met: action="....">
?

Bvd

code:

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
<form id="contact-form" name="contact-form" method="post" action="submit.php">
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="15%"><label for="name">Naam</label></td>
          <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td>
          <td width="15%" id="errOffset">&nbsp;</td>
        </tr>
 
        <tr>
      
        </tr>
        <tr>
          <td valign="top"><label for="bericht">Bericht</label></td>
          <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td>
          <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td valign="top">&nbsp;</td>
          <td colspan="2"><input type="submit" name="button" id="button" value="Submit" />
          <input type="reset" name="button2" id="button2" value="Reset" />

Hij moet dus de gegevens naar de database sturen. (laten zien snap ik wel :))
Mijn piek is kwijt
pi_110360844
quote:
0s.gif Op zondag 15 april 2012 19:03 schreef drumminggod het volgende:
Hoi.

Ik heb een gastenboek gemaakt. Alleen nu heb ik een probleempje. Ik heb 3 velden.

• Naam
• Bericht
• captcha code

Nu heb ik alles ingevoerd en moet hij naar mijn mysql gaan. Ik heb even een paar scripts bekeken maar wordt er niet wijzer van.
Moet dit met:
[ code verwijderd ]

?

Bvd :)
[ code verwijderd ]

Je hebt nu het html gedeelte zelf af. de ACTION leid naar een php file. Deze zal je moeten aanmaken. Is dit de eerste keer met php? In dit bestand maak je de verwerking richting de DB en waar je de pagina daarna naartoe leid.

Wat ik zelf doe is:
1. Connect met SQL server maken. (Xampp , dmv localhost of een online Database.)
2. Velden sanitizen en insert query opstellen.
3. bezoeker doorsturen naar een andere pagina.

Connect:
http://www.w3schools.com/php/php_mysql_connect.asp
Redacted
  zondag 15 april 2012 @ 19:13:19 #234
260431 drumminggod
Ik zeg: Doen!
pi_110360958
quote:
0s.gif Op zondag 15 april 2012 19:09 schreef cablegunmaster het volgende:

[..]

Je hebt nu het html gedeelte zelf af. de ACTION leid naar een php file. Deze zal je moeten aanmaken. Is dit de eerste keer met php? Waarin je de verwerking maakt met de Database. Je hebt nu een SQL insert query nodig , een verbinding met je SQL database.

Connect:
http://www.w3schools.com/php/php_mysql_connect.asp
Ik heb wel aardig ervaring met php. Maar dit wist ik niet!. Ik moet dus een .php maken. Daar naartoe linken en in de .php het gaan plaatsen in mijn database? (ik zal even op w3schools kijken van je linkje!)

Dit is mijn totale code:

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
<form id="contact-form" name="contact-form" method="post" action="submit.php">
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="15%"><label for="name">Naam</label></td>
          <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td>
          <td width="15%" id="errOffset">&nbsp;</td>
        </tr>
 
        <tr>
      
        </tr>
        <tr>
          <td valign="top"><label for="bericht">Bericht</label></td>
          <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td>
          <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td valign="top">&nbsp;</td>
          <td colspan="2"><input type="submit" name="button" id="button" value="Submit" />
          <input type="reset" name="button2" id="button2" value="Reset" />
          
          <?php=$str?>          <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td>
        </tr>
      </table>
      </form>
      <?php=$success?>
    </div>
    <div class="tutorial-info">.    </div>

</div>

</body>
</html>

<?php 

mysql_connect
("xxx",xxx,xxx);     // zelf in te vullen

mysql_select_db(gastenboek);     // zelf in te vullen 


if(isset($_POST['door']) and isset($_POST['bericht']) and $_POST['door']!='Typ hier uw naam' and $_POST['bericht']!='Typ hier uw bericht!' ) {

    
$bericht $_POST['bericht'];

    
$door $_POST['door'];

    
$datum =  date("d-m-Y H:i:s"time());

    

    
$bericht str_replace("\n""<br>"$bericht);

    

    
$query "INSERT INTO gastenboek(bericht, door , datum) VALUES ('".$bericht."', '".$door."', '".$datum."')"

      
$sql=mysql_query($query) or die (mysql_error());

}


$query "SELECT * FROM gastenboek ORDER BY id DESC"

$sql=mysql_query($query) or die (mysql_error());

 

while (
$obj=mysql_fetch_object($sql)) { 

    
$door $obj->door;

    
$datum $obj->datum;

    
$bericht $obj->bericht;

    
?>
Mijn piek is kwijt
pi_110361067
SQL injecties interesseert je geen hol?
pi_110361110
quote:
7s.gif Op zondag 15 april 2012 19:13 schreef drumminggod het volgende:

[..]

Ik heb wel aardig ervaring met php. Maar dit wist ik niet!. Ik moet dus een .php maken. Daar naartoe linken en in de .php het gaan plaatsen in mijn database? (ik zal even op w3schools kijken van je linkje!)

Dit is mijn totale code:
[ code verwijderd ]

Je kan het naar zichzelf laten verwijzen door de pagina naam het eigen te maken.
Daarnaast ,
1
2
3
4
5
6
7
8
9
<?php
if(isset($_POST)){
echo 
" Dank u voor uw bijdrage";
}else{
?>
// Formulier
<?php
}
?>
quote:
0s.gif Op zondag 15 april 2012 19:16 schreef Pakspul het volgende:
SQL injecties interesseert je geen hol?
Goed punt : ) en daarom ook altijd: http://php.net/manual/en/function.mysql-real-escape-string.php om je variabelen die je invoert.
Redacted
  zondag 15 april 2012 @ 19:20:59 #237
260431 drumminggod
Ik zeg: Doen!
pi_110361265
Nou. Dan ben ik vanaf nu een eerste klas dummie.. Want ik zit nu dus echt totaal vast. Ik dacht dat een gastenboekje met een captcha code een eitje was... Mijn beveiliging is dus zo lek als een mandje?
Mijn piek is kwijt
pi_110361336
quote:
7s.gif Op zondag 15 april 2012 19:20 schreef drumminggod het volgende:
Nou. Dan ben ik vanaf nu een eerste klas dummie.. Want ik zit nu dus echt totaal vast. Ik dacht data en gasennboekj wmet eeMicaptcha code een eitje was... Mijn beveiliging is dus zo lek als een mandje?
Enkele simpele code en ik kon je DB verwijderen / Tabel verwijderen. :P

1
2
3
4
5
<?php
function esc($string){
return 
mysql_real_escape_string($string);
}
?>
Dit vind ik zelf altijd makkelijker :).
Redacted
  zondag 15 april 2012 @ 19:26:21 #239
260431 drumminggod
Ik zeg: Doen!
pi_110361484
quote:
0s.gif Op zondag 15 april 2012 19:22 schreef cablegunmaster het volgende:

[..]

Enkele simpele code en ik kon je DB verwijderen / Tabel verwijderen. :P
Oei. Dat klinkt niet goed :P. Maar ik zit dus nu echt compleet vast.. Het formulier is verder wel goed en zo?
Mijn piek is kwijt
pi_110361620
quote:
7s.gif Op zondag 15 april 2012 19:26 schreef drumminggod het volgende:

[..]

Oei. Dat klinkt niet goed :P. Maar ik zit dus nu echt compleet vast.. Het formulier is verder wel goed en zo?
Om eerlijk gezegd te zijn ziet je code eruit als copy en paste van een online projectje. :P

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
<form id="contact-form" name="contact-form" method="post" action="submit.php">
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="15%"><label for="name">Naam</label></td>
          <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td>
          <td width="15%" id="errOffset">&nbsp;</td>
        </tr>
 
        <tr>
      
        </tr>
        <tr>
          <td valign="top"><label for="bericht">Bericht</label></td>
          <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td>
          <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td valign="top">&nbsp;</td>
          <td colspan="2"><input type="submit" name="button" id="button" value="Submit" />
          <input type="reset" name="button2" id="button2" value="Reset" />
          
          <?php=$str?>          <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td>
        </tr>
      </table>
      </form>
      <?php=$success?>
    </div>
    <div class="tutorial-info">.    </div>

</div>

</body>
</html>

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
// Submit.php
<?php 
mysql_connect
("xxx",xxx,xxx);     // zelf in te vullen
mysql_select_db(gastenboek);     // zelf in te vullen 

if(isset($_POST['door']) && isset($_POST['bericht']) && $_POST['door'] !='Typ hier uw naam' && $_POST['bericht']!='Typ hier uw bericht!' ) {

    
$bericht $_POST['bericht'];
    
$door $_POST['door'];
    
$datum =  date("d-m-Y H:i:s"time());
    
$bericht str_replace("\n""<br>"$bericht);

    
$query "INSERT INTO gastenboek
   (bericht, door , datum) VALUES ('"
.esc($bericht)."', '".esc($door)."', '".esc($datum)."')"

    
$sql=mysql_query($query) or die (mysql_error());

}

$query "SELECT * FROM gastenboek ORDER BY id DESC"
$sql=mysql_query($query) or die (mysql_error());

while (
$obj=mysql_fetch_object($sql)) { 

    
$door $obj->door;
    
$datum $obj->datum;
    
$bericht $obj->bericht;
   }

function 
esc($string){
return 
mysql_real_escape_string($string);
}
?>
Redacted
  zondag 15 april 2012 @ 19:33:46 #241
260431 drumminggod
Ik zeg: Doen!
pi_110361797
quote:
0s.gif Op zondag 15 april 2012 19:29 schreef cablegunmaster het volgende:

[..]

Om eerlijk gezegd te zijn ziet je code eruit als copy en paste van een online projectje. :P
[ code verwijderd ]

[ code verwijderd ]

Ik heb de basis van internet. Dat klopt :)
Mijn piek is kwijt
pi_110361823
quote:
7s.gif Op zondag 15 april 2012 19:33 schreef drumminggod het volgende:

[..]

Ik heb de basis van internet. Dat klopt :)
Dat maakt je niet meteen een PHP expert ;). meestal pak ik voor de datum eerder now() dan dat ik date pak. makkelijker om meteen in de DB te stoppen. :P

1
2
3
4
5
6
7
8
<?php
while ($obj=mysql_fetch_object($sql)) { 

    
$door $obj->door;
    
$datum $obj->datum;
    
$bericht $obj->bericht;
   }
?>
Dit gedeelte snap ik niet met wat je daarmee wilt doen. :P
Redacted
  zondag 15 april 2012 @ 19:36:40 #243
260431 drumminggod
Ik zeg: Doen!
pi_110361908
quote:
0s.gif Op zondag 15 april 2012 19:34 schreef cablegunmaster het volgende:

[..]

Dat maakt je niet meteen een PHP expert ;). meestal pak ik voor de datum eerder now() dan dat ik date pak. makkelijker om meteen in de DB te stoppen. :P
Het is verstandig om hem helemaal opnieuw te maken?

In dat geval weet ik niet hoe ik moet beginnen :$. Haha. Ik kom er alweer achter dat ik er bar weinig van snap!
Mijn piek is kwijt
pi_110361923
Waarom trouwens
1
2
3
<?php
if(isset($_POST['door']) && isset($_POST['bericht']) && $_POST['door'] !='Typ hier uw naam' && $_POST['bericht']!='Typ hier uw bericht!' ) {
?>

En niet gewoon:
1
2
3
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
?>
pi_110362002
quote:
0s.gif Op zondag 15 april 2012 19:36 schreef Pakspul het volgende:
Waarom trouwens
[ code verwijderd ]

En niet gewoon:
[ code verwijderd ]

Antwoord staat er al tussen om post met standaard bericht te voorkomen.
De Isset is overbodig inderdaad. :P kan beter !empty zijn :).
Redacted
  zondag 15 april 2012 @ 19:39:18 #246
260431 drumminggod
Ik zeg: Doen!
pi_110362035
Oke.. Ik begin helemaal overnieuw. Volgens mij is deze code echt bagger. Haha.

Ik snap de waarom vragen namelijk niet :o
Mijn piek is kwijt
pi_110362076
quote:
7s.gif Op zondag 15 april 2012 19:39 schreef drumminggod het volgende:
Oke.. Ik begin helemaal overnieuw. Volgens mij is deze code echt bagger. Haha.

Ik snap de waarom vragen namelijk niet :o
Zoek de php for dummies boek op , download XAMPP en ga daar mee bezig met experimenteren. :*

Xampp is je localhost server. waarmee je op je eigen pc een website in php kan vertalen naar een normale webpagina. (webside scripting). Rest staat wel in het dummy boekje ;).
Of gebruik deze site om je wat te verdiepen, http://www.w3schools.com/php/php_intro.asp
Redacted
  zondag 15 april 2012 @ 19:42:05 #248
260431 drumminggod
Ik zeg: Doen!
pi_110362177
quote:
0s.gif Op zondag 15 april 2012 19:40 schreef cablegunmaster het volgende:

[..]

Zoek de php for dummies boek op , download XAMPP en ga daar mee bezig met experimenteren. :*

Xampp is je localhost server. waarmee je op je eigen pc een website in php kan vertalen naar een normale webpagina. (webside scripting). Rest staat wel in het dummy boekje ;).
Ik heb MAMP. Dat is ook een localhost server :).

Ik zal experimenteren. Bedankt voor de moeite!
Mijn piek is kwijt
  zondag 15 april 2012 @ 19:59:02 #249
25889 Sitethief
Fulltime Flapdrol
pi_110363044
quote:
7s.gif Op zondag 15 april 2012 19:13 schreef drumminggod het volgende:

Ik heb wel aardig ervaring met php.

Ik ben zelf ook geen PHP-god, maar dit zinnetje in combinatie met jouw posts in dit topic deed me glimlachen _O- .
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  zondag 15 april 2012 @ 20:01:51 #250
260431 drumminggod
Ik zeg: Doen!
pi_110363187
quote:
0s.gif Op zondag 15 april 2012 19:59 schreef Sitethief het volgende:

[..]

Ik ben zelf ook geen PHP-god, maar dit zinnetje in combinatie met jouw posts in dit topic deed me glimlachen _O- .
Ik werk er veel mee (school), maar blijkbaar snap ik er gewoon geen drol van. Altijd fijn als je denkt dat je het kan!
Mijn piek is kwijt
pi_110363466
quote:
0s.gif Op zondag 15 april 2012 19:38 schreef cablegunmaster het volgende:

[..]

Antwoord staat er al tussen om post met standaard bericht te voorkomen.
De Isset is overbodig inderdaad. :P kan beter !empty zijn :).
isset is wel mooier, anders krijg je een warning bij error_reporting(E_ALL);
  zondag 15 april 2012 @ 20:15:45 #252
260431 drumminggod
Ik zeg: Doen!
pi_110364232
Oke. Ik heb nu iets. Alleen als ik nu mijn naam NIET heb ingevuld. Of een bericht niet. Dan moet er eigenlijk een foutmelding komen... Alleen nu plaatst hij gewoon lege vakken in mijn db.. Zal wel iets kleins zijn maar voor mij onvindbaar op ww3schools
Mijn piek is kwijt
pi_110364817
quote:
7s.gif Op zondag 15 april 2012 20:15 schreef drumminggod het volgende:
Oke. Ik heb nu iets. Alleen als ik nu mijn naam NIET heb ingevuld. Of een bericht niet. Dan moet er eigenlijk een foutmelding komen... Alleen nu plaatst hij gewoon lege vakken in mijn db.. Zal wel iets kleins zijn maar voor mij onvindbaar op ww3schools
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
If(!empty($_POST['VELDNAAM']))
{
  
$error "Er is geen BLABLABLABLA ingevuld";
}

//Om je query heen invullen.
if(!isset($error)){
  
// Insert Query uitvoeren. 
}

//bij je formulier.
if(!empty($error)){
 echo 
$error;
}
?>
Redacted
pi_110366361
quote:
0s.gif Op zondag 15 april 2012 20:24 schreef cablegunmaster het volgende:

[..]
[ code verwijderd ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$errorlog 
= array();

if ( empty(
$_POST['veldnaam']) === false )
{
    
$errorlog[] = "<li>error omschrijving</li>";
}

if ( 
count($errorlog) == )
{
    
// do database work
}
else
{
    echo 
"<ul>" join(""$errorlog) . "</ul>";
}
?>

Zo kun je meerdere velden checken :)
pi_110370578
Ik zou geen empty gebruiken. Dan werkt een spatie alleen ook :) Doe een betere check met strlen ;)
pi_110394352
Weet iemand nog een goede tool om php code mee te analyseren? Bv om ongebruikte variable/functies, foutieve opmaak etc mee te detecteren. Het liefst eentje met een webinterface (geen cli). :s)
..///
pi_110397139
Ik zou gewoon iets als NuSphere of PHPstorm gebruiken.
pi_110414490
quote:
0s.gif Op zondag 15 april 2012 21:44 schreef totalvamp het volgende:
Ik zou geen empty gebruiken. Dan werkt een spatie alleen ook :) Doe een betere check met strlen ;)
Een string met alleen een spatie is niet empty.
pi_110423579
quote:
0s.gif Op maandag 16 april 2012 21:17 schreef Light het volgende:

[..]

Een string met alleen een spatie is niet empty.
Nee dat is mijn punt. Je moet dus een adequate check doen op je POST. strlen() + trim() + weetikveel()
pi_110424305
quote:
0s.gif Op maandag 16 april 2012 23:53 schreef totalvamp het volgende:

[..]

Nee dat is mijn punt. Je moet dus een adequate check doen op je POST. strlen() + trim() + weetikveel()
Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.
pi_110424632
quote:
0s.gif Op dinsdag 17 april 2012 00:13 schreef Light het volgende:

[..]

Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.
Daarvoor gebruik je isset() niet empty. Zoals eerder aangegeven, maar alleen een isset is natuurlijk niet voldoende, net als empty dat niet is.
pi_110424865
quote:
0s.gif Op dinsdag 17 april 2012 00:23 schreef totalvamp het volgende:

[..]

Daarvoor gebruik je isset() niet empty. Zoals eerder aangegeven, maar alleen een isset is natuurlijk niet voldoende, net als empty dat niet is.
Yep. Volgens mij bedoelen we hetzelfde maar omschrijven we het anders.
pi_110427237
quote:
0s.gif Op dinsdag 17 april 2012 00:13 schreef Light het volgende:

[..]

Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.
Dit is inderdaad een belangrijk punt, tevens kun je controleren of je formulier wel goed over komt. Je kunt dus andere acties ondernemen als ze niet ge-set zijn. Dit kan betekenen dat er met het formulier is gerommeld.
  dinsdag 17 april 2012 @ 10:31:27 #264
260431 drumminggod
Ik zeg: Doen!
pi_110430194
quote:
0s.gif Op zondag 15 april 2012 20:47 schreef Pakspul het volgende:

[..]
[ code verwijderd ]

Zo kun je meerdere velden checken :)
Bedankt! Het werkt!

nog 1 resterend probleempje... Bij het herladen van mijn pagina verstuurd hij mijn berichtje net zo vaak als dat f5 wordt ingedrukt. Ik heb deze code:

1<input type="submit" value="Toevoegen" onClick=<a href="javascript:location.reload(true)" />
maar als ik op toevoegen heb geklikt en druk op f5 komt hij dus twee keer! (of meerdere malen)

Wat is er fout? Ik dacht aan buffer legen... alleen geen idee hoe dat netjes moet.

[ Bericht 19% gewijzigd door drumminggod op 17-04-2012 10:39:24 ]
Mijn piek is kwijt
pi_110432303
quote:
0s.gif Op maandag 16 april 2012 13:58 schreef wipes66 het volgende:
Weet iemand nog een goede tool om php code mee te analyseren? Bv om ongebruikte variable/functies, foutieve opmaak etc mee te detecteren. Het liefst eentje met een webinterface (geen cli). :s)
Wat is er mis mee? Dat je een tool nodig bent? :P
Redacted
pi_110432464
quote:
7s.gif Op dinsdag 17 april 2012 10:31 schreef drumminggod het volgende:

[..]

Bedankt! Het werkt!

nog 1 resterend probleempje... Bij het herladen van mijn pagina verstuurd hij mijn berichtje net zo vaak als dat f5 wordt ingedrukt. Ik heb deze code:
[ code verwijderd ]

maar als ik op toevoegen heb geklikt en druk op f5 komt hij dus twee keer! (of meerdere malen)

Wat is er fout? Ik dacht aan buffer legen... alleen geen idee hoe dat netjes moet.
Na het schrijven naar de database de gebruiker doorsturen naar de goede pagina header("Location xxx"); ?
pi_110432502
quote:
7s.gif Op dinsdag 17 april 2012 10:31 schreef drumminggod het volgende:

[..]

Bedankt! Het werkt!

nog 1 resterend probleempje... Bij het herladen van mijn pagina verstuurd hij mijn berichtje net zo vaak als dat f5 wordt ingedrukt. Ik heb deze code:
[ code verwijderd ]
maar als ik op toevoegen heb geklikt en druk op f5 komt hij dus twee keer! (of meerdere malen)
Wat is er fout? Ik dacht aan buffer legen... alleen geen idee hoe dat netjes moet.
1. Simpelste oplossing is een redirect :). Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.

2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function esc($string){
return 
mysql_real_escape_string($string);
}

//Dit eronder ff opzoeken hoe je het aanpakt maar het generale idee is er wel :).
$test $db->fetchAssoc($db->query("Select * from table where text = ".esc($_POST['text']).""));
if(empty(
$test[0]['text']))
{
 
// execute insert query.
}
redirect("pagina.php");
?>

quote:
0s.gif Op dinsdag 17 april 2012 11:39 schreef Pakspul het volgende:

[..]

Na het schrijven naar de database de gebruiker doorsturen naar de goede pagina header("Location xxx"); ?
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//==== Redirect... Try PHP header redirect, then Java redirect, then try http redirect.:
function redirect($url){
    if (!
headers_sent()){    //If headers not sent yet... then do php redirect
        
header('Location: '.$url); exit;
    }else{                    
//If headers are sent... do java redirect... if java disabled, do html redirect.
        
echo '<script type="text/javascript">';
        echo 
'window.location.href="'.$url.'";';
        echo 
'</script>';
        echo 
'<noscript>';
        echo 
'<meta http-equiv="refresh" content="0;url='.$url.'" />';
        echo 
'</noscript>'; exit;
    }
}
//==== End -- Redirect
Prefereer daarom liever Redirect :P

[ Bericht 11% gewijzigd door cablegunmaster op 17-04-2012 11:46:47 ]
Redacted
pi_110433689
quote:
0s.gif Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:

[..]

1. Simpelste oplossing is een redirect :). Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.

2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]

[..]

Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]

Prefereer daarom liever Redirect :P
Liever gewoon code waarbij er niks wordt getoond tot op het einde als alles verwerkt is ;) dan heb je die problemen ook niet :)
pi_110435321
quote:
0s.gif Op dinsdag 17 april 2012 12:09 schreef totalvamp het volgende:

[..]

Liever gewoon code waarbij er niks wordt getoond tot op het einde als alles verwerkt is ;) dan heb je die problemen ook niet :)
Dit, tussen door stukken al in elkaar zetten en op het laatste even layoutje er omheen rammen en er uit gooien. Dan kun je er zelf voor kiezen of er uberhaupt iets geprint moet worden en kun je veilig omgaan met header functies.
pi_110445199
Hallo even een simpel vraagje waar ik toch al een tijdje mee zit

Stel ik heb een categorie lijstje.
1 Appels
2 Peren
3 Bananen

En nu wil ik ze opschuiven naar boven en naar beneden, hoe switch ik ze van ID? :P
Ik zat te denken met tussen variabele. Stel ik wil Appels op 2 hebben.
Dan moet 1 naar 2 toe en 2 op 1, Hoe kan ik dit aanpassen zonder dat ik problemen krijg in de DB? Of moet ik dan denken aan een Tussen variabele ? :P

Na enig nadenken kom ik uit dat ik eerst moet kijken naar wat +1 met de ID doet daarvan het selecteer als er niks in zit kan ik het met een insert ernaar toe kopieren en anders als er wel iets inzit het pakken en met elkaar verwisselen. :P

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//pseudo code. om +1 te krijgen.
function Switch_ID($id)
{
$sourceid $db->Assocfetch($db->query("select * from categorie where id = " '.esc($id) .' " limit 1 " ));
$id++;
$target $db->Assocfetch($db->query("select * from categorie where id = " '.esc($id) .' " limit 1" ));

if(!isset(
$target))
{
  return 
false;
}else{
 
$db->query("Update categorie set Variables  = $sourceid[0] where id = " '.$id.' " limit 1" );
$id--;
 
$db->query("Update categorie set Variables  = $target[0] where id = " '.esc($id).' " limit 1" );
}
}
?>

En nu nog nadenken hoe ik de subgroepen ga doen van deze klasses :s)
Bah , nu update hij ook de rest :') zit nog een fout in.

Kan ik een tussenupdate met 0 gebruiken? Of is dit niet aan te raden? :P

[ Bericht 9% gewijzigd door cablegunmaster op 17-04-2012 17:01:41 ]
Redacted
pi_110448406
Gebruik een order kolom. Haal eerst oude order nummer op en zet die in de nieuwe nummer kun je berekenen door de richting.
pi_110448620
quote:
0s.gif Op dinsdag 17 april 2012 17:51 schreef Pakspul het volgende:
Gebruik een order kolom. Haal eerst oude order nummer op en zet die in de nieuwe nummer kun je berekenen door de richting.
Is dat niet het probleem opschuiven? :{ Want dan zit je met een orderkolom met 1,2,3,4
en als je een groot aantal hebt. dan heb je dat probleem alsnog.

ff nadenken :P

Dan heb ik een ID_order kolom en daarop kan ik het continue laten veranderen.
Dus dan krijg ik een update die 1-2-3-4 met elkaar kan veranderen. Op basis van het ID van de rij :). Dus 1-2-3-4 en als er iets nieuws bijkomt pakt hij de vorige ID_order++; als leeg dan niks.

Moet te doen zijn , alleen wat insert querys aan passen :P

[ Bericht 12% gewijzigd door cablegunmaster op 17-04-2012 18:05:24 ]
Redacted
pi_110449222
quote:
0s.gif Op dinsdag 17 april 2012 17:57 schreef cablegunmaster het volgende:

[..]

Is dat niet het probleem opschuiven? :{ Want dan zit je met een orderkolom met 1,2,3,4
en als je een groot aantal hebt. dan heb je dat probleem alsnog.

ff nadenken :P
opschuiven maakt toch niet uit, dan sorteer je toch gewoon op die kolom en heb je het allemaal goed. Als je ID nummers gaat veranderen dan begrijp je het idee van een primary key niet helemaal.
pi_110510149
Ah leuk, PHP forum, kan af en toe wel helpen bij vragen denk ik zo.
pi_110513115
quote:
0s.gif Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:

[..]

1. Simpelste oplossing is een redirect :). Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.

2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]

[..]

Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]

Prefereer daarom liever Redirect :P
Daarom moet je pas output richting browser sturen nadat alle logica is geweest. Dan heb je daar geen last van.
En als je toch die redirect-functie gebruikt, zoek dan eerst het verschil tussen Java en JavaScript op.
  donderdag 19 april 2012 @ 11:51:56 #276
260431 drumminggod
Ik zeg: Doen!
pi_110525594
quote:
0s.gif Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:

[..]

1. Simpelste oplossing is een redirect :). Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.

2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]

[..]

Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]

Prefereer daarom liever Redirect :P
Bij de redirect code krijg ik dit:

Fatal error: Call to undefined function redirect() in D:\xxx\UsbWebserver\UsbWebserver\Root\xxx\gastenboek.php on line 147

De pagina heet gastenboek en de code om line 147 is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (mysql_num_rows($sql) == 0) {
    
// Als er nog geen reacties geplaatst zijn
    
echo 'We hebben nog geen reacties!';
} else {
    while(
$data mysql_fetch_assoc($sql)) {
        
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
        
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['door'])).'<br />
        <b>Datum:</b> '
.htmlspecialchars(stripslashes($data['datum'])).'<br />
        <b>Bericht:</b><br />'
.ubb($data['bericht']).'<br /><br />
        <b>_________________________________________________________________________________________________________________________________________</b>'
;
    }
}
{
}
redirect("gastenboek.php");
?>
Mijn piek is kwijt
  donderdag 19 april 2012 @ 11:55:23 #277
137776 boem-dikkie
Jedi Mind Baby!
pi_110525720
Je gebruikt een functie die niet gedefinieerd is. Heb je zelf een functie gemaakt die redirect heet? Je kunt mits je geen HTML voor je code hebt staan header('location: gastenboek.php'); gebruiken.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  donderdag 19 april 2012 @ 11:57:17 #278
260431 drumminggod
Ik zeg: Doen!
pi_110525778
quote:
14s.gif Op donderdag 19 april 2012 11:55 schreef boem-dikkie het volgende:
Je gebruikt een functie die niet gedefinieerd is. Heb je zelf een functie gemaakt die redirect heet? Je kunt mits je geen HTML voor je code hebt staan header('location: gastenboek.php'); gebruiken.
natuurlijk! In de header moet het ook staan!
Mijn piek is kwijt
  donderdag 19 april 2012 @ 11:59:34 #279
137776 boem-dikkie
Jedi Mind Baby!
pi_110525863
Ik snap je niet.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  donderdag 19 april 2012 @ 12:01:26 #280
260431 drumminggod
Ik zeg: Doen!
pi_110525920
quote:
7s.gif Op donderdag 19 april 2012 11:59 schreef boem-dikkie het volgende:
Ik snap je niet.
In de header moet je toch de funtie definieren?
Mijn piek is kwijt
  donderdag 19 april 2012 @ 12:06:05 #281
137776 boem-dikkie
Jedi Mind Baby!
pi_110526056
Die functie kun je overal definieren zolang je hem maar include of er naar verwijst in het document waar je de functie aanspreekt.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  donderdag 19 april 2012 @ 13:49:50 #282
25889 Sitethief
Fulltime Flapdrol
pi_110529788
quote:
7s.gif Op donderdag 19 april 2012 11:51 schreef drumminggod het volgende:

[..]

Bij de redirect code krijg ik dit:

Fatal error: Call to undefined function redirect() in D:\xxx\UsbWebserver\UsbWebserver\Root\xxx\gastenboek.php on line 147

De pagina heet gastenboek en de code om line 147 is:
[ code verwijderd ]

redirect() is niet een native functie van PHP, wat er bedoelt werd is http://php.net/manual/en/function.header.php
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  donderdag 19 april 2012 @ 13:58:34 #283
12221 Tijn
Powered by MS Paint
pi_110530191
quote:
0s.gif Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:

[..]

1. Simpelste oplossing is een redirect :). Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.

2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]

[..]

Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]

Prefereer daarom liever Redirect :P
Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2? :D
pi_110532472
quote:
10s.gif Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:

[..]

Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2? :D
failsafe ;).
Redacted
pi_110545769
quote:
10s.gif Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:

[..]

Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2? :D
Gewoon lynx gebruiken :)
pi_110553993
quote:
10s.gif Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:

[..]

Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2? :D
Er bestaat ook nog zoiets als javascript uitschakelen of een javascript-blokker als plugin geinstalleerd hebben. Het is een kleine moeite om zo'n tag met een melding op te nemen, vooral voor webapplicaties die functioneel gezien vertrouwen op javascript.
pi_110555517
Iemand trouwens een kort duidelijk tutorial om van /single.php?id=1 te maken /titel-van-post
  vrijdag 20 april 2012 @ 11:48:58 #288
25889 Sitethief
Fulltime Flapdrol
pi_110555764
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_110556152
alles staat in een mapje: /artikel/

ik heb een .htacccess bestand met dit:

1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule   ^(.*) index.php?p=$1 [L]

en een index.php met dit:

1
2
3
4
5
6
7
$p = $_GET["p"];

...

$query = "SELECT type,naam,url,id FROM artikelen WHERE naam='$p'";

...etc

En dit werkt gewoon als ik dit doe: /artikel/appels

Maar eigenlijk wil ik die niet in een aparte map hebben, dat /artikel/ zou ook dynamisch moeten zijn.
pi_110556622
mapje hoger plaatsen en zoiets gebruiken?:

1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule   ^(.*)/(.*) index.php?x=$1&p=$2 [L]
of je moet alles door sturen naar je index.php en het splitsen e.d. daar afhandelen.. (dat is imho een stuk flexibeler en dan zou je e.v.t. meer "onderdelen/mappen" kunnen toevoegen)
  vrijdag 20 april 2012 @ 14:52:08 #291
12221 Tijn
Powered by MS Paint
pi_110558037
quote:
0s.gif Op donderdag 19 april 2012 21:25 schreef Light het volgende:

[..]

Gewoon lynx gebruiken :)
w3m ondersteunt wel Javascript _O_
pi_110559892
quote:
0s.gif Op vrijdag 20 april 2012 12:05 schreef JDx het volgende:
alles staat in een mapje: /artikel/

ik heb een .htacccess bestand met dit:
[ code verwijderd ]

en een index.php met dit:
[ code verwijderd ]

En dit werkt gewoon als ik dit doe: /artikel/appels

Maar eigenlijk wil ik die niet in een aparte map hebben, dat /artikel/ zou ook dynamisch moeten zijn.
Dit is erg gevaarlijke code als je dit zo zou gebruiken.
pi_110560176
Multiviews is dan nog geen eens het probleem, daar heb je nog mooiere oplossingen dan hoe je het nu ophaalt in de php file, maar waar vampier op doelt is het sql-injectie stuk.
pi_110561041
quote:
0s.gif Op vrijdag 20 april 2012 16:10 schreef totalvamp het volgende:

[..]

Dit is erg gevaarlijke code als je dit zo zou gebruiken.
Wat is er gevaarlijk aan dan?
pi_110565667
quote:
0s.gif Op vrijdag 20 april 2012 16:43 schreef JDx het volgende:

[..]

Wat is er gevaarlijk aan dan?
Je escaped de variable $p niet die direct afkomstig is uit de GET array en dus door gebruikers van het script beïnvloedbaar is. Je script is in deze staat vatbaar voor SQL injecties.

Tip: http://php.net/manual/en/function.mysql-real-escape-string.php
pi_110590225
Je moet sowieso nooit gebruikers input vertrouwen. Je moet ze allemaal behandelen als hackers.
  zaterdag 21 april 2012 @ 13:31:29 #297
12221 Tijn
Powered by MS Paint
pi_110591223
quote:
0s.gif Op vrijdag 20 april 2012 16:43 schreef JDx het volgende:

[..]

Wat is er gevaarlijk aan dan?
Dat iedereen kan doen wat 'ie wil met je gehele database.

pi_110591267
Wat vaag, dit heb ik ook gewoon van een tutorial en gebruik ik al jaren op al mijn sites, moet ik dan een post gebruiken?
  zaterdag 21 april 2012 @ 13:35:30 #299
12221 Tijn
Powered by MS Paint
pi_110591340
quote:
0s.gif Op zaterdag 21 april 2012 13:32 schreef JDx het volgende:
Wat vaag, dit heb ik ook gewoon van een tutorial en gebruik ik al jaren op al mijn sites, moet ik dan een post gebruiken?
POST of GET maakt niks uit, het gaat erom dat je de input filtert voordat je het in je query stopt, omdat anders mensen zelf queries kunnen gaan invoeren en daarmee je database kunnen uitlezen en misschien zelfs veranderen.

Bijvoorbeeld zo:

1
2
3
4
5
<?php
'SELECT * FROM `table`
WHERE `string` = "'
.mysql_real_escape_string($_GET['foo']).'"
  AND `number` = '
.intval($_GET['bar']);
?>

Maar beter gebruik je gewoon een setje database functies waardoor je sowieso geen ruwe queries in je code hoeft te zetten.

Bizar trouwens dat je al jaren werkt aan meerdere sites en dit niet weet, want dit is echt reden #1 waardoor websites gehacked worden.

[ Bericht 3% gewijzigd door Tijn op 21-04-2012 13:42:02 ]
  zaterdag 21 april 2012 @ 13:47:24 #300
302853 themole
graaft totaal door.
pi_110591665
quote:
0s.gif Op zaterdag 21 april 2012 13:32 schreef JDx het volgende:
Wat vaag, dit heb ik ook gewoon van een tutorial en gebruik ik al jaren op al mijn sites, moet ik dan een post gebruiken?
Zou het als ik jou was snel oplossen, de onderste site in je signature is al vatbaar daarvoor.

Verander ?id=9 maar eens in ?id='; krijg je meteen een error.
Niet altijd serieus
  zaterdag 21 april 2012 @ 13:57:20 #301
12221 Tijn
Powered by MS Paint
pi_110591941
quote:
14s.gif Op zaterdag 21 april 2012 13:47 schreef themole het volgende:

[..]

Verander ?id=9 maar eens in ?id='; krijg je meteen een error.
Sowieso niet erg handig om errors weer te geven.
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')