1 |
1 |
LOL. Nou succes verderquote:Op donderdag 9 november 2006 15:28 schreef Desdinova het volgende:
misschien kijk ik ergens overheen..
ik heb
[ code verwijderd ]
en krijg parse error
[ code verwijderd ]
line 26 is de regel die ik gepost heb. $row is een object gemaakt met mysql_fetch_object()..
Shite. heb hem al.. Objectnaam begon met een getal (ie. $row->1year)..![]()
Kun je me iets meer uitleg geven, hier word ik niet zo wijs uitquote:Op donderdag 9 november 2006 13:04 schreef JeRa het volgende:
[..]
Je kunt dat op dezelfde manier doen als je joinet:
[ code verwijderd ]
Als de tabellen niet aan elkaar gerelateerd zijn kun je met subqueries werken.
Zoals ik in een aantal posts geleden opmerkte, MySQL werkt niet optimaal met ORDER BY RAND(). Als je heel veel records hebt kunnen de queries langzamer gaan werken, heb je er niet zo heel veel dan maakt het niets uit.
Misschien kun jij even uitleggen hoe je drie tabellen (toch?) aan elkaar gerelateerd zijn, en hoe je precies de random records daaruit wilt halenquote:Op vrijdag 10 november 2006 12:31 schreef RiderXXX het volgende:
[..]
Kun je me iets meer uitleg geven, hier word ik niet zo wijs uit
Ik ben er bijna uit, het excel probleem dan...quote:Op woensdag 8 november 2006 09:37 schreef Chandler het volgende:
[..]
Sr, htmlspecialchars werkt helaas niet... krijg dezelfde output. en goede headers stuur ik inderdaad niet. Heb namelijk geen idee welke ik moet sturen die zowel gewone karakters als thaise karakters ondersteunen...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function saveSession() { $_SESSION['shop'] = array(); $_SESSION['shop']['stuks'] = $this->stuks; $_SESSION['shop']['produkten'] = addslashes(serialize($this->produkten)); $_SESSION['shop']['produkten_stuks'] = $this->produkten_stuks; $_SESSION['shop']['totaalbedrag'] = $this->totaalbedrag; echo 'save'; print_r($_SESSION['shop']); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function shop() { if (isSet($_SESSION['shop'])) { $this->stuks = $_SESSION['shop']['stuks']; $this->produkten = stripslashes(unserialize($_SESSION['shop']['produkten'])); $this->produkten_stuks = $_SESSION['shop']['produkten_stuks']; $this->totaalbedrag = $_SESSION['shop']['totaalbedrag']; } else { $this->stuks = 0; $this->produkten = array(); $this->produkten_stuks = 0; $this->totaalbedrag = 0; } } ?> |
Echter krijg ik steeds een probleem met het laden ervan... dan zegt het dat het een probleem heeft met unserialize van $_SESSION['shop']['produkten']..quote:$_SESSIE
Array
(
[stuks] => 1
[produkten] => a:1:{i:2;a:5:{s:5:"titel";s:15:"Produkt titel 2";s:10:"stuk_prijs";s:1:"0";s:12:"totaal_prijs";s:1:"0";s:5:"stuks";i:1;s:7:"details";s:15:"Produkt tekst 2";}}
[produkten_stuks] => 1
[totaalbedrag] => 0
)[/code]
[quote]CLASS data
object(shop)(4)
{
["stuks"]=> int(1)
["produkten"]=> array(1)
{
[2]=> array(5)
{
["titel"]=> string(15) "Produkt titel 2"
["stuk_prijs"]=> string(1) "0"
["totaal_prijs"]=> string(1) "0"
["stuks"]=> int(1)
["details"]=> string(15) "Produkt tekst 2"
}
}
["produkten_stuks"]=> int(1)
["totaalbedrag"]=> int(0)
}
Lijn 20 is de unserialize regel in functie shop() waar de sessie tot class data wordt omgezet.quote:Notice: argument passed to unserialize() is not an string in d:wwwbedrijfwww.heartbeadsdesign.nlincludeshop.class.php on line 20
oftewel blijkt dat de array $this->produkten helemaal vern**kt is :Xquote:Warning: Invalid argument supplied for foreach() in d:wwwbedrijfwww.heartbeadsdesign.nlincludeshop.class.php on line 62
saveArray ( [stuks] => [produkten] => N; [produkten_stuks] => [totaalbedrag] => ) array(4) { ["stuks"]=> NULL ["produkten"]=> string(2) "N;" ["produkten_stuks"]=> NULL ["totaalbedrag"]=> NULL }
Hmja, ik heb net die post geupdate met de tabellen en wat ik er precies uit wil halen. Ik wil dat dus gewoon geheel random doen, zoals ik met RAND() LIMIT 1 zou kunnen doen, en dan die uitkomst in $text gooien. Dan kan ik $text gebruiken om de titel in de server te veranderen..quote:Op vrijdag 10 november 2006 12:35 schreef JeRa het volgende:
[..]
Misschien kun jij even uitleggen hoe je drie tabellen (toch?) aan elkaar gerelateerd zijn, en hoe je precies de random records daaruit wilt halen
En als ik je goed begrijp wil je dus uit één willekeurige tabel van de vier die je daar beschrijft een random row halen?quote:Op vrijdag 10 november 2006 12:31 schreef RiderXXX het volgende:
[..]
Het zijn trouwens vier tabellen:
streamrds: text
nieuws: datum titel
frequenties: stad frequentie
top100_shout: naam text
Dus van tabel 'streamrds' is het 'text' en van top100_shout 'naam' EN 'text'. Wat moet ik er dan neergooien?
Dan bepaal je éérst wat je random tabel is in PHP:quote:Op vrijdag 10 november 2006 12:40 schreef RiderXXX het volgende:
Klopt asj een boessie! (klopt als een bus) :P
1 2 3 4 5 | $tabellen = array('streams', 'nieuws', 'etc'); $tabel = $tabellen[array_rand($tabellen)]; unset($tabellen); ?> |
1 2 3 4 5 | $query = 'SELECT * FROM `' . $tabel . '` ORDER BY RAND() LIMIT 1'; $result = mysql_query($query); $data = mysql_fetch_assoc($result); ?> |
1 2 3 4 5 6 7 8 9 10 | switch ($tabel) { case 'streams': echo $data['text']; //ofzo break; case 'nieuws': // etc } ?> |
Ik heb het probleem anders opgelost... door de data die geserialized is te decoden met base64 en daar krijg ik dus weer geen errors van.quote:Op vrijdag 10 november 2006 12:36 schreef Chandler het volgende:
[..]
Ik ben er bijna uit, het excel probleem dan...
Nu heb ik een ander probleem.
Voor mijn webshop ben ik bezig met een class, deze is natuurlijk bij iedere aanroep (include) weer leeg, echter wil ik proberen met sessies de inhoud te saven... echter gaat er iets fout..
Om de sessie aantemaken en de produkten te saven
[ code verwijderd ]
en om het weer in te laden gebruik ik dit
[ code verwijderd ]
Dit is de sessie en class inhoud bij bestellen van een produkt
[..]
Echter krijg ik steeds een probleem met het laden ervan... dan zegt het dat het een probleem heeft met unserialize van $_SESSION['shop']['produkten']..
PS addslashes en stripslashes heb ik er nu in zitten en geeft ie een ander probleem..
zonder addslashes/stripslashes
[..]
Lijn 20 is de unserialize regel in functie shop() waar de sessie tot class data wordt omgezet.
met addslashes/stripslashes
[..]
oftewel blijkt dat de array $this->produkten helemaal vern**kt is :X
Wie heeft een idee??
1 2 3 | $this->produkten = unserialize(base64_decode($_SESSION['shopdata']['produkten'])); ?> |
Hoe je dat in PHP doet moet je zelf gaan bepalen, maar de SQL ziet er ongeveer zo uit (subquery):quote:Op vrijdag 10 november 2006 12:48 schreef RiderXXX het volgende:
Aah relaxed!!! Dit snap ik tenminste.. bedankt :D :*
Edit: wat als ik nu alleen in de tabel 'nieuws' wil sorteren op 'datum' en daar ook dan maar random uit de laatste 10 berichten eentje wil kiezen?
1 2 3 4 5 6 7 8 | SELECT * FROM nieuws ORDER BY datum DESC LIMIT 0, 10 ) t1 ORDER BY RAND() LIMIT 1 |
Ja dat zou inderdaad kunnen, maar zoeken naar 'der Laan' zou op die manier niet werken, terwijl dat wel de bedoeling is.quote:Op woensdag 8 november 2006 09:53 schreef ralfie het volgende:
[..]
Je kunt natuurlijk ook de manier gebruiken die veel officiele instanties gebruiken
achternaam, tussenvoegsels
als in
Laan, van der
Jansen
Het wordt iets moeilijker om bijv 'van der Laan' te zoeken (dit zul je met php om moeten bouwen) maar verder denk ik dat het een goed alternatief is.
Je zou bepaalde woorden kunnen laten herkennen als tussenvoegsels, zodat je uiteindelijk toch op 'Laan' uitkomt?quote:Op vrijdag 10 november 2006 13:44 schreef GVRuud het volgende:
[..]
Ja dat zou inderdaad kunnen, maar zoeken naar 'der Laan' zou op die manier niet werken, terwijl dat wel de bedoeling is.
Lees eens wat over database normalisatie.quote:Op vrijdag 10 november 2006 13:59 schreef RiderXXX het volgende:
Nou, probleem één is klaar. Nu weer het volgende (grote) probleem:
Ik wil een database opbouwen met daarin 'album releases'. Ik wil dat op de volgende manier kunnen showen op de website:
[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
etc.. en de nieuwste maand boven. Maar hoe kan ik dat het beste doen? Het mooiste zou zijn om gewoon één tabelletje te hebben met 'albumreleases' en dat ik daar alles invul, maar wat is het beste qua opbouw in php en sql?
bestaat er niet ook een manier om $db om te toveren naar een superglobal?quote:Op woensdag 8 november 2006 14:15 schreef ralfie het volgende:
Je kunt $GLOBALS['mysql'] gebruiken, of in elke functie 'global $mysql;' zetten, om de globale variabele aan te spreken.
Andere tip:
Je kunt mysql->connect() beter als constructor maken. Mocht je dat niet kennen, Constructors zijn functies die automatisch aangeroepen worden als een object gemaakt wordt
[ code verwijderd ]
wanneer je nu $x=new MySQL; doet, zal __construct() aageroepen worden (bij <php 5 heeft de constructor de naam van het object zelf (in dit geval 'function MySQL()' ). Scheelt weer een regel.
1 2 3 4 5 6 | $_SESSION["naam"] = $_POST["naam"]; $_SESSION["adres"] = $_POST["adres"]; $_SESSION["postcode"] = $_POST["postcode"]; $_SESSION["plaats"] = $_POST["plaats"]; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | session_start(); //wat code if( /*is er gepost? */ ) { $_SESSION["naam"] = $_POST["naam"]; } //nog meer code echo($_SESSION["naam"]); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | foreach ($_POST as $key => $value) { // er van uitgaand dat er geen arrays in je posts staan $_SESSION['postdata'][$key] = $value; } en wil je dit weer echooon foreach ($_SESSION['postdata'] as $key => $value) { echo $key . " = " . $value . "<br />"; } ?> |
Omdat niet alle data die wordt gepost ook in de sessie bewaard moet worden.quote:Op zondag 12 november 2006 18:14 schreef Chandler het volgende:
waarom save je $_POST gegevens niet zo
[ code verwijderd ]
zo ongv doe ik het ook met mijn parser... is altijd handig als je formulieren moet checken!
1 |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $newimage = "c:/temp/test.gif"; if($url_file){ $newfile = fopen($newimage,'wb'); while (!feof($url_file)) { $chunk = fread($url_file,1024); fwrite($newfile,$chunk); } fclose($newfile); } else{ $error['no_file'] = "no file found on URL $web_image"; } |
Dit alleen is al niet veilig en biedt ruimte voor bijvoorbeeld XSS (Cross Site Scripting), omdat je untrusted data zonder controle teruggeeft richting de browser.quote:Op zondag 12 november 2006 18:10 schreef papernote het volgende:
Is dit veilig? De POST data wordt dus direct in de sessie opgeslagen. Verder wordt die sessie-data weer op het scherm van de gebruiker getoont.
Je hebt gelijk, je zo zou ie zo je data die je van $_POST of $_GET moeten checken!quote:Op zondag 12 november 2006 23:26 schreef CraZaay het volgende:
[..]
Dit alleen is al niet veilig en biedt ruimte voor bijvoorbeeld XSS (Cross Site Scripting), omdat je untrusted data zonder controle teruggeeft richting de browser.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |