Rly?! Kan je do volgorde ook beinvloeden? En hoe weet je welke volgorde het beste is? Hoe moet je zo'n explain lezen?quote:Op zaterdag 17 december 2011 20:29 schreef GlowMouse het volgende:
De output van EXPLAIN zal verschillen (tabelvolgorde). De beste volgorde hangt van je data af.
Ik kan gewoon bij die pagina dan hoor.quote:Op zaterdag 17 december 2011 22:08 schreef totalvamp het volgende:
probeer eens een profiel te bekijken op fok zonder je in te loggen.. dan heb je het antwoord.
Nou mijn idee was dat mijn scriptje je een random string geeft die je dan in je sig zet. Zo kan mijn script checken of je de goede persoon bent.quote:
of je doet iets fout in je code of FoK is beveiligd ertegen. Je kunt dan altijd inloggen proberen met je eigen username.quote:Op zaterdag 17 december 2011 22:10 schreef -Datdus- het volgende:
[..]
Ik kan gewoon bij die pagina dan hoor.
Waarom zijn die pagina's dan openbaar als fok! het daar niet mee eens is? Tevens worden de gegevens niet opgeslagen maar alleen gebruikt als check. Zodra het licht groen is moet je je Minecraft naam invullen en dan kan je spelen.quote:Op zaterdag 17 december 2011 22:14 schreef GlowMouse het volgende:
De check is niet goed: je kunt altijd iemand bewegen iets in zijn sig te zetten. Daarnaast denk ik niet dat FOK! het goed vindt wanneer jij een database van FOK!kers aanlegt.
Dat iets openbaar is wil niet zeggen dat het publiek domein is.quote:Op zaterdag 17 december 2011 22:26 schreef -Datdus- het volgende:
Waarom zijn die pagina's dan openbaar als fok! het daar niet mee eens is?
Waarom zou je FOK! sigs misbruiken voor je eigen checks en waarom zouden wij dat moeten goedvinden?quote:Tevens worden de gegevens niet opgeslagen maar alleen gebruikt als check. Zodra het licht groen is moet je je Minecraft naam invullen en dan kan je spelen.
Dan doe ik het niet, ook goed. En misbruiken is wel erg overdreven. Gebruikers kiezen er zelf voor omdat te doen.quote:Op zaterdag 17 december 2011 22:44 schreef Danny het volgende:
[..]
Dat iets openbaar is wil niet zeggen dat het publiek domein is.
[..]
Waarom zou je FOK! sigs misbruiken voor je eigen checks en waarom zouden wij dat moeten goedvinden?
De sigs hebben een doel op FOK!. Je kunt er iets van jezelf in kwijt. Het is natuurlijk niet de bedoeling dat anderen jouw je sig laten gebruiken om verificatiedoeleinden oid. En als het daadwerkelijk een keuze is; hoe zit het dan met mensen die kiezen de code NIET in hun sig te plaatsen? Want als het werkelijk een keuze is zou dat voor jou niets uit moeten maken.quote:Op zaterdag 17 december 2011 23:01 schreef -Datdus- het volgende:
[..]
Dan doe niet, ook goed. En misbruiken is wel erg overdreven. Gebruikers kiezen er zelf voor omdat te doen.
Dat zou geen probleem zijn. Het idee was bedoeld om nieuwe mensen sneller rechten te geven op de server. Nu moeten ze wachten tot er een admin online is etc en dat is ook prima hoor.quote:Op zaterdag 17 december 2011 23:04 schreef Danny het volgende:
[..]
De sigs hebben een doel op FOK!. Je kunt er iets van jezelf in kwijt. Het is natuurlijk niet de bedoeling dat anderen jouw je sig laten gebruiken om verificatiedoeleinden oid. En als het daadwerkelijk een keuze is; hoe zit het dan met mensen die kiezen de code NIET in hun sig te plaatsen? Want als het werkelijk een keuze is zou dat voor jou niets uit moeten maken.
geef ze een sessie die niet aan een gebruiker is gekoppeld, of sla nog niks in een database op (maar in $_SESSION).quote:Op zaterdag 17 december 2011 23:10 schreef Crimyclown het volgende:
Ik heb nu een database waarin een paar ingevoerde getallen worden opgeslagen en hiervoor een id aangemaakt wordt. Maar hoe kan ik deze gegevens aan een gebruiker/sessie linken zonder dat deze is aangemeld. Zodat deze gegevens in een later venster kunnen worden weergeven.
Nu kan ik alleen op de vervolg pagina gegevens ophalen omdat ik van te voren niet weet onder welk id het opgeslagen wordt.
Dank, het werkt.quote:Op zaterdag 17 december 2011 23:57 schreef GlowMouse het volgende:
[..]
geef ze een sessie die niet aan een gebruiker is gekoppeld, of sla nog niks in een database op (maar in $_SESSION).
1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE Accounts ( AccountID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (AccountID), FirstName varchar(20), LastName varchar(20) ) |
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 | CREATE TABLE Accounts ( AccountID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (AccountID), FirstName varchar(20), LastName varchar(20) ) CREATE TABLE Relatives ( RelativeID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (RelativeID), FirstName varchar(20), LastName varchar(20), AccountID int, FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID) ) CREATE TABLE Constructs ( ConstructID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (ConstructID), String varchar(255), AccountID int, FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID) ) CREATE TABLE Answers ( AnswerID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (AnswerID), String varchar(255), ConstructID int, FOREIGN KEY (ConstructID) REFERENCES Constructs (ConstructID) ) |
Niks, er zit geen error in blijkbaar. Echt heel raar...quote:
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 | <?php $server = '127.0.01'; $username = 'root'; $password = 'root'; $database = 'properdb'; $con = mysql_connect("localhost", $username, $password) or die('Kan niet verbinden met de server: ' . mysql_error()); // Create tables mysql_select_db($database, $con); $sql = " CREATE TABLE Accounts ( AccountID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (AccountID), FirstName varchar(20), LastName varchar(20) ) CREATE TABLE Relatives ( RelativeID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (RelativeID), FirstName varchar(20), LastName varchar(20), AccountID int, FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID) ) CREATE TABLE Constructs ( ConstructID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (ConstructID), String varchar(255), AccountID int, FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID) ) CREATE TABLE Answers ( AnswerID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (AnswerID), String varchar(255), ConstructID int, FOREIGN KEY (ConstructID) REFERENCES Constructs (ConstructID) ) "; // Execute query mysql_query($sql,$con); mysql_close($con); ?> |
Maar als ik dan dit leesvraag ik me af of ik wel de juiste resultaten terug krijg?quote:SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 10
je vergeet puntkomma's tussen queries, en je vergeet dat mysql_query maar één query uit kan voerenquote:Op zondag 18 december 2011 15:39 schreef VuilnisMetaal het volgende:
[..]
Niks, er zit geen error in blijkbaar. Echt heel raar...
Hier is het volledige PHP-script btw:
[ code verwijderd ]
dan moet je het nog een keer lezenquote:Op zondag 18 december 2011 15:46 schreef Swetsenegger het volgende:
Nu heb ik deze prachtige query om de top 10 verkochte producten van het afgelopen jaar uit mijn DB te trekken:
[..]
Maar als ik dan dit leesvraag ik me af of ik wel de juiste resultaten terug krijg?
Juist! Het werkt nu helemaal! Dankjewelquote:Op zondag 18 december 2011 15:55 schreef GlowMouse het volgende:
[..]
je vergeet puntkomma's tussen queries, en je vergeet dat mysql_query maar één query uit kan voeren
[..]
dan moet je het nog een keer lezen
Het stukje waaruit je opmaakte dat je wellicht niet de juiste resultaten terugkrijgt, heb je niet begrepen.quote:
Er staat dat je in je group by all niet aggregate kolommen zou moeten opnemen. Dat heb ik in bovenstaande query toch niet? Of zie ik wat over het hoofd?quote:Op zondag 18 december 2011 16:58 schreef GlowMouse het volgende:
[..]
Het stukje waaruit je opmaakte dat je wellicht niet de juiste resultaten terugkrijgt, heb je niet begrepen.
Das mooiquote:Op zondag 18 december 2011 17:10 schreef GlowMouse het volgende:
eigenlijk niet (een andere db-server keurt je query af), maar van de oorzaak waardoor in hun voorbeeld verkeerde rijen worden teruggegeven heb jij geen last
Moet je wel weten waar je op moet googlen. Gelezen en duidelijk.quote:Op zondag 18 december 2011 17:31 schreef GlowMouse het volgende:
Dummy betekent niet dat je niet hoeft te googlen. http://dev.mysql.com/doc/(...)-hidden-columns.html
1 | return(preg_match('^[0-9]{$min,$max}^', $string))? 1 : 0; |
1 | return(preg_match('^[0-9]{0,10}^', $string))? 1 : 0; |
1 | return(preg_match('^[0-9]{'.$min.','.$max.'}^', $string))? 1 : 0; |
Je hebt gelijk, bedankt!quote:Op dinsdag 20 december 2011 21:24 schreef GlowMouse het volgende:
Die laatste werkt weldegelijk. Je kunt ook gewoon preg_match returnen, die ? 1 : 0 is eigenlijk onlogisch.
1 2 3 | <?php $factuur["levPostalcode"] = preg_replace("/[^0-9\s]/", "", $factuur["levPostalcode"]); ?> |
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 | <?php /* Een autokenteken bestaat altijd uit 8 tekens (XX-XX-XX). Ieder teken is een letter, een cijfer of een ‘-‘-teken. Een letter staat altijd naast een andere letter of naast een ‘-‘-teken. Een cijfer staat altijd naast een ander cijfer of naast een ‘-‘-teken. */ function kenteken($string){ //maakt de functie aan die als parameter de string accepteert $length = strlen($string); //bekijkt de lengte van de string $letters = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //array met alle letters $cijfers = array('1','2','3','4','5','6','7','8','9','0'); //array met alle cijfers $which=0; //$which zal later in de loop aangeven in welke categorie het vorige teken viel, 1 = letter, 2 = cijfer, 3 = '-' if($length != 8){ //als de lengte van de string niet gelijk is aan acht wordt aan de eerste voorwaarde al niet voldaan en 'false' gereturned return false; } elseif($string[3]!='-' and $string[5]!='-' ){ //kijkt of op de 3e en 6e plek wel het '-' teken staat return false; } else { for($index = 0; $index < $length; $index++){ //loop om door de stringposities heen te lopen if(in_array(strtoupper($string[$index]),$letters)){ //als aan deze conditie wordt voldaan, dan is het huidige teken een letter if($which != 2){ //als het vorige teken geen cijfer was (dus een 0, een 1 of een 3) wordt $which op 1 gezet $which=1; } else{ //het huidige teken is een letter, terwijl de voorgaande een cijfer was, wat niet is toegestaan return false; } } elseif(in_array($string[$index],$letters)){ //als aan deze conditie wordt voldaan, dan is het huidige teken een cijfer if($which != 1){ //als het vorige teken geen letter was (dus een 0, een 2 of een 3) wordt $which op 2 gezet $which=2; } else{ //het huidige teken is een cijfer, terwijl de voorgaande een letter was, wat niet is toegestaan return false; } } elseif($string[$index]== '-'){ //als aan deze conditie wordt voldaan, dan is het huidige teken een '-' if ($index=2 or $index=5){ //het '-' teken mag alleen op posities 3 en 6 voorkomen $which=3; //$which wordt enkel op 3 gezet wanneer het '-' teken op de juiste positie staat } else{ return false; } } else{ //het huidige teken valt in geen van de toegestane condities, dus een false wordt gereturned return false; } } return true; //als de loop is doorlopen en niet is afgebroken doordat niet aan een van de eisen is voldaan, kan true worden gereturned } } $kent1="ABCDEFGHI"; $kent2="a3-za-aa"; $kent3="ac-44-@r"; $kent4="ac-pz-44"; $kent5="jhgddest"; $kent6="12345678"; if(kenteken($kent1)){ echo "$kent1 is een kenteken.<br>"; } else { echo "$kent1 is geen kenteken.<br>"; } if(kenteken($kent2)){ echo "$kent2 is een kenteken.<br>"; } else { echo "$kent2 is geen kenteken.<br>"; } if(kenteken($kent3)){ echo "$kent3 is een kenteken.<br>"; } else { echo "$kent3 is geen kenteken.<br>"; } if(kenteken($kent4)){ echo "$kent4 is een kenteken.<br>"; } else { echo "$kent4 is geen kenteken.<br>"; } if(kenteken($kent5)){ echo "$kent5 is een kenteken.<br>"; } else { echo "$kent5 is geen kenteken.<br>"; } if(kenteken($kent6)){ echo "$kent6 is een kenteken.<br>"; } else { echo "$kent6 is geen kenteken.<br>"; } ?> |
if ($index=2 or $index=5){quote:Op woensdag 21 december 2011 12:45 schreef uppie83 het volgende:
Ik heb een stuk code dat controleert of een string aan een aantal eisen voor een kenteken voldoet. Gek genoeg levert de enige juiste string een 'maximum execution time exceeded' op (bij $kent4). Ik zie niet wat het probleem is. Iemand een idee?
[ code verwijderd ]
Bedankt Dat was idd de truc.quote:Op woensdag 21 december 2011 12:52 schreef mstx het volgende:
[..]
if ($index=2 or $index=5){
Ik zou daar == gebruiken.
Als hij 1x bij die regel komt zet hij hem elke keer weer op 2 waardoor hij oneindig door blijft gaan.
Ook bedankt, dat loste inderdaad het laatste probleem nog op. Klopt dat ik niets met nieuwe kentekens doe, maar dat was niet de opdracht Regex ken ik niet... De docent gaf als tip om modulo te gebruiken, maar die begreep ik dan weer nietquote:Op woensdag 21 december 2011 12:57 schreef GlowMouse het volgende:
Op regel 30 moet je $cijfers gebruiken. En je doet nu niks met nieuwe kentekens met een groepje van 3 letters; wat je nu hebt kan ook met een regex.
Heb jij oogjes gekregen van onze goede Heer?quote:Op woensdag 21 december 2011 13:38 schreef Sitethief het volgende:
Wat doet jouw systeem met de volgende kentekens:
00-BBB-1
1-VBB-01
DB-001-B
D-001-BB
Die zijn namelijk ook gewoon geldig...
Geen idee, maar volgens mij zou ik dat oplossen door de condities rondom het '-' teken wat te versoepelen.quote:Op woensdag 21 december 2011 15:00 schreef Sitethief het volgende:
Je hebt gelijk, ik hoop dat ie niet straks alsnog dat kan inbouwen
En waar staat wat voor load ik heb?quote:Op woensdag 21 december 2011 16:15 schreef Scorpie het volgende:
Zo`n hoge load is ongezond. Beter ga je structureel bekijken waarom de load zo hoog is.
quote:Op woensdag 21 december 2011 16:16 schreef Scorpie het volgende:
Daarnaast snap ik de scheiding niet zo goed.
+Dat een verbinding naar een andere server niet zo optimaal is.quote:Op woensdag 21 december 2011 16:05 schreef Pizzalucht het volgende:
We willen gewoon niet afhankelijk zijn van de webserver, dat als deze eruit ligt mensen nog gewoon in kunnen loggen op het spel.
Dat wil je dus niet. Je wilt blijkbaar niet afhankelijk zijn van je webserver.quote:Op woensdag 21 december 2011 16:00 schreef Pizzalucht het volgende:
Het gaat erom dat we de login gegevens van phpbb gebruiken voor het inloggen op een ander systeem(spel). Nu maken we nog verbinding naar de externe server(de webserver), daar willen we vanaf omdat die voor steeds meer load op die server zorgt en we niet afhankelijk van de webserver willen zijn.
Nee, die gameserver heeft geen webserver?quote:Op woensdag 21 december 2011 16:18 schreef Scorpie het volgende:
Dus je hebt straks een gameserver waarop een webserver draait die je los wilt koppelen van je primaire webserver waar het forum e.d. op draait?
quote:Op woensdag 21 december 2011 16:16 schreef Pizzalucht het volgende:
Weet je, laat maar weer lekker zitten Gloeimuisje, je bent weer lekker behulpzaam.
Niemand heeft ervaring, want het is heel onstabiel Grote bedrijven gebruiken MySQL, wat denk je zelf dat het stabiel isquote:Ik vraag alleen of mensen ervaring hebben met een master/slave en of het stabiel is.
Inderdaad, mensen loggen in met hun forum account.quote:Op woensdag 21 december 2011 16:24 schreef Scorpie het volgende:
Maar je primaire login gegevens staan op de webserver?
Ik heb het over master/slave, niet over MySQL zelf...quote:Op woensdag 21 december 2011 16:24 schreef GlowMouse het volgende:
[..]
Niemand heeft ervaring, want het is heel onstabiel Grote bedrijven gebruiken MySQL, wat denk je zelf dat het stabiel is
Daar zou ik dan sowieso vanaf willen stappen. Maak een apart login systeem voor je game. Scheelt je een hoop gezeik.quote:Op woensdag 21 december 2011 16:25 schreef Pizzalucht het volgende:
[..]
Inderdaad, mensen loggen in met hun forum account.
Waarom? Waarom zouden mensen 2 verschillende accounts willen hebben?quote:Op woensdag 21 december 2011 16:28 schreef Scorpie het volgende:
[..]
Daar zou ik dan sowieso vanaf willen stappen. Maak een apart login systeem voor je game. Scheelt je een hoop gezeik.
Je denkt teveel vanuit de gebruiker en te weinig vanuit de techniek.quote:Op woensdag 21 december 2011 16:29 schreef Pizzalucht het volgende:
[..]
Waarom? Waarom zouden mensen 2 verschillende accounts willen hebben?
1 2 3 | <?php Warning: chmod() [function.chmod]: Unable to access /thumbs/klein_ in /xxx/blabla/domains/blabla.nl/public_html/includes/fotos.php on line 78 ?> |
1 2 3 | <?php chmod($map . '/thumbs/' . $type . '_' . $bestandsnaam, 0777); ?> |
nopequote:
1 2 3 | <?php $map = 'fotoalbum'; ?> |
Waarom zoekt het script dan naar "/thumbs/klein_" ? Voor zover ik kan zien betekent dat dat zowel $map als $bestandsnaam leeg zijn, anders stond er wel "fotoalbum/thumbs/klein_bestandsnaam.ext".quote:Op woensdag 21 december 2011 21:35 schreef MrNiles het volgende:
[..]
nope
bovenaan in script
[ code verwijderd ]
in fotoalbum staat mijn foto's + thumbs
deze zie ik ook op scherm
kan het iets te maken hebben met schrijfrechten?
kan zijn...vreemdquote:Op woensdag 21 december 2011 21:57 schreef mstx het volgende:
[..]
Waarom zoekt het script dan naar "/thumbs/klein_" ? Voor zover ik kan zien betekent dat dat zowel $map als $bestandsnaam leeg zijn, anders stond er wel "fotoalbum/thumbs/klein_bestandsnaam.ext".
1 2 3 | <?php list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map . '/' . $bestandsnaam); ?> |
var_dump die bende dan en loop stap voor stap na en kijk wat de variabelen voor waarde hebben en of dit klopt met wat de bedoeling is. Beetje debuggen is toch niet zo complex iets.quote:Op woensdag 21 december 2011 22:10 schreef MrNiles het volgende:
[..]
kan zijn...vreemd
krijg ook de melding
Warning: Division by zero
de waarde die nul zou zijn is $breedte_origineel
die gehaalt wordt uit
[ code verwijderd ]
tja..ik zie m echt niet..nog ff kijken en anders morgen weer een dag
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Dingen met een * heb ik voor hier even leeggelaten, staat wel ingevuld.
Wat moet ik doen? Ik ben namelijk niet zo'n PHP-held, en heb dit gekopiëerd uit een bestand dat ik van m'n leraar heb gekregen.
Alvast bedankt!
1 | $query .= $_POST["cijfer"] . "', '"; |
1 | $query .= $_POST["cijfer"] . "')"; |
1 2 3 4 5 6 7 8 | <?php $server = "mysql4.000webhost.com"; $user = "a1320523_mvdvr"; $wachtwoord = "*"; $database = "a1320523_MVDVR"; $query = ""; $bedankt = "bevestiging_toevoegen.php"; // adres van de bedank-pagina. ?> |
1 | $query .= $_POST["cijfer"] . "')"; |
Lijkt me goed ingevuld. heb je nog ergens problemen? of een foutmelding?quote:Op woensdag 21 december 2011 23:28 schreef MXD het volgende:
Lost niks op.
Heb ik alles wel goed ingevuld?
deze gegevens heb ik van mijn host gekregen:
$mysql_host = "mysql4.000webhost.com";
$mysql_database = "a1320523_MVDVR";
$mysql_user = "a1320523_mvdvr";
$mysql_password = "*";
mijn tabel in de database heet contact
[ code verwijderd ]
is dit dan goed ingevuld?
* is overigens weer vervangen
http://dev.mysql.com/doc/(...)-auto-increment.htmlquote:Op woensdag 21 december 2011 23:45 schreef MXD het volgende:
Nee toch niet.
Ik heb 1x mijn gegevens ingevoerd en die staan nu in de database. Echter, als ik dit nog eens doe (met andere gegevens) krijg ik dit: Er is een fout opgetreden met foutnummer 1062 : Duplicate entry '0' for key 'PRIMARY'
Ik snapt dat het ID dan niet veranderd wordt en er van elk ID maar 1 mag zijn, maar hoe los ik dit op?
ik gebruik meestal zo'n soort functie daarvoor .quote:
1 2 3 4 5 | <?php function esc($str){ return mysql_real_escape_string($str); } ?> |
Ja of PDO. Of een eigen database wrapper. Maakt niet echt uit, als je het maar doet.quote:Op donderdag 22 december 2011 00:17 schreef cablegunmaster het volgende:
[..]
ik gebruik meestal zo'n soort functie daarvoor .
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | echo " <a name='Aantallen_te_Matchen_Orders'></a> <b>Aantallen te Matchen Orders</b> Status van ".$datumvandaag." tijdstip ".$tijdnu." <a href='#Top'>Top</a> </div> <br> <table style='text-align: left; width: 644px;' border='1' cellspacing='2' cellpadding='2'> <tbody> <tr> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>Plangroep<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>Totaal<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap1<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap2<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap3<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap4<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap5<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap6<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap7<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap8<br></td> <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap9<br></td> </tr> <tr> <td style='vertical-align: top; text-align: center;'>Aantal<br></td> "; AantalTeMatchen('lijst'); echo " </tr> </tbody> </table> <br> "; |
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 | ar quote=new Array(); quote[0]='This is quote number one'; /* add as many quotes as you like!*/ quote[1]='This is quote number two'; quote[2]='This is quote number three'; quote[3]='This is quote number four'; quote[4]='This is quote number five'; quote[5]='This is quote number six'; quote[6]='This is quote number seven'; quote[7]='This is quote number eight'; quote[8]='This is quote number nine'; quote[9]='This is quote number ten'; var speed=2000; /*this is the time in milliseconds adjust to suit*/ var q=0; function showQuote() { document.getElementById("quotes").innerHTML=quote[q]; q++; if(q==quote.length) { q=0; } } setInterval('showQuote()',speed); //]]> </script> |
Er is al 49 dagen niet in dit topic gepost. Bedenk je of het zinvol is dit topic omhoog te schoppen. Klik hier om tóch te reageren.quote:Op donderdag 22 december 2011 08:57 schreef Swetsenegger het volgende:
[Javascript] voor dummies (deel 12)
[html, css, js] voor dummies #20 is meer actuelerquote:Op donderdag 22 december 2011 08:59 schreef Cue_ het volgende:
[..]
Er is al 49 dagen niet in dit topic gepost. Bedenk je of het zinvol is dit topic omhoog te schoppen. Klik hier om tóch te reageren.
Geen wonder dat ik hem niet kon vinden. Tnx
Door het veld ID niet op te nemen in je query. Hoef je er ook zelf geen waarde voor te verzinnen.quote:Op woensdag 21 december 2011 23:45 schreef MXD het volgende:
Nee toch niet.
Ik heb 1x mijn gegevens ingevoerd en die staan nu in de database. Echter, als ik dit nog eens doe (met andere gegevens) krijg ik dit: Er is een fout opgetreden met foutnummer 1062 : Duplicate entry '0' for key 'PRIMARY'
Ik snapt dat het ID dan niet veranderd wordt en er van elk ID maar 1 mag zijn, maar hoe los ik dit op?
Huisnummer weglaten uit het adres is lastig. Je hebt namelijk ook straten met een nummer in de straatnaam. En je hebt te maken met huisnummers met toevoeging, waarbij die toevoeging uit letters en/of cijfers en/of spaties kan bestaan.quote:Op woensdag 21 december 2011 08:01 schreef GI het volgende:
Zit hier toevallig een regexp expert die mij een alleen alfanumerieke characters regexp kan vertellen ?
Ik heb nu bijvoorbeeld :
[ code verwijderd ]
om de cijfers uit een postcode te plukken. Maar ik wil nu een vergelijkbare hebben die het huisnummer weglaat uit een adres.
Nou kan ik wel valsspelen en de code die ik heb te gebruiken en die daarna uit het adres te replacen met "" maar das net weer niet netjes genoeg
Een deel kun je al opvangen door de string na de laatste spatie als huisnummer te beschouwen.quote:Op donderdag 22 december 2011 23:01 schreef Light het volgende:
[..]
Huisnummer weglaten uit het adres is lastig. Je hebt namelijk ook straten met een nummer in de straatnaam. En je hebt te maken met huisnummers met toevoeging, waarbij die toevoeging uit letters en/of cijfers en/of spaties kan bestaan.
Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?quote:Op donderdag 22 december 2011 23:09 schreef The_Terminator het volgende:
[..]
Een deel kun je al opvangen door de string na de laatste spatie als huisnummer te beschouwen.
Maak er de laatste numerieke string van danquote:Op donderdag 22 december 2011 23:14 schreef Light het volgende:
[..]
Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?
Daarom zeg ik ook 'een deel', ik zeg niet dat mijn methode perfect is natuurlijk.quote:Op donderdag 22 december 2011 23:14 schreef Light het volgende:
[..]
Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?
Ik heb er nu zoiets van gemaakt:quote:Op vrijdag 23 december 2011 11:57 schreef Apekoek het volgende:
Goed, ik heb deskundige hulp nodig, dat lijkt hier wel snor te zitten .
Ik heb namelijk een plugin in Wordpress die nog niet precies doet wat ik wil. Namelijk de "Contact form 7 to database extension". Graag wil ik de uploads die via het normale contact form zijn voltooid, downloadbaar worden in een post of op een pagina aan de voorkant. Echter zit ik hier met een PHP achtige generator die niet doet wat ik wil, of beter gezegd, welke code ik ook maak, ik kom er simpel weg niet uit. Ik zou namelijk erg graag het e-mail adres met de upload ergens in een post willen tonen.
Wat moet ik hier mee als jullie dit zo zien?
[ afbeelding ]
1 2 3 4 5 6 7 | [cfdb-html form="Test formulier" show="your-name,Upload" limit="10" orderby="Submitted desc" filelinks="link"] <div class="your-headline-style">${your-name}</div> <div class="download-link">${Upload}</div> [/cfdb-html] |
1 2 3 | <?php session_start(); ?> |
1 2 3 4 5 6 | <form action="scripts/hoi.php" method="post"><table border="0"> <?php $_SESSION['breedte'] = $_POST['breedte']; echo $_SESSION['breedte'] ?> <?php $_SESSION['hoogte'] = $_POST['hoogte']; echo $_SESSION['hoogte'] ?> <input type="text" name="naam" value="testnaam" readonly /></td> <input type="submit" value="Invoeren" id="invoerknop" style="cursor:hand; cursor:pointer;" /> </form> |
1 2 3 4 5 6 7 | <?php include("db.inc.php"); $sql="INSERT INTO crimyclowndb (breedte,hoogte,naam) VALUES('{$_POST['breedte']}','{$_POST['hoogte']}','{$_POST['naam']}');"; mysql_query($sql) or die(mysql_error()); ?> |
quote:Array
(
[naam] => testnaam
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
1 | <input type=hidden name=hoogte value=10 /> |
SESSIONS op alles gezet behalve de naam die op POST. Nu krijg ik geen errors meer, maar hij doet het ook nog niet.quote:Op vrijdag 23 december 2011 14:08 schreef Pakspul het volgende:
Je geeft de SESSION waardes weer op het beeld en dan verwacht je dat ze ineens in het formulier terug komen? Dan zou je deze eerst aan een formulier object moeten handen.
[ code verwijderd ]
bijvoorbeeld.
Of je moet $_SESSION i.p.v. $_POST in je query gebruiken.
[edit]Echo de $sql eens en kijken eens of je rare dingen ziet die niet mogen.[/edit]
Begrijp je eigenlijk wat je doet? Als je de query gaat debuggen wat zegt je logica dan?quote:Op vrijdag 23 december 2011 14:54 schreef Crimyclown het volgende:
[..]
SESSIONS op alles gezet behalve de naam die op POST. Nu krijg ik geen errors meer, maar hij doet het ook nog niet.
Correct, maar laten we het voor niet te moeilijk makenquote:Op vrijdag 23 december 2011 15:02 schreef Catch22- het volgende:
Ga alsjeblieft prepared statements gebruiken. Never, ever, ever, userinput (of post/get info) in je mysql gooien.
1 2 3 4 5 6 7 8 9 10 | <?php include("db.inc.php"); echo "<pre>"; print_r($_SESSION); $query = "INSERT into crimyclowndb (hoogte, breedte ) ". "VALUES ('$hoogte', '$breedte')"; mysql_query($query) or die('Error, query failed : ' . mysql_error()); ?> |
Mag vast wel in Oracle hequote:Op vrijdag 23 december 2011 15:02 schreef Catch22- het volgende:
Ga alsjeblieft prepared statements gebruiken. Never, ever, ever, userinput (of post/get info) in je mysql gooien.
Niet bepaalt, zal straks het naslag werk erbij halen.quote:Op vrijdag 23 december 2011 16:02 schreef Pakspul het volgende:
[..]
Je hebt dus absoluut geen idee wat je doet...
quote:Op vrijdag 23 december 2011 11:57 schreef Apekoek het volgende:
Goed, ik heb deskundige hulp nodig, dat lijkt hier wel snor te zitten .
Ik heb namelijk een plugin in Wordpress die nog niet precies doet wat ik wil. Namelijk de "Contact form 7 to database extension". Graag wil ik de uploads die via het normale contact form zijn voltooid, downloadbaar worden in een post of op een pagina aan de voorkant. Echter zit ik hier met een PHP achtige generator die niet doet wat ik wil, of beter gezegd, welke code ik ook maak, ik kom er simpel weg niet uit. Ik zou namelijk erg graag het e-mail adres met de upload ergens in een post willen tonen.
Wat moet ik hier mee als jullie dit zo zien?
[ afbeelding ]
Alsof PDO lastiger is dan standaard SQLquote:Op vrijdag 23 december 2011 15:04 schreef Pakspul het volgende:
Correct, maar laten we het voor niet te moeilijk maken
quote:Op vrijdag 23 december 2011 15:36 schreef Cue_ het volgende:
[..]
Mag vast wel in Oracle he
hier willen we daar uiteindelijk nog wel naar toe, maar dat is ondertussen al een jaar uitgesteld volgens mij
Daar ben ik sinds kort op overgestapt. Dit omdat ik MySQL direct gebruiken onpraktischer begon te vinden en ik MySQLi ook zo'n onding vind.quote:Op vrijdag 23 december 2011 23:55 schreef Light het volgende:
[..]
Alsof PDO lastiger is dan standaard SQL
1 2 3 4 5 | <?php $result = mysql_query ("SELECT * FROM hoofdmenu ORDER BY H_id ASC"); while($row = mysql_fetch_array($result)){ echo "<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." ' >".$row['H_name']."</a>"; ?> |
1 2 3 4 5 6 7 8 9 10 | <?php $result = mysql_query ("SELECT * FROM hoofdmenu ORDER BY H_id ASC"); while($row = mysql_fetch_array($result)){ if ($row['H_actief'] == "1") { echo "<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." actief"." ' >".$row['H_name']."</a>"; } else{ echo "<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." ' >".$row['H_name']."</a>"; ?> |
Je bedoelt dat het item met de pagina waar je op bent actief is?quote:Op dinsdag 27 december 2011 10:43 schreef MrNiles het volgende:
om maar op 1 plaats te wijzigen heb ik nu een menu gemaakt uit een database
[ code verwijderd ]
maar hoe kan ik hier nu iets active maken?
ik gebruik functions voor elke pagina aan te roepen (index.php?func=home of func=pagina2 etc
zelf dat ik iets aan
[ code verwijderd ]
maar ben er nog niet helemaal aan uit hoe die 1 en 0 in de database kan updaten
iemand een idee hoe zoiets aan te pakken
of moet het helemaal anders opgezet worden?
1 2 3 | <?php if ($row['H_name'] == $_GET['func']) { ?> |
maar het wordt eigenlijk iets ingewikkelder :pquote:Op dinsdag 27 december 2011 10:53 schreef mstx het volgende:
[..]
Je bedoelt dat het item met de pagina waar je op bent actief is?
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 | <tr><td><?php echo $row[Naam]; ?><input name="Naam[]" value="<?php echo $row[Naam]; ?>" type="hidden"></td> <td><input name="Punten[]" size="2" value="1"></td> <td><input name="Onderdeel" value="<?php echo $Onderdeel; ?>" type="hidden"><input name="ID" value="<?php echo $row[ID]; ?>" type="hidden"></td></tr> <?php } ?> </table> <input type="submit" name="Opslaan" value="Opslaan" /></form><br /> <?php if($_SERVER['REQUEST_METHOD'] == 'POST' AND (!empty($_POST['Opslaan']))) { $sql = ("INSERT INTO scoretabel VALUES('$Naam', '$Onderdeel', '$Punten')"); mysql_query($sql) or die(mysql_error()); |
Je wilt alle gegevens uit de post array halen voor het element: "Naam[]"?quote:Op vrijdag 30 december 2011 16:40 schreef Feyenoordlife het volgende:
Even geleden dat ik wat met PHP heb gedaan, en ik moet nu even snel iets fixen voor een trainingskamp. Het lukt mij alleen niet meer om meerdere records tegelijk in te voeren. Het was een simpel iets, maar ik kom er zo snel ff niet meer op.
Ik krijg een aantal resultaten uit mijn while loop en deze worden in een tabelletje gegooid (niet erg netjes nu, maar dat maakt hiervoor even niet uit).
[ code verwijderd ]
Zou iemand dit even snel kunnen (helpen met) oplossen?
1 2 3 4 5 | <?php foreach($_POST['naam'] as $k => $v) { //hierin je code om het naar de db te schrijven. variable $v bevat de waarde van de input. Niet vergeten te escapen. } ?> |
Ongeveer ja, alleen moeten de punten er ook nog bij. In ieder geval bedankt al voor dit gedeelte.quote:Op vrijdag 30 december 2011 17:27 schreef The_Terminator het volgende:
[..]
Je wilt alle gegevens uit de post array halen voor het element: "Naam[]"?
Zo ja;
[ code verwijderd ]
Zet dit in de loop om de punten array uit te lezen:quote:Op vrijdag 30 december 2011 18:15 schreef Feyenoordlife het volgende:
[..]
Ongeveer ja, alleen moeten de punten er ook nog bij. In ieder geval bedankt al voor dit gedeelte.
1 2 3 | <?php $punten = $_POST['Punten'][$k]; ?> |
Yes, dat was hem ja. Dankje!quote:Op vrijdag 30 december 2011 21:39 schreef The_Terminator het volgende:
[..]
Zet dit in de loop om de punten array uit te lezen:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | <?php foreach($_POST['Naam'] as $k => $v) { $sql = ("SELECT Naam, SUM(Punten) as Punten_totaal FROM scoretabel WHERE Naam = '".$v."' ORDER BY Punten_totaal DESC "); $result = mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_array($result)){ echo "$row[Punten_totaal] $row[Naam] <br>"; } ?> |
Bedankt, ga ik ff naar kijken. XSS aanvallen hoef ik voor dit projectje niet naar te kijken, wordt alleen door mij gebruikt draait op localhost.quote:Op maandag 2 januari 2012 01:05 schreef GlowMouse het volgende:
Van regel 4 t/m 9 doet hij dat wel, maar voor elke nieuwe $k en $v begint een nieuwe sortering. Let bij echo $row['Naam'] op voor XSS aanvallen.
Je haalt nogal wat dingen door elkaar nu.quote:Op maandag 2 januari 2012 02:35 schreef Apekoek het volgende:
Een simpele vraag voor jullie kenners, voor mij echter niet, wie helpt mij uit de brand?
Ik wil downloadbare links tonen op mijn website, dit zijn bestanden die vanuit een upload map moeten komen. Echter krijg ik nu de meldong "forbidden" en de bestanden zijn dus nie letterlijk downloadbaar via de directe link. In dat zelfde mapje zit een .htaccess file waar "deny for all" in staat (dit bestand van contact forms 7 keert zelfs na verwijdering terug).
Hoe de links/uploads downloadbaar te maken zonder de "forbidden" pagina?
Als dat bestand steeds terugkomt gaat het nooit lukken natuurlijk. Wat is 'contact forms 7' precies?quote:Op maandag 2 januari 2012 02:35 schreef Apekoek het volgende:
Een simpele vraag voor jullie kenners, voor mij echter niet, wie helpt mij uit de brand?
Ik wil downloadbare links tonen op mijn website, dit zijn bestanden die vanuit een upload map moeten komen. Echter krijg ik nu de meldong "forbidden" en de bestanden zijn dus nie letterlijk downloadbaar via de directe link. In dat zelfde mapje zit een .htaccess file waar "deny for all" in staat (dit bestand van contact forms 7 keert zelfs na verwijdering terug).
Hoe de links/uploads downloadbaar te maken zonder de "forbidden" pagina?
Zorgt de .htaccess met "Deny for all" voor de forbidden pagina wanneer ik uit dezelfde map een bestand downloadbaar wil maken?quote:Op maandag 2 januari 2012 11:19 schreef The_Terminator het volgende:
[..]
Als dat bestand steeds terugkomt gaat het nooit lukken natuurlijk. Wat is 'contact forms 7' precies?
Je zou een soort van proxy script kunnen schrijven dat het bestand aanbiedt via de readfile functie, echter is het misschien beter om gewoon de oorzaak te achterhalen waarom dat .htaccess bestand steeds terugkeert na het verwijderen.
Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.quote:Op maandag 2 januari 2012 11:32 schreef Apekoek het volgende:
[..]
Zorgt de .htaccess met "Deny for all" voor de forbidden pagina wanneer ik uit dezelfde map een bestand downloadbaar wil maken?
Het gaat trouwens om een Wordpress plugin voor formulieren (http://contactform7.com/), de bestanden die worden upgeload via het formulier wil ik niet alleen per mail krijgen maar ook op mijn server krijgen (deze bestanden wil ik dan downloadbaar maken op een andere sectie op mijn website).
Hoe op te lossen?
Klopt het dient als een beveiliging, dus ik ben ook niet helemaal zeker van of ik hier goed aan doe. Correctie, ik bedoelde deny from all ipv for, maar het idee zal wel hetzelfde zijn.quote:Op maandag 2 januari 2012 11:41 schreef The_Terminator het volgende:
[..]
Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.
Zoals ik in mijn vorige bericht al aangaf zou je naar de oorzaak kunnen zoeken. Waarschijnlijk staat ergens in de broncode van de plugin een lijn code dat ervoor zorgt dat de .htaccess wordt weggeschreven, als een soort van beveiliging...
Helaas, zelfs een lege .htaccess file op een chmod van 444 zorgt voor een 403 Forbidden pagina (wanneer ik een upgeload bestand wil benaderen vanuit mijn website).quote:Op maandag 2 januari 2012 11:41 schreef The_Terminator het volgende:
[..]
Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.
Zoals ik in mijn vorige bericht al aangaf zou je naar de oorzaak kunnen zoeken. Waarschijnlijk staat ergens in de broncode van de plugin een lijn code dat ervoor zorgt dat de .htaccess wordt weggeschreven, als een soort van beveiliging...
Nog steeds niet het gewenste resultaat en al heel wat geprobeerd, ik denk dat ik maar eens voor een betaalde plugin met de gewenste functies ga (raden jullie dat ook aan in het geval van een n00b zoals ik?).quote:
Div-id's kun je maar één keer in een pagina gebruiken, div-classes onbeperkt.quote:Op woensdag 4 januari 2012 14:49 schreef Onnoman het volgende:
Goedemiddag,
ik probeer 2 google web translators toe te passen op mijn website, die synchroon werken.
Dus gewoon eigenlijk een duplicaat.
dit div element plaatst de google dropdown, maar als je deze elders ook wilt toepassen krijg ik deze niet in zicht.
<div id="google_translate_element"></div>
(zie http://translate.google.com/translate_tools )
Da's niet echt nuttig op die manier, zo kunnen we de PHP code niet lezen.quote:Op donderdag 5 januari 2012 00:17 schreef Vanillax het volgende:
Dit is de pagina; http://www.lucsenden.nl/contact.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 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 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <HEAD><TITLE>www.lucsenden.nl - Voor al uw videoproducties.</TITLE> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <META name=robots content=index,follow> <META name=keywords content=" "> <META name=description content=" "> <META content=0 http-equiv=Expires><LINK rel=stylesheet type=text/css href="style.css" media=screen> <script type="text/javascript" src="js/jquery-1.4.2.js"></script> <!--[if IE]> <link type="text/css" href="css/ie.css" rel="stylesheet" media="screen" /> <![endif]--> <!--[if IE 6]> <script type="text/javascript" src="js/pngfix.js"></script> <script type="text/javascript"> DD_belatedPNG.fix('img,#logo'); </script> <![endif]--> <LINK rel=stylesheet type=text/css href="css/ie.css" media=screen> </HEAD> <BODY> <DIV class=top-bar-wrap> </DIV> <DIV class=main-bg> <DIV id=sub-page class=main-wrap> <DIV id=header class=mod-con> <H1 id=logo><A href="/#"><IMG alt="" src="/image/luc.png"></A></H1> <UL id=main-menu> <LI><A href="/index.html"><STRONG>Home</STRONG></A><A class=cur href="/about.html"><STRONG>Over mij</STRONG></A> </LI> <LI><A href="/diensten.html"><STRONG>Diensten</STRONG></A> </LI> <LI><A href="/portfolio.html"><STRONG>Portfolio</STRONG></A> </LI> <LI><A href="/referenties.html"><STRONG>Referenties</STRONG></A> </LI> <LI><A href="/contact.html"><STRONG>Contact</STRONG></A> </LI></UL></DIV> <DIV id=main class=mod-con> <DIV class="container clearfix"> <DIV style="WIDTH: 861px;HEIGHT: 1006px" id=about-page class=main-con> <DIV class=title-nav> <H2>Contact</H2></DIV> <DIV class=content> <P>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam et risus non arcu porttitor feugi at in at neque. In hac habitasse platea dictumst. Proin pretium neque at turpis fermentum de aliquet. Ut risus nisi, scelerisque in convallis et, volutpat malesuada elit. Ut nulla libero, condi entum eget scelerisque eget, blandit sit amet metus. Suspendisse potenti. Nulla luctus temus augue dictum cursus. Curabitur non risus dui. In sit amet tellus in lacus fringilla condimentuma t sit amet libero. Fusce purus ligula, hendrerit ut vulputate eget, vestibulum non diam. Vestib ulum facilisis, leo id volutpat vestibulum, eros ligula ornare urna, pellentesque laoreet magna purus ac metus. Nulla facilisi.</P> <?php echo ''; if(isset($_POST['submit'])) { $subject = $_POST['naam'].' stuurde een mail via PHP!'; $email = $_POST['xmemorylane@hotmail.com']; $bericht = wordwrap($_POST['bericht'], 70); $versturen_gelukt = mail($email, $subject, $bericht); if($versturen_gelukt) { echo ' <p>De email is verstuurd! <a href="'.$_SERVER['PHP_SELF'].'">Nog een mail sturen</a>.</p>'."\r\n"; } else { echo ' <p>Er is iets mis gegaan, <a href="'.$_SERVER['PHP_SELF'].'">probeer het opnieuw</a>.</p>'."\r\n"; } } else { echo ' <form action="'.$_SERVER['PHP_SELF'].'" method="POST" type="text/plain"> <label for="name">Naam</label> <input type="naam" name="naam" id="naam" /> <label for="email">Email</label> <input type="email" name="email" id="email" /> <label for="bericht">Bericht</label> <textarea name="bericht" id="bericht"></textarea> <label for="submit"></label> <input type="submit" name="submit" id="submit" value="Stuur bericht!" /> </form> '; } echo ' '; ?> </DIV></DIV></DIV></DIV></DIV></DIV> <DIV class=siteintro-wrap> </DIV> <DIV class=footer-wrap> <DIV id=footer class=mod-con> <DIV class=copyright>© 2012 Copyright Lucsenden.nl. All Rights Reserved. </DIV> <DIV class=hovergallery> <a href="http://facebook.com/lucsenden"><img src="http://i44.tinypic.com/10p9g5i.png" /></a> <a href="http://youtube.com/luckske112"><img src="http://i44.tinypic.com/34rwqdv.png" /></a> <a href="http://twitter.com/lucsenden"><img src="http://i42.tinypic.com/xfst8g.png" /></a> </DIV> </DIV></DIV></BODY></html> |
Dan moet je je adblocker uitzetten.quote:Op donderdag 5 januari 2012 00:25 schreef Vanillax het volgende:
Diepe zucht. Ik kan niet quoten, kan geen tekst in een area zetten, helemaal niks. Wordt er gek van.
Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..quote:Op donderdag 5 januari 2012 00:28 schreef GlowMouse het volgende:
kijk eens naar http://nl3.php.net/manual/en/function.mail.php
Op regel 74 wordt $_POST uitgelezen voor een e-mailadres. Het adres staat helemaal niet in $_POST, en al zeker niet met de key die je daar uitleest.quote:Op donderdag 5 januari 2012 00:24 schreef Vanillax het volgende:
Ah, ja. Ik heb zojuist geleerd dat je dat niet kan zien via de source.
Hier mijn volledige code;
[ code verwijderd ]
Je script is helemaal niet goed. Ga je gewoon eens verdiepen in wat je aan het doen bent, in plaats van (fout) het werk van je klasgenoten te kopieren en dan gelijk hierheen rennen als het niet werkt. Zo leer je nooit wat.quote:Op donderdag 5 januari 2012 00:33 schreef Vanillax het volgende:
[..]
Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..
Als ik nu alles invul en op zenden klik komt er 'Er is iets mis gegaan, probeer het opnieuw'.
Fout werk van mijn klasgenoten?quote:Op donderdag 5 januari 2012 00:37 schreef KomtTijd... het volgende:
[..]
Je script is helemaal niet goed. Ga je gewoon eens verdiepen in wat je aan het doen bent, in plaats van (fout) het werk van je klasgenoten te kopieren en dan gelijk hierheen rennen als het niet werkt. Zo leer je nooit wat.
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 | <?php echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Email formulier</title> <link href="/style/style_normal.css" rel="Stylesheet" type="text/css" media="all" /> </head> <body> <div id="wrapper"> '; if(isset($_POST['submit'])) { $subject = $_POST['naam'].' stuurde een mail via PHP!'; $email = $_POST['email']; $bericht = wordwrap($_POST['bericht'], 70); $versturen_gelukt = mail($email, $subject, $bericht); if($versturen_gelukt) { echo ' <p>De email is verstuurd! <a href="'.$_SERVER['PHP_SELF'].'">Nog een mail sturen</a>.</p>'."\r\n"; } else { echo ' <p>Er is iets mis gegaan, <a href="'.$_SERVER['PHP_SELF'].'">probeer het opnieuw</a>.</p>'."\r\n"; } } else { echo ' <form action="'.$_SERVER['PHP_SELF'].'" method="POST" type="text/plain"> <label for="name">Naam</label> <input type="naam" name="naam" id="naam" /> <label for="email">Email</label> <input type="email" name="email" id="email" /> <label for="bericht">Bericht</label> <textarea name="bericht" id="bericht"></textarea> <label for="submit"></label> <input type="submit" name="submit" id="submit" value="Stuur bericht!" /> </form> '; } echo ' </div> </body> </html> '; ?> |
1 2 3 4 5 6 7 8 9 | <?php if(isset($_POST['submit'])) { $subject = $_POST['naam'].' stuurde een mail via PHP!'; $email = $_POST['xmemorylane@hotmail.com']; $bericht = wordwrap($_POST['bericht'], 70); $versturen_gelukt = mail($email, $subject, $bericht); ?> |
1 2 3 4 5 6 7 8 9 | <?php if(isset($_POST['submit'])) { $subject = $_POST['naam'].' stuurde een mail via PHP!'; $email = $_POST['email']; $bericht = wordwrap($_POST['bericht'], 70); $versturen_gelukt = mail($email, $subject, $bericht); ?> |
Ergens in jouw code staat mail(...). Uit http://nl3.php.net/manual/en/function.mail.php haal je dat de eerste parameter het e-mailadres is waar de e-mail naartoe wordt gestuurd. Daar vul jij $email in. Kijk eens welke waarde $email heeft.quote:Op donderdag 5 januari 2012 00:33 schreef Vanillax het volgende:
[..]
Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..
Als ik nu alles invul en op zenden klik komt er 'Er is iets mis gegaan, probeer het opnieuw'.
quote:Op donderdag 5 januari 2012 00:47 schreef Tegan het volgende:
Ok, en wat heb je allemaal aangepast?
Regel 19 bijvoorbeeld. Waarom heb je daar je email ingevuld?
quote:Op donderdag 5 januari 2012 00:35 schreef Light het volgende:
[..]
Op regel 74 wordt $_POST uitgelezen voor een e-mailadres. Het adres staat helemaal niet in $_POST, en al zeker niet met de key die je daar uitleest.
1 2 3 4 5 6 7 8 9 10 11 12 | $variable //dit is een variable //in een variable kun je van alles stoppen $variable = 'lala' //nu zit er lala in $variable echo $variable //nu verschijnt er de inhoud van $variable op het scherm $variable = 'lulu' //nu zit er lulu in $variable //er bestaan ook arrays, dat is een soort lijst met keys en values $test = array(); //hier maak je een array mee aan die leeg is $test['lala'] = 'haha'; //hiermee maak je een array aan met een key die lala heet en een waarde die haha heet //een speciaal type array is bijvoorbeeld $_POST $_POST['email'] //hier staat de waarde van het veld uit je formulier met de naam 'email' . Het ['email'] achter $_POST is dus niet de plek waar jij je eigen mailadres moet invullen. Dat doe je in het veld zelf. |
quote:Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'enSpammers vrij spel geven.
Template parsers júíst niet, over het algemeen.quote:Op donderdag 5 januari 2012 12:01 schreef Sitethief het volgende:
Technisch gezien echo'en de meeste template parsers ook .
Erg slordig idd. Waarom makkelijk doen als het moeilijk kanquote:Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'en.
1 2 3 4 5 6 7 8 | <html> <head> <title>bla</title> </head> <body> <center><?php echo str_repeat('bla ', 1000); ?></center> </body> </html> |
geen echoquote:Op donderdag 5 januari 2012 12:38 schreef The_Terminator het volgende:
[..]
Erg slordig idd. Waarom makkelijk doen als het moeilijk kan
@Vanillax: laat je leraar het volgende even zien, die heeft blijkbaar nog veel te leren op PHP gebied...
[ code verwijderd ]
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Deed ik heel vroeger ook (toen ik 16-17 was), nu werk ik volgens OOP en MVC.quote:Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'en.
Extra sessies zijn eigenlijk ook slechts lapmiddelen.quote:Op donderdag 5 januari 2012 21:40 schreef Dokay het volgende:
Beste PHP devvers,
Even een vrij basale vraag. Voor mijn werkgever heb ik een php applicatie in elkaar geknutseld waarbij men intern mensen in kan roosteren en mensen extern aan kunnen geven wanneer ze beschikbaar zijn. Ziekte en verlof worden ook allemaal geregeld, iedereen blij. Alleen nu het steeds meer en meer gebruikt wordt door deze middelgrote organisatie begint mijn zorg over de veiligheid te stijgen. Laat ik eerlijk zijn: ik heb het in elkaar gezet met trail en error, heb nooit een PHP boek of cursus gedaan en met frunniken lukt me eigenlijk altijd wel wat ik wil. Maar ik weet ook dat het waarschijnlijk niet de veiligste en meest efficiente manier is.
Waar ik vooral tegen aan loop en wil vragen hoe jullie dat doen;
Als ik variabelen door minimaal 2 verschillende page's moet loodsen, gebruik ik de HTML "hidden input" tag om deze vast te houden en vervolgens weer door te zetten naar de volgende pagina die er wat mee doet.
Nou heb ik er nooit bij stilgestaan dat een kwaadwillende gebruiker deze hidden input tag kan invullen naar wens en vervolgens terug kan sturen naar de server met allerlei kwaadaardige code. In het geval van mijn appje zou dat een catastrofe zijn, want het zit bomvol met dit soort code om de eerder opgegeven waarde vast te houden.
Ik heb gepoogd om een extra SESSION aan te maken om de variable vast te houden, maar er loopt er al een van de gebruiker die ingelogd is en welke zijn ID vasthoud. Het geeft problemen als ik een tweede sessie hiernaast probeer te starten want dan wordt aangegeven dat er al een sessie loopt.
Hoe lossen jullie dit op? Alvast bedankt!
Bedankt voor je snelle reactie,quote:Op donderdag 5 januari 2012 22:00 schreef Ofyles2 het volgende:
[..]
Extra sessies zijn eigenlijk ook slechts lapmiddelen.
Ik zou de gegevens gewoon controleren totdat een gebruiker zijn opdracht volledig heeft voltooid.
Dus onder andere: waarden typecasten (in een voor jouw gunstige type), reguliere expressies, htmlentities, strip_tags. Ik stel voor de controlemodellen in een aparte map op te slaan en de bestanden hierin alleen aan te roepen als het echt nodig is.
Desgewenst kun je je projectje ook naar mij toesturen als je het echt niet ziet zitten...
Of je verdiept je een keer in classes en bent ook per direct van het gezeik af. Dan ben je nog flexibelerquote:Op donderdag 5 januari 2012 22:29 schreef Ofyles2 het volgende:
In dat geval zou ik ook voor de 30 diensten een aparte MySQL-tabel maken. Het id-nummer zou ik meegeven met de URL.
Wat betreft SQL-injecties: deze kun je tegengaan door invoerwaarden te controleren en eventueel te escapen (mysql_real_escape_string).
Off-topic:
Een veel betere aanrader is PDO (hier een tutorial), waarmee je meerdere databasesystemen kunt gebruiken zonder complete codeblokken om te ploegen.
Dat gaat in dezelfde sessie, je kunt $_SESSION['blahblah'] met vullen en daarna $_SESSION['user'] met wat anders.quote:Op donderdag 5 januari 2012 21:40 schreef Dokay het volgende:
Ik heb gepoogd om een extra SESSION aan te maken om de variable vast te houden, maar er loopt er al een van de gebruiker die ingelogd is en welke zijn ID vasthoud. Het geeft problemen als ik een tweede sessie hiernaast probeer te starten want dan wordt aangegeven dat er al een sessie loopt.
Bedankt voor je tip, ik ga het morgen meteen uitproberen!quote:Op donderdag 5 januari 2012 22:34 schreef GlowMouse het volgende:
[..]
Dat gaat in dezelfde sessie, je kunt $_SESSION['blahblah'] met vullen en daarna $_SESSION['user'] met wat anders.
Yep.quote:Op donderdag 5 januari 2012 22:37 schreef Dokay het volgende:
[..]
Bedankt voor je tip, ik ga het morgen meteen uitproberen!
Is er ook een mogelijkheid om van te voren gedefinieerde waarden (welke ik nu in hidden HTML tags heb staan) veilig over te dragen tijdens de POST naar de volgende pagina..? (Behalve strip tags, eigenlijk dat er geen wijzingen in welke zin dan ook mogelijk zijn van de huidige waarde..)
Klopt, daar ben ik ook zeer grote voorstander van (als onderdeel van MVC- en OOP-programmeren).quote:Op donderdag 5 januari 2012 22:31 schreef Pakspul het volgende:
[..]
Of je verdiept je een keer in classes en bent ook per direct van het gezeik af. Dan ben je nog flexibeler
*meldt.quote:
Die reden zal wel later bedacht zijn. Als hashing ontbreekt zal de lengte van het db-veld de ware reden achter de beperking tot 12 karakters zijn.quote:Op vrijdag 6 januari 2012 00:54 schreef KomtTijd... het volgende:
[..]
Maar srsly, een maximale lengte aan het password veld geven om SQL injectie te voorkomen?
Zoiets hoor je eerder op te lossen met preg_match en PDO.quote:Op vrijdag 6 januari 2012 00:54 schreef KomtTijd... het volgende:
[..]
*meldt.
Daarom ga ik ook niet datsoort systemen klussen, Maar srsly, een maximale lengte aan het password veld geven om SQL injectie te voorkomen? Echt wtf! Blijkbaar heeft iemand er wel over nagedacht dus, maar toen besloten dat mysql_real_escape() te moeilijk was ofzo Nog even los van de vragen over hoe dat in hemelsnaam gehashed is als die input zo de query in geslingerd wordt...
Preg_match En ja tegenwoordig doet iedereen dat met PDO of MySQLi (of aanverwanten in andere talen) maar als die website 5 jaar oud is ga je 'm niet helemaal herschrijven daarvoor.quote:Op vrijdag 6 januari 2012 00:57 schreef Ofyles2 het volgende:
[..]
Zoiets hoor je eerder op te lossen met preg_match en PDO.
Preg_match voor reguliere expressies. Je kunt nooit 100% zeker zijn dat al je bezoekers zo poeslief zijn...quote:Op vrijdag 6 januari 2012 00:59 schreef KomtTijd... het volgende:
[..]
Preg_match En ja tegenwoordig doet iedereen dat met PDO of MySQLi (of aanverwanten in andere talen) maar als die website 5 jaar oud is ga je 'm niet helemaal herschrijven daarvoor.
Ik combineer preg_match met string escapen. Overbeveiliging.quote:Op vrijdag 6 januari 2012 01:50 schreef KomtTijd... het volgende:
Ik weet wat preg_match is.
Maar als tientallen mensen die jarenlang gestudeerd hebben op SQL injectie een functie maken die dagelijks door duizenden kwaadwillende mensen beproefd wordt, om alle mogelijke manieren van SQL injectie te voorkomen, maar jij denkt dat je het beter kunt met een preg_match, ben je wel redelijk naief.
1 2 3 4 5 6 | <?php $str = "Is your name O'reilly?"; // Outputs: Is your name O\'reilly? echo addslashes($str); ?> |
Dat dus!quote:Op vrijdag 6 januari 2012 10:34 schreef Scorpie het volgende:
Bij SQL queries http://php.net/manual/en/function.mysql-real-escape-string.php
Die zag ik idd voorbij komen.quote:Op vrijdag 6 januari 2012 10:31 schreef Pakspul het volgende:
[ code verwijderd ]
Bron: http://php.net/manual/en/function.addslashes.php
quote:Op vrijdag 6 januari 2012 10:34 schreef Scorpie het volgende:
Bij SQL queries http://php.net/manual/en/function.mysql-real-escape-string.php
quote:
quote:A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned.
1 | trailer='o\'' |
1 | quoted string not properly terminated |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SQL> SELECT 'Frank''s Oracle site' AS text FROM DUAL; TEXT -------------------- Franks's Oracle site SQL> SELECT 'A ''quoted'' word.' AS text FROM DUAL; TEXT ---------------- A 'quoted' word. SQL> SELECT 'A ''''double quoted'''' word.' AS text FROM DUAL; TEXT ------------------------- A ''double quoted'' word. |
1 2 3 4 | <?php // hopelijk is het zichtbaar dat een enkele quote wordt vervangen door twee enkele quotes. $name = str_replace("'", "''", "Frank's Oracle site"); ?> |
1 | trailer='".$trailer."' |
Oracle heeft Mysql gekocht rememberquote:
En als je " (dubbele quote) naar " veranderd en ' (enkele quote) naar 'quote:Op vrijdag 6 januari 2012 11:20 schreef Cue_ het volgende:
Een str_replace (en wss ook die addslashes) werken niet omdat het bij verwerking in quotes komt te staan
[ code verwijderd ]
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
quote:Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?Een header toevoegen naar je bedank pagina nadat de mail succesvol is verzonden.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
Ik heb wat basic tutorials doorgenomen,quote:Op vrijdag 6 januari 2012 22:16 schreef Catch22- het volgende:
zo werkt het niet. Ik zou even wat basic tutorials php lezen en ook even wat debug-tutorials doornemen.
Maar die code he, daar staat regel voor regel wat er gebeurt...
quote:Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Er is een reden dat register_globals niet meer gebruikt moet worden. Dan moet je niet zelf dat gedrag proberen na te bootsen.
1
2
3
4
5
6
7
8
9
10
11
12<?php
// Emular register_globals on
if (!ini_get('register_globals')) {
$superglobales = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobales, $_SESSION);
}
foreach ($superglobales as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
1 2 3 4 | A = 2 likes B = 3 likes C = 4 likes D = 1 like |
1 2 3 4 | 1. C 2. B 3. A 4. D |
Wat voor melding geeft het? en heb je die melding door google heen gehaalt?quote:Op vrijdag 6 januari 2012 23:50 schreef Vanillax het volgende:
[..]
Ik heb wat basic tutorials doorgenomen,
En dus de tutorial gevolgd waarvan ik die link gaf maar het werkt dus niet.
En ik snap niet waarom.
Dus ik begin me af te vragen of het niet gewoon aan de host ligt ipv aan mijn php skills, want ik doe gewoon letterlijk wat er in die tutorial staat..
Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukkenquote:Op zondag 8 januari 2012 20:57 schreef cablegunmaster het volgende:
Easy... een order by in je query's gebruiken de vraag blijft of dit mogelijk is.
Want volgens mij gebruik je hierbij de facebook API? applicatie? ?
Corrigeer me als ik het verkeerd heb.
anders een query maken;
Select * from TABLE order by aantal_likes desc
of hoe je het veld hebt genoemd .
Zie voorbeeld:
http://www.w3schools.com/php/php_mysql_order_by.asp
[..]
Wat voor melding geeft het? en heb je die melding door google heen gehaald?
Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.quote:Op zondag 8 januari 2012 21:15 schreef dirkjo het volgende:
[..]
Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukken
Want op die pagina wil ik niet de complete lijst, maar alleen de positie van het ene element (A in dit geval) uit de lijst. Snap je?
Oke stel je dit voor:quote:Op zondag 8 januari 2012 21:32 schreef cablegunmaster het volgende:
[..]
Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.
"select * from likes where id = ' ".esc($_GET['id'])." ' ";
Met bvb de link index.php?id=50 dan haalt hij de ID eruit van 50 en welke ABCD er bij hoort.
1 2 3 4 | A = 3 likes B = 2 likes C = 4 likes D = 1 like |
Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.quote:Op zondag 8 januari 2012 21:42 schreef dirkjo het volgende:
[..]
Oke stel je dit voor:
Je hebt de waardes A, B, C en D zoals ik net al zei. Buiten nog veel meer informatie staat er onder andere in de database bij elke waarde (elke rij dus) het aantal likes dat die heeft gekregen (facebook onafhankelijk).
Als ik een lijst wil maken waarbij de waarde met de meeste likes bovenaan komt te staan kan ik inderdaad ORDER BY likes DESC gebruiken, maar dit wil ik niet.
Ik wil namelijk het volgende:
Elke waarde is ook een pagina, stel je voor A heeft ID 1; dan heb ik een waarde met ID 1. Dan kan ik alle waardes van die row pakken door WHERE ID = 1 te gebruiken, waaronder dus ook de likes.
Maar dat heeft allemaal niks te maken met wat ik wil. Ik wil namelijk op die pagina van 'A' dat je kan zien waar 'A' staat in de lijst (dus de lijst waar de meeste likes bovenaan staan).
Ik wil dat mysql dan aan mij teruggeeft op welke plek A zou staan als ik alle waardes sorteer van meeste naar minste likes.
Dus als voorbeeld:
[ code verwijderd ]
Als ik nu de hele lijst zou plaatsen zou 'A' op nummer twee worden geplaatst, hij heeft tenslotte de op een na meeste likes.
Nu wil ik op de pagina van 'A' die plaatst (positie 2) dus laten zien ZONDER de hele zooi te moeten plaatsen.
Ik hoop hiermee een beetje duidelijk te hebben beschreven wat ik wil?
Je snapt hetquote:Op zondag 8 januari 2012 22:20 schreef cablegunmaster het volgende:
[..]
Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.
Voila? of snap ik het verkeerd ?
Dan krijg je als resultaat : A staat op X positie en heeft 4 likes.
Positie moet altijd up-to-date blijven omdat users hem kunnen bepalen (door middel van de likes).quote:Op zondag 8 januari 2012 22:37 schreef GlowMouse het volgende:
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
1 2 3 4 5 6 7 8 9 10 11 12 | <?php function songRank($songID){ $rank = 0; $getrank = mysql_query("SELECT songID FROM songs ORDER BY `likes` DESC"); while($row = mysql_fetch_array($getrank)){ $rank++; if($songID == $row['songID']){ return $rank; } } } ?> |
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.quote:Op zondag 8 januari 2012 22:48 schreef GlowMouse het volgende:
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
quote:Op zondag 8 januari 2012 22:50 schreef dirkjo het volgende:
[..]
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
1 | SELECT COUNT(*) AS aantal FROM songs WHERE songID = '" . mysql_real_escape_string($songID) . "' ORDER BY `likes` DESC |
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terugquote:Op zondag 8 januari 2012 22:52 schreef The_Terminator het volgende:
[..]
[ code verwijderd ]
Het aantal zit dan in: $row['aantal']
Edit: is songID numeriek of een string?
Oeps... Onderstaande fixt het:quote:Op zondag 8 januari 2012 22:56 schreef dirkjo het volgende:
[..]
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug
1 | SELECT COUNT(*) AS aantal, songID FROM songs WHERE songID = " . mysql_real_escape_string($songID) . " ORDER BY `likes` DESC |
Nee hoorquote:Op zondag 8 januari 2012 22:58 schreef The_Terminator het volgende:
[..]
Oeps... Onderstaande fixt het:
[ code verwijderd ]
Geen rijen, maar één kolom in een rij. (Ja ik weet; dat heb ik een paar keer verkeerd gezegd zie ik net ).quote:Op zondag 8 januari 2012 23:02 schreef GlowMouse het volgende:
Welke rijen moet je tellen om de rank te bepalen.
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergetenquote:Op zondag 8 januari 2012 23:04 schreef GlowMouse het volgende:
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.quote:Op zondag 8 januari 2012 23:06 schreef dirkjo het volgende:
[..]
De kolom 'likes' vertelt me de positie, die kolom bevat een getal. Met COUNT ga je alle rijen tellen die `songID` '$songID' bevatten, ofniet?
Probeer het niet goed te praten . Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.quote:Op zondag 8 januari 2012 23:07 schreef The_Terminator het volgende:
[..]
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.quote:Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:
[..]
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.
[..]
Probeer het niet goed te praten . Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Ik probeer niets goed te praten . Ik ben vergeten die escapefunctie te verwijderen, de quotes had ik wel weggehaald waardoor het lijkt dat ik de functie gebruik in een query zonder quotes.quote:Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:
Probeer het niet goed te praten . Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Heb je die vraag eens bij je eigen query gesteld?quote:Op zondag 8 januari 2012 23:23 schreef dirkjo het volgende:
[..]
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.quote:Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:
[..]
Heb je die vraag eens bij je eigen query gesteld?
Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Dat is niet waar, het resultaat berust op toeval.quote:Op zondag 8 januari 2012 23:27 schreef dirkjo het volgende:
[..]
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
quote:Op zondag 8 januari 2012 23:30 schreef dirkjo het volgende:
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
quote:Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:
[..]
Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Oke, dus (even snel) zou jouw query er ongeveer zo uitzien:quote:
1 2 3 | <?php mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE likes > ". $likes. " "); ?> |
Oke, bedankt!quote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Veel doeltreffender.quote:Op zondag 8 januari 2012 23:40 schreef dirkjo het volgende:
[..]
Oke, bedankt!
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat nietquote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Dan moet je die andere lijst aanpassen zodat hij zo wordt:quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet
En toch heb je geen garantie dat het niet verandert.quote:Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
Je doet het nu door te selecteren op het aantal likes?quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet
Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
//edit
Deze manier geeft zelfs bij meerdere nummers dezelfde rank, terwijl dit toch echt iets is wat niet mag gebeuren
1 2 3 4 5 6 7 8 | SET @rownum := 0; SELECT * FROM ( SELECT @rownum := @rownum+1 AS song_rank, likes FROM songs ORDER BY likes DESC ) AS song_score WHERE songID = " . $songID |
Ik gebruik nu de manier van GM, een paar posts terug.quote:Op zondag 8 januari 2012 23:55 schreef The_Terminator het volgende:
[..]
Je doet het nu door te selecteren op het aantal likes?
[ code verwijderd ]
Bovenstaande zou je de rank terug moeten geven adhv het songid.
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.quote:Op zondag 8 januari 2012 23:57 schreef dirkjo het volgende:
[..]
Ik gebruik nu de manier van GM, een paar posts terug.
Heldquote:Op maandag 9 januari 2012 00:02 schreef GlowMouse het volgende:
Wijzig
SELECT songID FROM songs ORDER BY `likes` DESC
in
SELECT songID FROM songs ORDER BY `likes` DESC,songID DESC
En
SELECT COUNT(*) AS rank FROM songs WHERE likes > ...
in
SELECT COUNT(*) AS rank FROM songs WHERE likes > ... OR (likes = .... ANDS songID > ....)
Dit gebruik ik nu en werkt:quote:Op maandag 9 januari 2012 00:07 schreef The_Terminator het volgende:
[..]
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.
1 2 3 | <?php $rankQuery = mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE `likes` > ". $likes. " OR (`likes` = '". $likes ."' AND `songID` > ". $songID .")"); ?> |
True.quote:Op maandag 9 januari 2012 00:09 schreef GlowMouse het volgende:
maar die van mij is uiteraard sneller.
Oke, duidelijk!quote:Op maandag 9 januari 2012 21:13 schreef GlowMouse het volgende:
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
1 2 3 4 5 | SELECT Naam, Challenge, Voortgang, ( Voortgang / ( Challenge /100 ) ) AS Percentage FROM hardlopen ORDER BY Naam |
Ik had de 2e parameter bij ROUND gemist in mijn zoektocht, bedankt!quote:Op dinsdag 10 januari 2012 08:54 schreef Scorpie het volgende:
round gebruiken.
http://www.w3schools.com/sql/sql_func_round.asp
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.quote:Op dinsdag 10 januari 2012 09:39 schreef Swetsenegger het volgende:
Ja de op functie ken ik, maar in dit geval was het makkelijker in mysql.
Geloof me, m'n server krijgt het er echt niet warm vanquote:Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:
[..]
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen Je kunt het je beter direct goed aanlerenquote:Op dinsdag 10 januari 2012 10:43 schreef Swetsenegger het volgende:
[..]
Geloof me, m'n server krijgt het er echt niet warm van
Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.quote:Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:
[..]
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen Je kunt het je beter direct goed aanleren
Swets is al een paar stapjes verder dan aanlerenquote:Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:
[..]
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen Je kunt het je beter direct goed aanleren
Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.quote:Op dinsdag 10 januari 2012 10:50 schreef Tijn het volgende:
[..]
Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.
Dat dus.quote:Op dinsdag 10 januari 2012 10:51 schreef GI het volgende:
[..]
Swets is al een paar stapjes verder dan aanleren
En ik ben het met Tijn eens. Het is niet per definitie fout om de DB server te laten rekenen.
Definieer 'belasting'.quote:Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:
[..]
Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.
Zelfde als in hobby projecten kun je best: SELECT * doen, maar het is beter om alleen de velden op te halen die nodig zijn.
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.quote:Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:
[..]
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.quote:Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:
[..]
Het is niet fout, maar kwa belasting wil je het gewoon niet.
quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Indeed.quote:Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:
[..]
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
Ja, dat is wel waar. Maar het hangt compleet van de situatie af of je dergelijke dingen laat berekenen door de DBengine of door de applicatie zelf. Als het puur en alleen om weergave gaat zou ik zeggen dat het door de applicatie gedaan moet worden. Als het om tussentabellen gaat of iets in die geest dan kan ik me nog voorstellen dat je het de DBengine laat doen.quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Das knap, het eens zijn met twee quotes die elkaar tegenspreken.quote:
Nee?quote:Op dinsdag 10 januari 2012 11:04 schreef GI het volgende:
[..]
Das knap, het eens zijn met twee quotes die elkaar tegenspreken.
Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.quote:
Dat probeer ik hier te zeggen.quote:Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:
[..]
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.quote:
Je begrijpt het verschil tussen server en client?quote:Op dinsdag 10 januari 2012 11:07 schreef Pakspul het volgende:
[..]
ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.
Dat is niet altijd een criterium omdat je vaak eenvoudig servers waar de applicatie op draaien kunt bijplaatsen.quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Geef me maar root-toegang op een server die 50.000 queries per seconde afhandelt, zal ik je 10 dingen aanwijzen die elk een miljoen keer meer opleveren.quote:Op dinsdag 10 januari 2012 11:06 schreef Pakspul het volgende:
[..]
Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.
Niet waar, jij wilt het van je db-server naar je db-client verplaatsen.quote:Dat probeer ik hier te zeggen.
Dat denk ik ook. Het is ook duidelijk dat je moet proberen een trage query te voorkomen natuurlijk. Maar dat doe je niet door de round-functie van je database te vermijden.quote:Op dinsdag 10 januari 2012 11:14 schreef GI het volgende:
Ah, dan las ik het verkeerd. Ik denk trouwens wel dat er geen gouden regel is voor deze problematiek.
Ik weet niet wat jij bedoelt met DB-server en DB-client.quote:Op dinsdag 10 januari 2012 11:08 schreef Tijn het volgende:
[..]
Je begrijpt het verschil tussen server en client?
De machine waar de database zelf op staat is de databaseserver. De machine waar de applicatie op draait die met de database verbinding heeft is de databaseclient.quote:Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:
[..]
Ik weet niet wat jij bedoelt met DB-server en DB-client.
100x zegt niks. Doe hem eens 100.000 keer.quote:Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:
[..]
Ik weet niet wat jij bedoelt met DB-server en DB-client.
Maar ik heb even een test uitgevoerd. 100 x een query opgehaald waar 2x50 float in voorkomen. In de ene heb ik hem door PHP laten afronden en in de andere heb ik het door MySQL laten doen. En het verschil is dat PHP er 35% langer over doet wanneer deze zelf de getallen nog moet afronden.
Dan had Tijn het dus toch goed dat de DB-server zelf efficiënter zijn data kan manipuleren.
Nouja, daar zat ik er dus naast ik dacht altijd dat je zulke functie niet daar moest uitvoeren. Vraag ik mij nu alleen af of dit ook geldt voor berekeningen. Straks maar eens doen eerst koffie!
Bij 100.000 keer doet hij er 11% langer over in PHP dan wanneer je MySQL zelf de round functie laat uitvoeren.quote:Op dinsdag 10 januari 2012 11:28 schreef Scorpie het volgende:
[..]
100x zegt niks. Doe hem eens 100.000 keer.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |