quote:Op maandag 27 november 2006 10:32 schreef Darkomen het volgende:
Webshop met voorraad functie gezocht.
Jongens ik moet over een tijdje een webshop opzetten voor een goede vriend van me, dit moet allemaal officeel.
Het moet dus een webshop worden met voorraad systeem zodat hij goed kan bijhouden wat er nog op voorraad is.
Ik ga dit niet zelf bouwen aangezien er genoeg goede systemen zijn, het enige wat ik zal toevoegen is een CMS gedeelte voor de rest van de site.
Dit wil ik dan wel via dezelfde login als de webshop laten werken.
Ik ben wel bezig met wat aan het bekijken bij hotscripts, maar welke zouden jullie aanraden?
http://www.in-commerce.net/index.html
395$ coupons, volgens mij alleen als module
http://digishop.sumeffect.com/index.php
mooi, netzo duur, wel reports, standalone,
http://www.ecommercetemplates.com/dreamweaverecommerce.asp
Ook mooi, allen vondt ik het niet duidelijk of het nu een systeem was of alleen templatse?![]()
http://www.oscommerce.nl/
Grappg hè?quote:Op maandag 27 november 2006 19:05 schreef papernote het volgende:
Alle topics gaan op 300 posts automatisch dicht.
Ik heb nu die code met de volgende SQL rows:quote:Op vrijdag 24 november 2006 13:48 schreef ralfie het volgende:
[..]
even ter voorbeeld:
[ code verwijderd ]
Tis echt niet zo moeilijk
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 | $result=mysql_query("SELECT dag,artist,titel,label,MONTHNAME(datum) as maand,YEAR(datum) as jaar FROM albumreleases ORDER BY datum DESC") or die(mysql_error()); $curr=array(-1,-1); while($row=mysql_fetch_assoc($result)) { if ($curr[0]!=$row['maand'] || $curr[1]!=$row['jaar']) { ?> <table width="100%"> <tr bgcolor="#222222"> <td colspan="4"><span class="gsgrey10"><b><? echo $row['maand']; ?> <? echo $row['jaar']; ?></b></span></td> </tr> <? $curr=array($row['maand'],$row['jaar']); } ?> <tr> <td><span class="gstext10"><? echo $row['dag'] ?> <? echo $row['maand']; ?></span></td> <td><span class="gstext10"><? echo $row['artist'] ?></span></td> <td><span class="gstext10"><? echo $row['titel'] ?></span></td> <td><span class="gstext10"><? echo $row['label'] ?></span></td> </tr> <tr> <td colspan="4"><img src="/img/grey_dot.gif" width="598" height="1" alt="0"></td> </tr> <? } ?> </table> |
1 2 3 | uitvoer : <input type="text" name="naam" /> |
1 2 3 4 5 6 7 8 9 | function runquery($query,$dblink) { global $myDB; $result=mysql_db_query($myDB,$query,$dblink); return $result; mysql_close($dblink); } ?> |
hmm, daar heb ik geen last van. Heb je de datums op de juiste manier ingevoerd? anders zou je ook kunnen proberen 'ORDER BY DATE(datum)' oidquote:Op maandag 27 november 2006 23:31 schreef RiderXXX het volgende:
wonderer: na alle mysql acties de verbinding sluiten, lijkt mij wel voldoende
[..]
Ik heb nu die code met de volgende SQL rows:
id, artist, titel, label, dag, maand, jaar, datum
- Maar hoe zet ik nu de datum in SQL? YYYYMMDD of time()? Of doe ik het fout?
edit: ik heb het gevonden, alleen hoe kan ik data omkeren.. ik heb nu de volgende code:
[ code verwijderd ]
Het ziet er nu zo uit:
[maand] [jaar]
[dag] [artist] [titel] [label]
[dag] [artist] [titel] [label]
Maar de [dag] is verkeerd geordend.. bij '5' en '25' komt de '25' boven te staan. Hoe kan ik dit veranderen? Als ik dit in de query doe krijg ik dat voor de hele rits met maanden..
Waarom heb je dag, maand, jaar én datum opgeslagen, als de laatste alles al bevat? Dat is niet echt handig, want je kan met PHP heel simpel de eerste 3 uit de laatste verkrijgen.quote:Op maandag 27 november 2006 23:31 schreef RiderXXX het volgende:
wonderer: na alle mysql acties de verbinding sluiten, lijkt mij wel voldoende
[..]
Ik heb nu die code met de volgende SQL rows:
id, artist, titel, label, dag, maand, jaar, datum
- Maar hoe zet ik nu de datum in SQL? YYYYMMDD of time()? Of doe ik het fout?
edit: ik heb het gevonden, alleen hoe kan ik data omkeren.. ik heb nu de volgende code:
[ code verwijderd ]
Het ziet er nu zo uit:
[maand] [jaar]
[dag] [artist] [titel] [label]
[dag] [artist] [titel] [label]
Maar de [dag] is verkeerd geordend.. bij '5' en '25' komt de '25' boven te staan. Hoe kan ik dit veranderen? Als ik dit in de query doe krijg ik dat voor de hele rits met maanden..
1 2 3 4 5 6 7 8 9 | $dir = "root/www/open_source/"; $pad = explode('/', $dir); $handle=@opendir($dir); $naam = expolde('_', $pad[3]); $test = ucfirst($naam[0]); echo "<h2>".$pad[2]."/".$test."</h2>"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | error_reporting(E_ALL); // Variabelen. // Bewerk deze $dir = "./"; // Vul tussen de " " De map in die doorzocht moet worden. $pagina_naam = "Directory index"; // Vul tussen " " De naam die de 'mappen browser' moet krijgen. $scheiding = " --> "; // Vul tussen " " het scheidings teken in dat tussen de mappen komt te staan in de navigatie. $datumform = "j/m/Y i:G:s"; // Vul tussen " " de datum in formaat volgens php syntax date(). // Einde bewerken $HTTP_GET_VARS = ( is_array($_GET) ) ? $_GET: ((is_array($HTTP_GET_VARS)) ? $HTTP_GET_VARS : array()); $hier_level = 0; $map = (isset($HTTP_GET_VARS['map'])) ? $HTTP_GET_VARS['map'] : ""; $map = (substr($map, 0, 1) != "/") ? $map : substr($map, 1); $map = (substr($map, -1) != "/") ? $map : substr($map, 0, -1); $map = str_replace("../", "", $map); $map = str_replace("//", "/", $map); $map = str_replace("///", "/", $map); $map = str_replace("////", "/", $map); $mappen = @explode("/", $map); $hier_level = count($mappen); if(count($mappen) != 0) { $page_title = $pagina_naam . ' - ' . $mappen[count($mappen) - 1]; } else { $page_title = $pagina_naam; } function trans($var) { $return = str_replace('/index.php','',$var); return $return; } echo "<html>n<head>n<title>" . $page_title . "</title>n</head>n<body style="margin: 15px; padding: 15px; font-size: 12px; font-family: verdana;">nn"; $tempmap = ""; for($i = 0; $i < $hier_level; $i++) { $tempmap .= (empty($tempmap)) ? $mappen[$i] : '/' . $mappen[$i]; $mappen[$i] = '<a href="' . trans($_SERVER['SCRIPT_NAME']) . $tempmap . '" style="font-family: verdana; font-size: 12px; color: #006699; text-decoration: none;">' . $mappen[$i] . '</a>'; } $dir_index = '<a href="index.php" style="font-family: verdana; font-size: 12px; color: #006699; text-decoration: none;">' . $pagina_naam . '</a>'; $flip = trans($_SERVER['SCRIPT_NAME']); $arr = explode('/',$flip); if (count($arr) > 1) { $string = $_SERVER['SERVER_NAME']; for ( $counter = 1; $counter < count($arr)-1; $counter ++) { $string.= '/' . $arr[$counter]; } $ex = "<a href='http://".$string."'style='font-family: verdana; font-size: 12px; color: #006699; text-decoration: none;'>Terug naar de bovenliggende directory</a><br>"; } $mappen = @implode($scheiding, $mappen); $mappen = ( $hier_level == 0 ) ? $dir_index : $dir_index . $scheiding . '<br>'. $ex . $mappen; echo $mappen . "<br /><hr /><br />nn"; unset($mappen); $mappen = array(); $files = array(); $opendir = @opendir($dir . $map); $map = (empty($map)) ? '': $map . '/'; clearstatcache(); while( false !== ( $item = readdir($opendir) )) { if($item != "." && $item !="iManager.html" && $item != "index.php") { if(is_dir($dir . $map . $item)) { $stat = stat($dir . $map . $item . "/"); $mappen[] = array( $item, '' . $map . '/' . $item, date($datumform, $stat[8]), date($datumform, $stat[10]) ); } else { $stat = stat($dir . $map . $item); $filesize = ($stat[7] > 1024) ? round($stat[7] / 1024, 3) . " Kb" : $stat[7] . " bytes"; $files[] = array( $item, $dir . $map . '/' . $item, $filesize, date($datumform, $stat[8]), date($datumform, $stat[10]) ); } } } echo " <table cellspacing="5" cellpadding="0" style="width: 100%; font-size: 12px; font-family: verdana;"> <tr> <td style="width: 55%;">Bestand:</td> <td style="width: 15%; text-align: right;">Groote:</td> <td style="width: 15%; text-align: right;">Laatst geopend:</td> <td style="width: 15%; text-align: right;">Laatst gewijzigd:</td> </tr> "; while(list(, $item) = each($mappen)) { echo " <tr> <td style="width: 55%;"><a href="" . trans($_SERVER['SCRIPT_NAME']) . $item[1] . "" style="font-family: verdana; font-size: 12px; color: #006699; text-decoration: none;">" . $item[0] . "</a></td> <td style="width: 15%; text-align: right;"> </td> <td style="width: 15%; text-align: right;">" . $item[2] . "</td> <td style="width: 15%; text-align: right;">" . $item[3] . "</td> </tr> "; } echo (count($mappen) == 0) ? "n<tr>n<td colspan="4">Geen mappen gevonden.</td>n</tr>n" : ""; echo "n<tr>n<td colspan="4"><hr /></td>n</tr>n"; while(list(, $item) = each($files)) { echo " <tr> <td style="width: 55%;"><a href="" . $item[1] . "" style="font-family: verdana; font-size: 12px; color: #006699; text-decoration: none;">" . $item[0] . "</a></td> <td style="width: 15%; text-align: right;">" . $item[2] . "</td> <td style="width: 15%; text-align: right;">" . $item[3] . "</td> <td style="width: 15%; text-align: right;">" . $item[4] . "</td> </tr> "; } echo (count($files) == 0) ? "n<tr>n<td colspan="4">Geen bestanden gevonden..</td>n</tr>n" : ""; echo "nn</body>n</html>nn"; ?> |
Fatal error: Call to undefined function: expolde()quote:Op dinsdag 28 november 2006 15:01 schreef papernote het volgende:
Welke foutmelding krijg je?
Ik zal eens ff bestuderenquote:Op dinsdag 28 november 2006 15:01 schreef ViPeRII het volgende:
Ik heb zoiets hier. Misschien dat je wat aan de code hebt.
[ code verwijderd ]
En natuurlijk kan je het zelf wel ff aanpassen zodat de eerste letter er goed uit ziet, zoals je zelf wil.
O ja, ik heb de bestande iManager.html en index.php gehide, omdat ik die niet wil zien.
Als je andere bestanden niet weer wilt geven kan dat in de regel:
if($item != "." && $item !="iManager.html" && $item != "index.php")
expoldequote:Op dinsdag 28 november 2006 15:08 schreef Qunix het volgende:
[..]
Fatal error: Call to undefined function: expolde()
[..]
Ik zal eens ff bestuderen
Zo geweldig php-en kan ik niet
Iig bedankt.
Error logging toch eens aanzetten?quote:Op dinsdag 28 november 2006 15:12 schreef Qunix het volgende:
Ik had het wel goed dus...
Ik zag hem niet
de foutmelding deed het prima hoor.quote:Op dinsdag 28 november 2006 22:40 schreef CraZaay het volgende:
[..]
Error logging toch eens aanzetten?
Nee, dag staat als INT. De query is nu als volgt:quote:Op dinsdag 28 november 2006 09:50 schreef papernote het volgende:
[..]
Waarom heb je dag, maand, jaar én datum opgeslagen, als de laatste alles al bevat? Dat is niet echt handig, want je kan met PHP heel simpel de eerste 3 uit de laatste verkrijgen.
Verder heb je waarschijnlijk de dag als een VARCHAR opgeslagen en niet als INT, waardoor de sortering fout gaat. Lexicografisch gezien komt 25 voor 5, terwijl numeriek dat andersom is.
1 |
1 2 3 4 | Danity Kane - Touching My Body (Remix) Ft. T (2:18) Danny Fernandes - Curious (Dj Rado Remix) (4:17) Darin - Move (3:42) |
Weet iemand wat '0x0011F8 ' is? Ik ben namelijk bezig met een lijst van tijdzones aan het maken. Maar in php 5.1 is dat niet mogelijk. Dit is overigens een stukje uit de source van php.quote:{ "Africa/Kinshasa" , 0x0011F8 },
{ "Africa/Lagos" , 0x001230 },
{ "Africa/Libreville" , 0x001279 },
{ "Africa/Lome" , 0x0012C2 },
{ "Africa/Luanda" , 0x0012FA },
{ "Africa/Lubumbashi" , 0x001343 },
Ik gok dat je een signed integer als unsigned integer aan het bekijken bentquote:Op vrijdag 1 december 2006 00:15 schreef wipes66 het volgende:
Weet iemand hoe ik de offset waarde moet berekenen?
Bv: "Europe/Amsterdam" = 0x025ADC
En 0x025ADC is dan 1393458
Maar wat is 1393458![]()
Ik denk niet dat je het op die manier kan/wil gebruiken zijn daar geen andere mogelijkheden voor?quote:Op vrijdag 1 december 2006 00:30 schreef wipes66 het volgende:
het komt uit de source-code (timezonedb.h). maar de vraag is, hoe maak ik er secondes van?
Ook al bevatten veel titels haakjes, je weet dat bij de laatste '(' de tijd begint. Een groter probleem is denk ik het koppelteken tussen artiest en titel, omdat er eventueel ook een artiest zou kunnen zijn met ' - ' in z'n naam ('Jay - Z' bijvoorbeeld, as je het met spaties ertussen schrijft).quote:Op donderdag 30 november 2006 01:32 schreef RiderXXX het volgende:
Nu wil ik deze met een PHP script kunnen importeren in en MySQL database. Ik wil dat de artiest in 'artiest' komt, de titel in 'titel' en de tijd in 'tijd'. Ik weet niet of het moeilijk (EN MOGELIJK) is, maar aan de ene kant lijkt het me best te doen. Hoewel er niet gekeken kan worden op haakjes, voor de tijd, aangezien veel titels ook haakjes hebben, zoals (Remix). Hoe zou ik dit het beste kunnen doen en waar begin ik?
Dan heb je geen last van vedrlopen POSTs inderdaadquote:Op zaterdag 2 december 2006 13:44 schreef SuperRembo het volgende:
Kan je dan niet beter een GET request gebruiken?
1 2 3 | $query="SELECT film_id, film_name, avg_vote FROM films ORDER BY avg_vote LIMIT BY $start, $stop" ?> |
1 2 3 4 5 6 | $query="SELECT film_id, film_name, avg_vote FROM films ORDER BY avg_vote LIMIT BY $start,$stop"; //en dan voor elke gevonden film_id ($film_id) $query="SELECT * FROM voters WHERE film_id=$film_id AND voter=$userid"; //als hier een row gevonden wordt heeft de $userid deze film al gewaardeerd ?> |
1 2 3 4 5 6 | CASE WHEN v.film_id IS NULL THEN 0 ELSE 1 END voted FROM films f LEFT OUTER JOIN voters v ON v.film_id = f.film_id AND v.voter = $userid ORDER BY avg_vote LIMIT BY $start, $stop |
1 2 3 4 5 6 7 8 9 | CASE WHEN EXISTS ( SELECT * FROM voters v WHERE v.film_id = f.film_id AND v.voter = $userid ) THEN 1 ELSE 0 END voted FROM films f ORDER BY avg_vote LIMIT BY $start, $stop |
Sessies lijkt me veiliger dan GET gebruiken zoals al gezegd wasquote:Op zaterdag 2 december 2006 12:13 schreef Xtr3mE het volgende:
klein vraagje:
ik weet niet of ik het hier goed plaats maar mijn vraag is:
Ik wil (met php het liefst als het kan) de "De webpagina is verlopen" pagina vermijden. (IE vooral)
Ik heb een zoekfunctie gemaakt om iets op te zoeken in php. Vanuit de zoekresultaten wordt er naar een andere pagina geklikt. Als ik nu terug wil gaan naar de zoekresultaten (knop terug) of een link (javascript: history.go(-1)) dan krijg ik dus die verlopen pagina.
Maar het liefst zou ik dus gelijk die pagina opnieuw laden (POST gegevens opnieuw versturen) zonder interactie met de gebruiker.
Is dit mogelijk?
Je moet je gegevens toch posten of je dat met GET of POST doet boeit niet...quote:Op zondag 3 december 2006 19:42 schreef fate het volgende:
[..]
Sessies lijkt me veiliger dan GET gebruiken zoals al gezegd was. GET kan gemanipuleerd worden en voor SQL-injection zorgen, sessies niet
. Het is wat meer werk maar 10X zo veilig.
![]()
Je gegevens moet je posten, maar dat doe je best met POST en niet met GET zoals je wel weetquote:Op zondag 3 december 2006 20:07 schreef Cageon het volgende:
[..]
Je moet je gegevens toch posten of je dat met GET of POST doet boeit niet...
Dus wat mij betreft is dat onzin.
(Al zou ik ook voor de sessies gaan hoor daar niet van...![]()
Dit met de reden dat je hier meer controle over hebt dan over wat je in GET krijgt gedurende de gebruiker zijn sessie op je site. )
Een zoekform kan toch prima met een GET? Je hebt namelijk een beperkt aantal parameters die prima in de url kunnen worden megegeven. Niet voor niet dat google en de zoekfunctie van FOK zo werkt.quote:Op zondag 3 december 2006 20:12 schreef fate het volgende:
[..]
Je gegevens moet je posten, maar dat doe je best met POST en niet met GET zoals je wel weet. Maar als je met POST werkt, zal history(-1) niet meer lukken dus moet je wel sessies gebruiken.
Je kan je gegevens ook posten met de method GET. Dan heb je dat probleem niet, zoals al eerder gemeld.quote:Op zondag 3 december 2006 20:12 schreef fate het volgende:
[..]
Je gegevens moet je posten, maar dat doe je best met POST en niet met GET zoals je wel weet. Maar als je met POST werkt, zal history(-1) niet meer lukken dus moet je wel sessies gebruiken.
gewoon IP info uit de http header halen?quote:Op maandag 4 december 2006 11:20 schreef Chandler het volgende:
Ik wil het volgende even weten.
Voor iemand moet ik een bestand hosten en deze wil hij laten downloaden door een stuk of wat gebruikers. Echter heb ik geen zin om het bestand door duizenden te laten downloaden en wil dat voorkomen door bv het IP adres van de gebruiker alleen toe te staan.
Nu is dit gemakkelijk in een script te bouwenmaar een script runt eingelijk max 30 seconden en wil ik dus iets bedenken waardoor iedereen met een juist IP adres het bestand kan downloaden.
bv. httaccess.. maar daar heb ik geen kaas van gegeten.
Hebben jullie een idee hoe ik dit probleem kan oplossen? een wachtwoord werkt niet want die kan men doorgeven...
Waarom?quote:Op maandag 4 december 2006 14:06 schreef Chandler het volgende:
Doe eens een voorbeeld van wat je bedoeld? want als het dmv php gaat moet ik het script openen zolang het downloaden nog niet voltooid is...
Dan zet je hem als BLOB in een database tabelquote:Op maandag 4 december 2006 17:09 schreef Chandler het volgende:
sorry
maaruh ik doel meer op het idee dat die header ook af te vangen is en dat je dan ook achter het bestand zelf kan komen...
oid... toch? dat wil ik tegengaan
htaccess is hier ideaal voor. Met een tooltje maak je ff een .htaccess en .htpasswd file, die zet je in de dir en je bent klaar.quote:Op maandag 4 december 2006 11:20 schreef Chandler het volgende:
bv. httaccess.. maar daar heb ik geen kaas van gegeten.
Je bestand in de database opnemen vind ik in veel gevallen redelijk ranzig, maar je kan je bestanden bijvoorbeeld wel prima buiten je publieke pad plaatsen en via download.php het bestand 'doorsturen'.quote:Op maandag 4 december 2006 17:09 schreef Chandler het volgende:
sorry
maaruh ik doel meer op het idee dat die header ook af te vangen is en dat je dan ook achter het bestand zelf kan komen...
oid... toch? dat wil ik tegengaan
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 | // VALUES FROM THE FORM $name = $_POST['name']; $email = $_POST['email']; $url = $_POST['url']; $titel = $_POST['titel']; $link = $_POST['link']; $message = $_POST['msg']; // ERROR & SECURITY CHECKS if ( ( !$email ) || ( strlen($_POST['email']) > 200 ) || ( !preg_match("#^[A-Za-z0-9](([_.-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([.-]?[a-zA-Z0-9]+)*).([A-Za-z]{2,})$#", $email) ) ) { print "Error: Invalid E-Mail Address"; exit; } if ( ( !$name ) || ( strlen($name) > 100 ) || ( preg_match("/[:=@<>]/", $name) ) ) { print "Error: Invalid Name"; exit; } if ( preg_match("#cc:#i", $message, $matches) ) { print "Error: Found Invalid Header Field"; exit; } if ( !$message ) { print "Error: No Message"; exit; } if (eregi("r",$email) || eregi("n",$email)){ print "Error: Invalid E-Mail Address"; exit; } if (FALSE) { print "Error: You cannot send to an email address on the same domain."; exit; } if ( !$titel ) { print "Error: No Titel"; exit; } if (eregi("r",$email) || eregi("n",$email)){ print "Error: Invalid E-Mail Address"; exit; } if (FALSE) { print "Error: You cannot send to an email address on the same domain."; exit; } // CREATE THE EMAIL $headers = "Content-Type: text/plain; charset=iso-8859-1n"; $headers .= "From: $name <$email>n"; $recipient = "mail@mail.nl"; $subject = "Suggestie"; $message = wordwrap($message, 1024); // SEND THE EMAIL TO YOU mail($recipient, $subject, $message, $headers); // REDIRECT TO THE THANKS PAGE header("location: http://www.site.eu"); ?> |
Waarschijnlijk ook omdat FOK! alle \ weglaat en iets als dit:quote:Op dinsdag 5 december 2006 21:42 schreef Chandler het volgende:
moet zeggen dat ik het script nogal vaag vind maar goed....
die variabelen bestaan ookquote:Op woensdag 6 december 2006 09:17 schreef Chandler het volgende:
Niet alleen dat, maar ook dat er maar automatisch vanuit gegaan wordt dat variabelen bestaan...
1 2 3 4 5 6 | $message = "Titel: ".$_POST['titel']."n n"; $message .= "Website: ".$_POST['url']."n n"; $message .= "Gelinkt op: ".$_POST['link']."n n"; $message .= "Bericht: ".$_POST['msg']."n n"; ?> |
quote:Op woensdag 6 december 2006 15:48 schreef Goldfish80 het volgende:
Ok, het is allemaal gelukt.
[ code verwijderd ]
Maar hoe krijg ik nu de titel vetgedrukt?
<b></b> dat werkt niet, want dat zie je dan in de mail staan
1 2 3 4 | $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"; ?> |
Nee, ik heb nog steeds het plan om daar eens mee te gaan stoeien, maar het is er nog niet van gekomen.quote:Op donderdag 7 december 2006 00:46 schreef JeRa het volgende:
Even een TVP. Zijn er hier eigenlijk users die hun PHP-scripts verder hebben gebracht dan het conventionele "webserver requests afhandelen" en gebruik maken van bijvoorbeeld PHP-GTK, forking, w32api, etc?
Kloptquote:Op donderdag 7 december 2006 07:44 schreef Swetsenegger het volgende:
[..]
Nee, ik heb nog steeds het plan om daar eens mee te gaan stoeien, maar het is er nog niet van gekomen.
En ik vraag me dan af wanneer ik wil gaan compilen of ik dan niet beter mezelf kan verdiepen in C# ofzo
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 | AuthName "You are not authorized to view this page" AuthType Basic authUserFile /opt/share/www/mapnaam/.htpasswd Require valid-user allow from 192.168.1 allow from 62.195.181.--- allow from 81.205.246.--- allow from 84.81.185.--- allow from 84.27.68.--- allow from 82.197.205.--- allow from 212.61.84.--- allow from 213.93.249.--- allow from 62.195.200.--- allow from 81.71.232.--- allow from 62.195.19.--- allow from 84.27.93.--- allow from 82.73.139.--- allow from 82.173.98.--- allow from 82.157.7.--- deny from all satisfy any |
Hmz, ik ben wel erg geinteresseerd moet ik je zeggen. Ik ga het eens installerenquote:Op donderdag 7 december 2006 16:21 schreef JeRa het volgende:
[..]
Kloptalhoewel tegenwoordig het verschil in snelheid tussen PHP en gecompileerde (tussen)talen als C/C++ en Java helemaal niet zo groot is en het voordeel dat je scripts snel kunt aanpassen mij erg aanspreekt. Ik ben op het moment bezig om een daemon te schrijven in PHP die luistert naar een socket, verbindingen accepteert en zichzelf forkt om de verbinding af te handelen. Maar PHP is bijvoorbeeld ook handig i.c.m. bepaalde libraries om plaatjes of PDFjes te laten genereren. Mijn backupsysteem draait er ook op, bijvoorbeeld.
Mogelijkheden zat, en sinds PHP-GTK bestaat is het ook nog eens mogelijk om een grafische interface aan te bieden. Maar op dit gebied zie ik weinig bekende applicaties verschijnen?
Oké, zou je hier misschien een voorbeeld van kunnen geven ? ik heb hier namelijk zeer weinig kaas van gegetenquote:Op vrijdag 8 december 2006 21:39 schreef fate het volgende:
Als het gaat om een beperkt aantal gebruikers met die 15 ip-adressen die je hebt opgegeven, moet je niet per sé met een database werken. Dan kan je ook in je php script zelf de 15 ip-adressen koppelen aan een naam via een array.
Als er steeds meer ip's komen, dan kan je inderdaad best met een database werken waarin je een kolom ip en een kolom naam hebt. Als de gebruiker dan op de site komt kan je in de database de record (en de naam) selecteren van de gebruiker.
quote:Op vrijdag 8 december 2006 22:51 schreef mvc het volgende:
[..]
Oké, zou je hier misschien een voorbeeld van kunnen geven ? ik heb hier namelijk zeer weinig kaas van gegeten :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | if ($_SERVER['REQUEST_METHOD']=='POST'){ $password=md5($_POST['password']); $query='SELECT * FROM user WHERE username="'.$_POST['username'].'" && pass="'.$password.'"'; $result=mysql_query($query); $row=mysql_fetch_assoc($result); if(mysql_num_rows($result) != 0){ session_start(); $_SESSION['admin_IP']=$_SERVER["REMOTE_ADDR"]; $_SESSION['admin_login']='ok'; header("Location: ingelogged.php"); }else{ header("Location: fout.php"); } } ?> |
Je zou kunnen kijken naar de Accept-* headers die veel browsers naar de webserver sturenquote:Op zaterdag 9 december 2006 17:50 schreef qu63 het volgende:
iemand enig idee hoe ik dmv php de juiste taal voor mn website kan pakken? (NL/FR/EN)
die?quote:Op zaterdag 9 december 2006 18:06 schreef JeRa het volgende:
[..]
Je zou kunnen kijken naar de Accept-* headers die veel browsers naar de webserver sturen :)
1 2 3 | echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; ?> |
1 |
Juist. Je moet dan alleen nog even goed voor ogen hebben hoe je de gebruiker een taal voorschotelt. Bijvoorbeeld zo:quote:Op zaterdag 9 december 2006 18:13 schreef qu63 het volgende:
[..]
die?
[ code verwijderd ]
output:
[ code verwijderd ]
Standaard taal is Engels, als de gebruiker Nederlands of Frans ingesteld heeft wordt het die taal, anders Engels.quote:Op zaterdag 9 december 2006 18:26 schreef JeRa het volgende:
[..]
Juist. Je moet dan alleen nog even goed voor ogen hebben hoe je de gebruiker een taal voorschotelt. Bijvoorbeeld zo:
1) Als de gebruiker een taal zelf heeft gekozen (bv. opgeslagen in cookie) dan wordt die taal gebruikt
2) Als er nl, fr of en (in die volgorde) in de Accept-Language-header voorkomt, dan wordt die taal gebruikt
3) De standaard taal (Engels?) wordt gebruikt
Zou ik niet doen, de volgorde van detecteren zoals ik die aangaf zal denk ik wel voldoen aan je wensen. In PHP dus.quote:Op zaterdag 9 december 2006 18:52 schreef qu63 het volgende:
[..]
Of kan ik dan beter via JavaScript de taal detecteren en opslaan
gaan we daar iets leuks op verzinnenquote:Op zaterdag 9 december 2006 18:55 schreef JeRa het volgende:
[..]
Zou ik niet doen, de volgorde van detecteren zoals ik die aangaf zal denk ik wel voldoen aan je wensen. In PHP dus.
hoe kan ik die Accept_Language-string nou makkelijk strippen en alleen de nodige info uit halenquote:Op zaterdag 9 december 2006 18:59 schreef qu63 het volgende:
[..]
gaan we daar iets leuks op verzinnen
Eerste tip:quote:Op zaterdag 9 december 2006 19:02 schreef qu63 het volgende:
[..]
hoe kan ik die Accept_Language-string nou makkelijk strippen en alleen de nodige info uit halen :?
1 |
ik had deze al:quote:Op zaterdag 9 december 2006 19:30 schreef JeRa het volgende:
[..]
Eerste tip:
[ code verwijderd ]
De tweede tip mag je zelf verzinnen ;)
1 2 3 | preg_match_all('/^([a-zA-Z]{2})/', $al, $matches); echo $matches[0][0]; |
explode op ";" zal ook niet gaan, want dan krijg ik "nl,en-us" terug ipv "nl"quote:Op zaterdag 9 december 2006 19:30 schreef JeRa het volgende:
[..]
Eerste tip:
[ code verwijderd ]
De tweede tip mag je zelf verzinnen
quote:Op zaterdag 9 december 2006 19:42 schreef qu63 het volgende:
[..]
explode op ";" zal ook niet gaan, want dan krijg ik "nl,en-us" terug ipv "nl"
Bron: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlquote:For example,
Accept-Language: da, en-gb;q=0.8, en;q=0.7
would mean: "I prefer Danish, but will accept British English and other types of English."
ik heb er nu dit van gemaakt:quote:Op zaterdag 9 december 2006 19:59 schreef JeRa het volgende:
[..]
[..]
Bron: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Oftewel, voor stap 2 van mijn plan zou je die string kunnen splitten op een komma, en vervolgens alle elementen aflopen en het eerste dat je kunt serveren gaat gebruiken als taal :)
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 | if (isset($_COOKIE["lang"])) { $lang = $_COOKIE["lang"]; } else { preg_match_all('/^([a-zA-Z]{2})/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); switch ($matches[0][0]) { case nl: $lang = nl; setcookie('lang', $lang, mktime(0,0,0,1,1,2008)); break; case en: $lang = en; setcookie('lang', $lang, mktime(0,0,0,1,1,2008)); break; case fr: $lang = fr; setcookie('lang', $lang, mktime(0,0,0,1,1,2008)); break; default: $lang = en; setcookie('lang', $lang, mktime(0,0,0,1,1,2008)); break; } }; ?> |
Wat nou als de eerste opgegeven taal niet op jouw site kan worden weergegeven, maar de tweede of derde wél?quote:Op zaterdag 9 december 2006 20:06 schreef qu63 het volgende:
[..]
ik heb er nu dit van gemaakt:
[ code verwijderd ]
1 2 3 4 5 6 7 | $languages = explode(',', $parts[0]); foreach ($languages as $lang) { // Loop over talen totdat je iets kunt gebruiken } |
ik laat het nu nog even zo staan, eerst moet het werken, daarna pas finetunenquote:Op zaterdag 9 december 2006 20:08 schreef Breuls het volgende:
Centraliseer je setcookie() nog even, dat scheelt code.
quote:Op zaterdag 9 december 2006 20:08 schreef JeRa het volgende:
[..]
Wat nou als de eerste opgegeven taal niet op jouw site kan worden weergegeven, maar de tweede of derde wél?
daar was ik al mee bezig jaquote:Op zaterdag 9 december 2006 20:11 schreef JeRa het volgende:
[..]
Zie mijn edit voor een simpel stukje code waarmee je het (bijna) altijd goed kunt aanpakken
Kijk eens goed naar de quote die ik aanhaal in deze postquote:Op zaterdag 9 december 2006 20:18 schreef qu63 het volgende:
[..]
daar was ik al mee bezig ja
maar dan vind ie dus "nl" maar ook "en"
dan een prio-lijstje ofzo
foreach ($languages as $lang)quote:Op zaterdag 9 december 2006 20:21 schreef JeRa het volgende:
[..]
Kijk eens goed naar de quote die ik aanhaal in deze post
Doe het met een lijstje met talen die je ondersteunt:quote:Op zaterdag 9 december 2006 21:01 schreef qu63 het volgende:
[..]
foreach ($languages as $lang)
{
if($lang == "nl"||"en"||"fr")
}
:?
1 2 3 4 5 6 7 8 9 10 11 | foreach ($languages as $lang) { $lang = substr($lang, 0, 2); if (in_array($lang, $availableLanguages)) { break; // uit de loop } } echo $lang; |
quote:Op zaterdag 9 december 2006 21:13 schreef JeRa het volgende:
[..]
Doe het met een lijstje met talen die je ondersteunt:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $parts = explode(';', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $languages = explode(',', $parts); $availableLanguages = array('en', 'fr', 'nl'); foreach ($languages as $lang) { $lang = substr($lang, 0, 2); if (in_array($lang, $availableLanguages)) { break; // uit de loop } echo $lang; } ?> |
Je hebt mijn (geëditte) code niet helemaal goed overgenomen :)quote:Op zaterdag 9 december 2006 21:23 schreef qu63 het volgende:
[..]
[ code verwijderd ]
dit geeft als output alleen maar "Ar"..
ik snap niet waar ie fout gaat
1 |
ah!quote:Op zaterdag 9 december 2006 21:33 schreef JeRa het volgende:
[..]
Je hebt mijn (geëditte) code niet helemaal goed overgenomen
[ code verwijderd ]
1 2 3 4 5 6 7 | //code zoals ik het gebruik $autojob_time=mktime($_POST['uur'] . "," . $_POST['minuut'] . ",00," . $_POST ['maand']) . "," . $_POST['dag'] . "," . $_POST['jaar']); // de $_POST variabelen worden opgeschoond, heb ik in dit voorbeeld weggelaten. ?> |
oei, blijkt mijn laatste sprankje stille hoop niet ongegrond. Ergens had ik een vermoeden dath et zoiets zou moeten zijn.quote:Op zondag 10 december 2006 12:48 schreef Breuls het volgende:
Je geeft een string door aan mktime, in plaats van losse parameters.
1 |
Mjah, daar is toch de manual voor. Daar kan naar verwezen worden, dwing je beginners ook nog eens om op php.net te kijkenquote:Op zondag 10 december 2006 13:21 schreef CraZaay het volgende:
Wellicht is het een idee om in de startpost op te nemen (het is immers voor dummies) wat de verschillende data types zijn (string, integer, etc), hoe de documentatie op php.net te lezen (bv. over parameters), het verschil tussen enkele en dubbele quotes (worden ook hier vaak onnodig/onjuist gebruikt), etc?
Ik heb ooit eens een kleine FAQ gemaakt over php, misschien ben je daar wat meequote:Op zondag 10 december 2006 13:40 schreef Breuls het volgende:
Ik zou zeggen, schrijf er een wiki-pagina over.
Mensen die met PHP beginnen en nog nooit op php.net geweest zijn moeten toch wel uberprutsers zijnquote:Op zondag 10 december 2006 13:51 schreef Swetsenegger het volgende:
[..]
Mjah, daar is toch de manual voor. Daar kan naar verwezen worden, dwing je beginners ook nog eens om op php.net te kijken
Goeie! Daar staat zo'n beetje in waar ik op doelde.quote:Op zondag 10 december 2006 14:52 schreef fate het volgende:
[..]
Ik heb ooit eens een kleine FAQ gemaakt over php, misschien ben je daar wat mee. Die staat op m'n site voor de geinteresseerden
![]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $query = "SELECT * FROM `site_menu` WHERE ParentID='".$ParentID."' ORDER BY id ASC"; $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_array($result)) { $items .= '<li>'.$row[title]; $items .= (build_menu($row[ID])) ? build_menu($row[ID]) : ''; $items .= '</li>'."n"; } return ($items) ? '<ul>'."n".$items.'</ul>'."n" : 0 ; } $menu = build_menu(0); |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $query = " SELECT * FROM bookmark_cat, bookmark_links WHERE bookmark_cat.id = bookmark_links.cat_id GROUP BY cat_id"; $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_array($result)) { echo '<h2>'. $row['cat_naam'] . '</h2>'; echo '<p>' . $row['naam'] . '</p>'; } ?> |
1 2 3 4 5 6 7 8 | link 1 CAT NAAM 1 link 2 CAT NAAM 1 link 3 |
1 2 3 4 5 6 7 8 | link 1 link 2 link 3 CAT NAAM 2 link 4 link 5 |
Je query kun je zo laten. Maar je hele probleem is toch dat je de header maar één keer wilt weergeven? Als je nou eens de header in het loopje telkens opslaat in een variabele en de header alleen weergeeft als ie niet meer overeenkomt met wat er in de variabele staat?quote:Op dinsdag 12 december 2006 11:25 schreef super-muffin het volgende:
hm ja, ik had eerst een query in een while loop. Maar dat lijkt me te server belastend. Ik dacht dat er wel een andere manier moet zijn.
Dat komt omdat je $titel éérst vult met de header en daarna controleert of het verschilt met de header. (:?)quote:Op dinsdag 12 december 2006 12:18 schreef super-muffin het volgende:
Zoals dit? :?
Dit staat in de while loop:
[ code verwijderd ]
Dan krijg ik geen headings.
1 |
1 2 3 4 5 | { $titel = $row['cat_naam']; echo '<h2>etc</h2>'; } |
Een aanroep naar unlink() is in Windows weinig meer dan een wrapper om de API-call om een bestand te verwijderen. Kennelijk vindt Windows dat de gebruiker waaronder IIS wordt uitgevoerd niet genoeg rechten heeft om het bestand te verwijderenquote:Op dinsdag 12 december 2006 15:23 schreef papernote het volgende:
Ik draai PHP 5 op Windows Server 2003 R2 met IIS 6.0. Maar ik heb een probleem met het verwijderen van bestanden. De unlink() functie wil niet werken, wegens een "permission denied".
Ik heb de IIS user Full Control gegeven over alle bestanden in de wwwroot. Ik heb zelfs Everyone Full Control gegeven over de wwwroot. Beide werkt niet.quote:Op dinsdag 12 december 2006 15:31 schreef JeRa het volgende:
[..]
Een aanroep naar unlink() is in Windows weinig meer dan een wrapper om de API-call om een bestand te verwijderen. Kennelijk vindt Windows dat de gebruiker waaronder IIS wordt uitgevoerd niet genoeg rechten heeft om het bestand te verwijderendus hoe zit het met de permissies van gebruikers op het bestand dat je wilt verwijderen?
Ben ik nou topickiller?quote:Op dinsdag 12 december 2006 17:06 schreef fokME2 het volgende:
Ben voor mijn school bezig met een filebeheer te maken. Het probleem is echter dat dit via het netwerk gaat.
Het uitlezen van de bestanden gaat perfect "//server/bla/leerlingmap", echter bij het uploaden van files gaat het fout. Dan krijg ik een "permission denied", de server kan wel mappen aanmaken?
De pc waarop de Apache server draait met PHP5 heeft alle rechten op de netwerkmap.
Heeft iemand hier ervaringen/tips/oplossingen met/voor dit probleem?
Beetje welquote:
Probeer mbv php en move_uploaded_file(), of copy() de file te verplaatsen. Dan krijg ik de errorquote:Op woensdag 13 december 2006 20:19 schreef JeRa het volgende:
Hoe upload je je bestanden? Welke functies, waar worden de tijdelijke bestanden opgeslagen, etc?
[..]
Beetje wel
Dat lees ik net op php.net. Weet iemand of je bij Apache misschien het netwerkpath zou moeten instellen? En of dat uberhaupt kan?quote:On windows I made the directory writable, by changing the Apache httpd.conf file.
The problem I had, was with the upload directory. The move_uploaded_file produced an error like: failed to open stream: Permission denied.
I changed my php.ini to specify an upload directory:
upload_tmp_dir = "d:/temp/php/uploads/"
and I added the following in the Apache hpptd.conf file:
<Directory "D:/temp/php/uploads">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
restarted Apache, and the upload succeeded.
1 2 3 4 | --------+-----------+-------- 1 | Smaak | 0 2 | Test | 1 |
1 2 3 4 5 6 7 | -----------------+----------------------+------- 1 | Smaakt uw vlees | 1 2 | Smaakt uw koffie | 1 3 | Smaakt uw groente | 1 4 | Testvraag 1 | 2 5 | Testvraag 2 | 2 |
1 2 3 4 5 6 7 8 9 10 11 | ---------------+-------+-----------+------- 1 | 1 | 2 | ip van voter 2 | 1 | 2 | 3 | 1 | 1 | 4 | 1 | 1 | 5 | 1 | 1 | 6 | 1 | 2 | 7 | 2 | 1 | 1 | 2 | 1 | 1 | 2 | 2 | |
1 2 3 | SELECT Question, COUNT(Question) as vote FROM Poll_Answers WHERE Poll=".$poll." GROUP BY Question ?> |
1 2 3 | SELECT q.Question, COUNT(a.Question) as vote FROM Poll_Questions q JOIN Poll_Answers a ON (q.Poll=a.Poll) WHERE a.Poll=".$poll." GROUP BY a.Question ?> |
PHP draait als apart proces met de rechten van de gebruiker van de webserver, dus daar hoef je niet voor in httpd.conf te zijn. Lukt het je wel om de bestanden in een lokale map (op de eigen harde schijf) op te slaan?quote:Op woensdag 13 december 2006 21:01 schreef fokME2 het volgende:
[..]
Dat lees ik net op php.net. Weet iemand of je bij Apache misschien het netwerkpath zou moeten instellen? En of dat uberhaupt kan?![]()
Ik kom er vanavond even op terug, ik zit voornamelijk nog met hoe ik een count van rijen kan koppelen aan 1 vraag uit de andere tabel in m'n query. Je performance verhaal lees ik even als ik niet meer op mijn werk zit. Het database model kan nu nog volledig op de schopquote:Op donderdag 14 december 2006 08:38 schreef JeRa het volgende:
@Swetsenegger
Een normale LEFT JOIN (== LEFT OUTER JOIN) zou afdoende moeten zijn. Je hebt gelijk dat er geen relatie hoeft te bestaan, dus pak je de tabel met de rijen die je wilt hebben (de questions) en join je daar hetgene op waar je informatie over wilt hebben (de answers). Let wel op dat je formeel een NULL-waarde krijgt van MySQL in het geval dat er geen rijen gevonden zijn bij een bepaalde question.
Verder een tip voor Poll_Answers; als je Poll_Answer_Id dropt en een PRIMARY KEY op de kolommen (IP, Poll) legt dan zorg je ervoor dat er in MySQL een restrictie komt: elk IP-adres kan maar één keer op één bepaalde poll stemmen.
En over het algemeen zal deze opzet niet de snelste qua performance zijn; MySQL is niet zo geweldig met GROUP BY's (zelfs niet als je de juiste indices aanlegt). Persoonlijk zou ik een aparte tabel hebben gemaakt met de scores per antwoord op een poll zodat je die simpel kunt incrementen bij een stem. Je Poll_Answers-tabel kun je dan zo versimpelen Dat je 'IP' en 'Poll' overhoudt (inclusief de eerder genoemde PRIMARY KEY natuurlijk).
Dan ben je erg beperkt met vertalenquote:Op donderdag 14 december 2006 10:48 schreef ViPeRII het volgende:
Lol dat is nooit een class. Dat is een lijst met woorden die vertaalt worden.
Nope. Lijkt me ook raar nu de paar beste (en zelfs dan nog matige) oplossingen commerciëel zijnquote:Op donderdag 14 december 2006 10:45 schreef wipes66 het volgende:
Kent iemand toevallig een class die tekst kan vertalen naar duits en engels?
Dit kan vrij simpel omdat je telkens maar één poll opvraagt. Je koppelt de stemmen aan de vragen:quote:Op donderdag 14 december 2006 11:05 schreef Swetsenegger het volgende:
[..]
Ik kom er vanavond even op terug, ik zit voornamelijk nog met hoe ik een count van rijen kan koppelen aan 1 vraag uit de andere tabel in m'n query.
1 |
1 |
Een PRIMARY KEY is niets anders dan een UNIQUE INDEX met een extra tagje zodat je bij natural joins niet hoeft aan te geven hoe je tabellen koppelt. Een INDEX kun je gewoon over meerdere kolommen leggen, dat heb ik een tijd geleden in deze topicreeks redelijk uitgebreid besproken. UNIQUE zorgt ervoor dat je altijd unieke combinaties van die kolommen moet hebben. In het geval van de combinatie IP,PollID is dat dus een unieke combinatie van IP-adres en Poll-ID voor een stemquote:-edit- oeh, je primary key tip voor de poll answers tabel is wel een goeie. Ik wist niet eens dat je twee kolommen in 1 tabel primary key kan maken?
Je hebt in je huidige opzet een hoop redundante informatie, aangezien je geen informatie aan een stem koppelt (het is een primitieve, een integer 1 waarvan je het totaal wilt weten). Dan is zo'n aparte tabel een erg goed idee aangezien je er zo ook voor zorgt dat MySQL na een tijdje zich niet verslikt in de GROUP BY (en je hoeft iets minder rekening te houden met de juiste indices).quote:-edit2-
Hmz, een aparte score tabel incrementen is ook wel aardig idee
Ik zou eerder denken aan een soort van webservice die je kunt aanroepen met SOAP of iets dergelijks. Volgens mij bestaan er wel dergelijke vertaalwebservices.quote:Op donderdag 14 december 2006 10:45 schreef wipes66 het volgende:
Kent iemand toevallig een class die tekst kan vertalen naar duits en engels?
Google met de magische keywords: "sql countries"quote:Op donderdag 14 december 2006 12:31 schreef super-muffin het volgende:
Vraagje: kun je ook ergens een soort van voorbeeld database downloaden met bv alle landen, of een aantal namen er in?
Die heb ik namelijk nodig voor een testje, maar heb geen zin om zelf al die informatie bij elkaar te zoeken.
quote:Op donderdag 14 december 2006 11:31 schreef JeRa het volgende:
[..]
Dit kan vrij simpel omdat je telkens maar één poll opvraagt. Je koppelt de stemmen aan de vragen:
[ code verwijderd ]
Door nu te GROUP BY'en op de vragen zorg je ervoor dat je het aantal stemmen per vraag kunt tellen:
[ code verwijderd ]
COUNT() is dan dus een aggregate function die werkt op alle rijen in de tabel 'stemmen' die gekoppeld zijn aan een bepaalde vraag. Maar dit is natuurlijk niet meer relevant als je dat idee gebruikt van een aparte tabel met scores.
1 |
Ik zie geen fout in de syntax?quote:You have an error in you SQL syntax ... ~ ... syntax to use near 'GROUP BY q.Question' at line 1
1 |
Hier ga ik ook mee aan de slagquote:Een PRIMARY KEY is niets anders dan een UNIQUE INDEX met een extra tagje zodat je bij natural joins niet hoeft aan te geven hoe je tabellen koppelt. Een INDEX kun je gewoon over meerdere kolommen leggen, dat heb ik een tijd geleden in deze topicreeks redelijk uitgebreid besproken. UNIQUE zorgt ervoor dat je altijd unieke combinaties van die kolommen moet hebben. In het geval van de combinatie IP,PollID is dat dus een unieke combinatie van IP-adres en Poll-ID voor een stem
[..]
Je hebt in je huidige opzet een hoop redundante informatie, aangezien je geen informatie aan een stem koppelt (het is een primitieve, een integer 1 waarvan je het totaal wilt weten). Dan is zo'n aparte tabel een erg goed idee aangezien je er zo ook voor zorgt dat MySQL na een tijdje zich niet verslikt in de GROUP BY (en je hoeft iets minder rekening te houden met de juiste indices).
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |