Klopt, dat is inderdaad wel de manier. Ik weet ookdat het totaal aantal factuurnummers 59 is en als ik Count(factuurnummer) doe dat het dan 16 is. Oftewel het antwoord moet 59/16 = 3.6875 zijn. Het probleem alleen is nu hoe ik het in SQL neerzet.quote:Op donderdag 15 december 2005 16:43 schreef IbeBen het volgende:
Ik begin maar met de meest kneuzige vraag,
Wat is het gemiddelde aantal factuurregels in 2004?
Ik heb (onder andere) de tabel Factuurregel dus daar zal het antwoord wel vandaan moeten komen.
Factuurregel
Factuurnummer
Artikelcode
verkoopaantal
verkoopprijs
Volgens mij moet ik dus gewoon de factuurnummer optellen en dan delen door het aantal "gecounte" factuurnummers.
Zelf kwam ik tot
SELECT factuurnummer/COUNT(factuurnummer)
FROM factuurnummer;
IbeBen[/]
moet je voor het gemiddelde aantal factuur regels niet eerst alle factuurregels bij elkeer optellen (de aantallen wat in de tabel staan) en dan delen door het aantal factuurnummers.
hoe dat in sql precies moet weet k niet zo 123 (moet het in 1 query trouwens of mag je er ook meerdere achter elkaar uitvoeren?)
PHP heeft als het goed is weinig te maken met de verwerking van bestanden door de webserver. Wat bedoel je met 'hij geeft het niet weer', krijg je een foutmelding of doet de browser iets verkeerds? Zo ja, wat doet ie dan verkeerd? Dat kan ik niet opmaken uit je post.quote:Op donderdag 15 december 2005 18:32 schreef the_disheaver het volgende:
ff een apache-vraagje...
Mijn server geeft diverse bestanden niet weer. html-bestanden (geen ramp aangezien ik het alleen als php-server gebruik) maar ook geen afbeeldingen, en dat is een groter probleem... Enige afbeeldingsoort wat hij weergeeft is png...tenminste nog iets...
Kan het zijn dat mijn php.ini verkeerd is afgesteld? Het is apache op win xp.
1 2 3 4 5 6 7 8 9 10 | $lines = file('path/naar/je/error.log '); $max = count($lines); echo "<p><b>Dit zijn de laatste tien lijnen, beginnend van lijn:</b>" . $max . "</p>"; for ($i = ($max - 1); $i > ($max - 11); $i--) { echo "<p>" . $lines[$i] . "</p>"; } ?> |
Je moet de ene tabel met de andere joinen. Zoiets als dit:quote:Op donderdag 15 december 2005 19:21 schreef Swetsenegger het volgende:
Join vraagje.
Ik heb bv een tabel users met user_id als auto increment.
En dan heb ik een tabel order, waarbij ik de user id opneem zodat ik weet wie de bestelling heeft gedaan.
Maar de laatste keer dat ik zo'n constructie had, kreeg ik het niet voor elkaar om te joinen van user tabel en order tabel op basis van INNER JOIN tabelnaam ON(user_id= user_id). Ik heb toen uiteindelijk in de order tabel user_id id_user genoemd. Maar dit moet toch gewoon kunnen? Ik moet zeker alleen aliassen?
En kan iemand een heldere uitleg geven over Joins misschien![]()
Klopt. Je krijgt een foutmelding en er wordt niets geinsertquote:-edit- Ik vergat nog een kort vraagje. Een kolom unique maken. Wat heeft dat voor consequenties als er onverhoopt een niet unieke waarde wordt gesubmit? Foutmelding en geen data in de rij neem ik aan?
Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.quote:Op donderdag 15 december 2005 19:20 schreef JeRa het volgende:
[..]
Ook kan een firewall van invloed zijn, heb je die draaien?
ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zakenquote:Op donderdag 15 december 2005 19:59 schreef the_disheaver het volgende:
[..]
Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.
Maar na het uitschakelen van mn firewall doet hij het
FF kijken wat er met ZoneAlarm mankeertDank iig
Ow joepie... Ff proberen het werkend te krijgen , en anders een andere firewallquote:Op donderdag 15 december 2005 20:03 schreef JeRa het volgende:
[..]
ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zakenhet is iig een bekend fenomeen dat bijv. Apache en ZoneAlarm gewoon niet willen samenwerken.
Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggenquote:Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:
[heldere uitleg]
Klopt. Je krijgt een foutmelding en er wordt niets geinsertwel opletten als je meerdere INSERTs achter elkaar doet die samenhangend zijn dus.
Je moet voor elke kolom aangeven hoe je wilt sorteren.quote:Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
Ik heb een tabel newsmet columnamen Year, Month en Day
ik voer de volgende query uit:
$query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";
Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
Waarom geef je je records geen DATE of DATETIME mee in sql?quote:Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
Ik heb een tabel newsmet columnamen Year, Month en Day
ik voer de volgende query uit:
$query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";
Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
De meeste mensen doen zoiets:quote:Op donderdag 15 december 2005 20:14 schreef Swetsenegger het volgende:
[..]
Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggen
if(mysql_query($query)){
// doe wat
}else{
//insert nog een keer
}
Maar dan controleer je niet op een specifieke SQL fout.
1 2 3 4 5 | if (!$result) { echo mysql_errno() . ': ' . mysql_error(); exit; } |
Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.quote:Op donderdag 15 december 2005 20:16 schreef JeRa het volgende:
[..]
De meeste mensen doen zoiets:
[ code verwijderd ]
Met mysql_errno() kun je bepalen wat voor fout er opgetreden is
Of, een iets andere schrijfwijze maar met hetzelfde resultaatquote:Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:
[..]
Je moet de ene tabel met de andere joinen. Zoiets als dit:
SELECT *
FROM orders AS o //dit is je eerste tabel die links staat
LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
ON o.user_id = u.user_id //je koppelt de tabellen op de user_id kolom.
WHERE etc
mysql.com ook goed? Er staat een lijstje.quote:Op donderdag 15 december 2005 20:54 schreef Swetsenegger het volgende:
[..]
Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.
Ik had 'm al gevondenquote:Op donderdag 15 december 2005 21:02 schreef Light het volgende:
[..]
mysql.com ook goed? Er staat een lijstje.
1 2 3 4 5 6 7 | foreach($_SESSION['cart'] as $k => $v){ if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){ $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; } } ?> |
Die notice slaat op het idee dat je niet zomaar een index van een array mag opvragen die niet bestaat. In Java zou je een IndexOutOfBounds exception krijgen, in C++ wordt zoiets een segmentation fault. Over het algemeen geen goede praktijk dus, en als je ooit verder wilt gaan in programmeren is het handig om eraan te wennen het op de goede manier te doen.quote:Op vrijdag 16 december 2005 00:20 schreef the_disheaver het volgende:
Is het eigenlijk verkeerd om dit soort notice te krijgen? (bv door een if fucntie of een bepaalde variable gelijk is aan een bepaalde waarde)
Notice: Undefined index: afdeling_id in
Het is geen fatal error oid, maar is het nadelig? dwv dat het langzamer duurt (0.0001 seconde...)
Je kunt dit (meestal) eenvoudig oplossen door eerst te bekijken of de variable bestaat. Maar met if(isset()) duurt het script ook enkele millisecondes langer. Welke van die 2 duurt langer?
Natuurlijk is het wel gewoon beter om een script te maken zonder warnings, errors of notice...
In cart.php wordt de array cart en giftwarp gevuld.quote:Op donderdag 15 december 2005 23:24 schreef JeRa het volgende:
Heel apart. Is er ergens nog andere code die met $giftwrap en $_SESSION['giftwrap'] te maken heeft?
Zoiets zou jouw probleem kunnen verklaren:
$giftwrap=&$_SESSION['giftwrap'];
Hierdoor wordt $giftwrap verwezen naar het giftwrap-element uit de $_SESSION array, waarna hij door de regel
$giftwarp = ....;
wordt overschreven, en hiermee meteen de waarde in $_SESSION. Zo in jouw code kan ik niets zien dat fout is.
Het is ook de bedoeling dat $giftwrap gelijk wordt aan var $_SESSION['giftwrap'][specifieke key]quote:edit: oeh, staat register_globals trouwens aan? Als dat zo is, dan is misschien $giftwrap gelijk gesteld aan de variabele $_SESSION['giftwrap'].
1 |
1 2 3 4 5 6 7 8 9 10 11 | $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3); $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3); foreach($_SESSION['cart'] as $k => $v){ if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){ $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; echo $giftwrap."\r\n"; print_r($_SESSION['cart']); print_r($_SESSION['giftwrap']); }} ?> |
1 |
1 |
1 2 3 4 5 6 | session_start(); $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3); $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3); header("location:test2.php"); ?> |
1 2 3 4 5 6 7 8 9 10 | session_start(); foreach($_SESSION['cart'] as $k => $v){ if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){ $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; echo $giftwrap."\r\n"; print_r($_SESSION['cart']); print_r($_SESSION['giftwrap']); }} ?> |
1 2 3 4 | Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line 4 Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line |
1 2 3 4 5 6 7 8 9 10 11 | $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3); $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3); foreach($_SESSION['cart'] as $k => $v){ if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){ $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; echo $giftwrap."\r\n"; print_r($_SESSION['cart']); print_r($_SESSION['giftwrap']); }} ?> |
Waarom werkt dit dan wel opdezelfde server?quote:Op vrijdag 16 december 2005 10:40 schreef JeRa het volgende:
Zoals ik al zei, ik heb het vermoeden dat $giftwrap gelijk wordt gesteld aan $_SESSION['giftwrap']. Zodra je een array gaat toekennen aan $_SESSION['giftwrap'] verbreek je die verbinding.
Doe voor de grap eens een unset($giftwrap) voor die foreach-loop en kijk dan eens of het werkt
1 2 3 4 5 6 7 8 9 10 11 | $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3); $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3); foreach($_SESSION['cart'] as $k => $v){ if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){ $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; echo $giftwrap."\r\n"; print_r($_SESSION['cart']); print_r($_SESSION['giftwrap']); }} ?> |
Ben wel benieuwd, zal straks eens kijkenquote:Op vrijdag 16 december 2005 11:19 schreef JeRa het volgende:
Met get_defined_vars() kun je erachter komen welke variabelen er zijn ingesteld voordat je je script draait. Dus:
print_r(get_defined_vars());
Zie je daar iets speciaals aan m.b.t. giftwrap en $_SESSION[giftwrap]?
1 |
Insert into table (field1, field2, field3, field4)quote:Op vrijdag 16 december 2005 14:15 schreef Swetsenegger het volgende:
JeRa, je hebt het regelmatig over multiple inserts. Ik neem aan dat je bedoeld dat je met 1 insert meerdere records kan invoegen?
Waar vind ik daar documentatie over, kan het in de mysql manual niet vinden (of mijn zoekterm klopt niet)
Mail header injection is makkelijker te voorkomen. Volgens de mail-rfc's moeten de mailheaders gescheiden worden door \r\n, maar het is bekend dat sommige servers ook alleen \n als scheiding accepteren. Maar zolang er geen \n in het mailadres staat is mail header injection niet mogelijk (iig niet voor zover ik weet). Het ergste dat er dan nog kan gebeuren is dat de persoon in kwestie geen email krijgt. Da's weliswaar vervelend, maar niet echt ernstig qua veiligheidsrisicoquote:Op vrijdag 16 december 2005 23:10 schreef Swetsenegger het volgende:
[ code verwijderd ]
Deze gebruik ik op een formulier, om redelijk strak te controleren om zo mailinjection te voorkomen.
Maar hij staat wel erg strak, want jeroen.swets@gmail.com pakt hij niet
Zo pakt hij dat wel toch:
'/^[0-9A-Za-z_\-][.][0-9A-Za-z_\-] +[@][0-9A-Za-z_\-]+([.][0-9A-Za-z]+)([.][A-Za-z]{2,4}){0,1}$/x'
of pakt hij dan weer teveel
Zo te zien wordt $giftwrap wel geïnitialiseerd op de session-key 'giftwrap'. Nou zou dit niets uit mogen maken, maar ik denk dat het veranderen van de naam van de variabele (wat je dus al gedaan hebt) de beste oplossing isquote:Op vrijdag 16 december 2005 11:25 schreef Swetsenegger het volgende:
[..]
Ben wel benieuwd, zal straks eens kijken
-edit-
Voor de foreach krijg ik dit terug
-snip-
Regelmatig?quote:JeRa, je hebt het regelmatig over multiple inserts.
Includen is serverside. Als iemand een SELECT gebruikt moet er toch echt een request naar de server om zo'n include uit te voeren; maar ik betwijfel het of je daar iets aan hebt. Wat wil je precies doen?quote:Op zaterdag 17 december 2005 11:46 schreef RichardQuest het volgende:
Ik wil vanuit een select-menu html-files (die gewoon met URL in de <option> staan) includen, zodat het menu behouden blijft. Kan iemand mij helpen?
Ik bedoel dus <select> en niet de SQL SELECT...quote:Op zaterdag 17 december 2005 11:49 schreef JeRa het volgende:
[..]
Includen is serverside. Als iemand een SELECT gebruikt moet er toch echt een request naar de server om zo'n include uit te voeren; maar ik betwijfel het of je daar iets aan hebt. Wat wil je precies doen?
1 2 3 4 5 6 | echo ("<option value="" selected>Selecteer een pagina</option>"); echo ("<option value=pagina1.html>pag 1</option>"); echo ("<option value=pagina2.html>pag 2</option>"); echo ("<option value=pagina3.html>pag 3</option>"); echo ("</select>"); |
Is het geen optie om een onchange te gebruiken voor je SELECT-box? Zodra de gebruiker iets kiest, laadt je het menu opnieuw waarbij je de huidige option op de gekozen waarde zet en onder het menu een bestand include.quote:Op zaterdag 17 december 2005 11:57 schreef RichardQuest het volgende:
[..]
Ik bedoel dus <select> en niet de SQL SELECT...
[ code verwijderd ]
Aan de hand van deze keuze moeten de HTML-pagina's onder het menu komen (met het menu zichtbaar).
Frames is geen optie. Kun je me met de code helpen?quote:Op zaterdag 17 december 2005 12:00 schreef JeRa het volgende:
[..]
Is het geen optie om een onchange te gebruiken voor je SELECT-box? Zodra de gebruiker iets kiest, laadt je het menu opnieuw waarbij je de huidige option op de gekozen waarde zet en onder het menu een bestand include.
Anders wordt het denk ik werken met (i )frames
Moet je wel zeggen waar je vastlooptquote:Op zaterdag 17 december 2005 12:03 schreef RichardQuest het volgende:
[..]
Frames is geen optie. Kun je me met de code helpen?
Oké, na wat gepruts heb ik dit:quote:Op zaterdag 17 december 2005 12:07 schreef JeRa het volgende:
[..]
Moet je wel zeggen waar je vastloopt
Snap je hoe je een actie kunt uitvoeren aan de clientside zodra er een optie wordt gekozen door middel van Javascript? (of eventueel als je dit niet wilt, een formulier versturen zodra de gebruiker op een knop drukt)
Snap je hoe je vervolgens een PHP-bestand kunt aanroepen met daarachteraan de naam van het document dat je wilt openen? Bijv. file.php?item=blaat
En hoe je vervolgens die query kunt ophalen ('item' dus), controleren op waarde en vervolgens het goede bestand includen? (of liever, requiren)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!-- function Navigeer(lijst) { var Geselecteerd = lijst.selectedIndex // als de bovenste optie geselecteerd is niets doen if (Geselecteerd != 0) { window.location = lijst.options[Geselecteerd].value; } } // --> </SCRIPT> <? echo ("<select name=HTMLkeuze onchange="Navigeer(this);">"); echo ("<option value="" selected>Selecteer een pagina</option>"); echo ("<option value=pag1.html> 1</option>"); echo ("<option value=pag2.html> 2</option>"); echo ("<option value=pag3.html> 3</option>"); echo ("</select>"); ?> |
Dat klopt, aangezien je de location naar de waarde van de OPTION omzetquote:Op zaterdag 17 december 2005 12:15 schreef RichardQuest het volgende:
[..]
Oké, na wat gepruts heb ik dit:
[ code verwijderd ]
Maar nu opent hij de pagina's zonder dat het menu weer terugkomt.
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 | <!-- function Navigeer(lijst) { var Geselecteerd = lijst.selectedIndex // als de bovenste optie geselecteerd is niets doen if (Geselecteerd != 0) { window.location = 'menu.php?item=' + lijst.options[Geselecteerd].value; } } // --> </SCRIPT> <? echo ("<select name=HTMLkeuze onchange="Navigeer(this);">"); echo ("<option value="" selected>Selecteer een pagina</option>"); echo ("<option value=pag1> 1</option>"); echo ("<option value=pag2> 2</option>"); echo ("<option value=pag3> 3</option>"); echo ("</select>"); //Haal item op $item = strtolower(trim($_GET['item'])); if ($item != '') { //Controleer item $toegestaan = array('pag1', 'pag2', 'pag3'); $bestandsnaam = $item . '.html'; if ((!in_array($item, $toegestaan)) || (!file_exists($bestandsnaam))) { exit('Ongeldige keuze.'); } //Include bestand require($bestandsnaam); } ?> |
Ah ok, dus meerdere values in dezelfde tabel. Het is niet mogelijk om met 1 insert meerdere records verdeeld over meerdere tabellen te inserten?quote:Op vrijdag 16 december 2005 23:39 schreef Light het volgende:
[..]
Insert into table (field1, field2, field3, field4)
values (1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6), (4, 5, 6, 7)
You get the idea
Ja klopt, dat heb ik gelezen.quote:Op vrijdag 16 december 2005 23:43 schreef Light het volgende:
[..]
Mail header injection is makkelijker te voorkomen. Volgens de mail-rfc's moeten de mailheaders gescheiden worden door \r\n, maar het is bekend dat sommige servers ook alleen \n als scheiding accepteren. Maar zolang er geen \n in het mailadres staat is mail header injection niet mogelijk (iig niet voor zover ik weet). Het ergste dat er dan nog kan gebeuren is dat de persoon in kwestie geen email krijgt. Da's weliswaar vervelend, maar niet echt ernstig qua veiligheidsrisico
Wellicht kun je wat met mysql_error(), door de output van deze functie na het connecten even te laten zien?quote:Op zaterdag 17 december 2005 12:55 schreef PunisherADF het volgende:
Hallo,
Ik heb nog steeds problemen met het connecten naar een MySQL database.
Ik heb Apache 2 / PHP 5 / Mysql 5 draaien, MySQL Front connect goed naar de database die werkt dus ook goed. PHP scripts draaien goed op de Apache 2 server maar zodra ik vanaf PHP een connect wil maken naar de MySQL db gaat er iets mis. Ik roep het mysql_connect() aan met de benodige argumenten maar het hele script doet dan niks. error_reporting staat op e_all maar die geeft ook niks weer. Zodra ik mysql_connect in me script zet lijkt het wel of niks meer werkt.
Iemand nog tips want ik kom er niet echt meer uit ?
Voor zover ik weet niet nee. Als je meerdere INSERTs doet die op elkaar leunen (zeg door een foreign key) dan kun je het beste dus eerst LOCK TABLES table1 WRITE, table2 WRITE gebruiken om te verzekeren dat er geen DELETE in de tussentijd kan plaatsvinden bijvoorbeeldquote:Op zaterdag 17 december 2005 13:03 schreef Swetsenegger het volgende:
[..]
Ah ok, dus meerdere values in dezelfde tabel. Het is niet mogelijk om met 1 insert meerdere records verdeeld over meerdere tabellen te inserten?
Tja, de regex voor een e-mailadres heeft al vele hoofdbrekens opgeleverd. Je kunt er nooit zeker van zijn, maar met zoiets is het toch wel redelijk te checken? Heb 't ff snel bedacht, kan goed zijn dat er iets niet aan klopt, dus feel free to enhance/fixquote:Op zaterdag 17 december 2005 13:06 schreef Swetsenegger het volgende:
[..]
Ja klopt, dat heb ik gelezen.
Maar sowieso wil ik wel op een valid mail adres checken.
Ik heb deze reguliere expressie trouwens eens gevonden voor een javascript check, maar ik begrijp er geen moer van:
/^[^@]+@[^@.]+\.[^@]*\w\w$/
Client side werkttie prima overigens
1 |
quote:Op zaterdag 17 december 2005 13:18 schreef JeRa het volgende:
[..]
Wellicht kun je wat met mysql_error(), door de output van deze functie na het connecten even te laten zien?
1 2 3 4 5 6 7 8 9 10 | $link = mysql_connect("localhost", "mysql_user", "mysql_password"); mysql_select_db("nonexistentdb", $link); echo mysql_errno($link) . ": " . mysql_error($link). "\n"; mysql_select_db("kossu", $link); mysql_query("SELECT * FROM nonexistenttable", $link); echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; ?> |
Volgens mij worden je errors naar een bestand weggeschreven ipv dat ze naar de output gaan.quote:Op zaterdag 17 december 2005 13:37 schreef PunisherADF het volgende:
[..]
[ code verwijderd ]
Ik heb ff dat scriptje rechtstreeks gebruikt, alleen dan zie ik nog steeds helemaal niks ? (met goede user/pass uiteraard)![]()
Niks met het mysql lijkt te werken. Als ik er een mysql_iets aanroep inzet doet de rest van het scripts niks meer.![]()
1 2 | mysql_error(); |
Oftewel, de MySQL-extension staat niet aan in die PHP-configuratiequote:Op zaterdag 17 december 2005 16:11 schreef PunisherADF het volgende:
Okeej,
[ code verwijderd ]
geeft in Apache error.log het volgende:
[Sat Dec 17 16:06:44 2005] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\database.php on line 6
Je precies, dan is het locken van tables toch wel verstandig?quote:Op zaterdag 17 december 2005 13:20 schreef JeRa het volgende:
[..]
Voor zover ik weet niet nee. Als je meerdere INSERTs doet die op elkaar leunen (zeg door een foreign key) dan kun je het beste dus eerst LOCK TABLES table1 WRITE, table2 WRITE gebruiken om te verzekeren dat er geen DELETE in de tussentijd kan plaatsvinden bijvoorbeeld
Locken in MySQL gebeurt net zoals in vrijwel alle andere situaties: hij wacht net zolang totdat de lock wordt vrijgegeven en neemt 'm daarna meteen inquote:Op zaterdag 17 december 2005 16:30 schreef Swetsenegger het volgende:
[..]
Je precies, dan is het locken van tables toch wel verstandig?
Wat geberut er als er een insert plaats vind, terwijl sql nog op locked staat van een vorige insert? Gewoon een foutmelding, of wacht sql tot de tables vrij zijn en voert hij dan pas de tweede insert uit.
Met andere woorden, moet je het nog opvangen, of doet mysql dat zelf?
Das mooiquote:Op zaterdag 17 december 2005 16:32 schreef JeRa het volgende:
[..]
Locken in MySQL gebeurt net zoals in vrijwel alle andere situaties: hij wacht net zolang totdat de lock wordt vrijgegeven en neemt 'm daarna meteen in
Haha super het werktquote:Op zaterdag 17 december 2005 16:13 schreef JeRa het volgende:
[..]
Oftewel, de MySQL-extension staat niet aan in die PHP-configuratiedie moet je eerst aanzetten door php.ini te wijzigen.
quote:Op zaterdag 17 december 2005 11:56 schreef wobbel het volgende:
M'n vraag uit het vorige topic...
Hoe moet mijn statement worden? met OR, AND of ||?
Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
OR, of ||quote:Op zaterdag 17 december 2005 17:22 schreef wobbel het volgende:
M'n vraag uit het vorige topic...
Hoe moet mijn statement worden? met OR, AND of ||?
Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
K thnx, loop daar nogal vaak mee te worstelenquote:Op zaterdag 17 december 2005 17:49 schreef Light het volgende:
[..]
OR, of ||
AND en && zijn iig fout, dan mag je alleen verder als beide zijden waar zijn.
Als je het gewoon voor jezelf in woorden zegt is het een stuk simpeler.quote:Op zaterdag 17 december 2005 17:56 schreef wobbel het volgende:
[..]
K thnx, loop daar nogal vaak mee te worstelen
quote:Op zaterdag 17 december 2005 11:56 schreef wobbel het volgende:
M'n vraag uit het vorige topic...
Hoe moet mijn statement worden? met OR, AND of ||?
Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
1 2 3 4 5 6 7 8 9 10 11 | // door } else { // doei } |
Probeer eens in te zien wat je wilt bereiken. Een reactie mag gewijzigd worden als $aap==1, of $god==1. Dat is in feite wat je zegtquote:Op zaterdag 17 december 2005 18:31 schreef wobbel het volgende:
Mmm, waarschijnlijk heb ik mijn vraag ook verkeerd gesteld, ik kan nu ook reacties van andere users bewerkenen daar gebruik ik de statement voor
Als $aap = 1 mag je door, als $aap 0 is mag je niet door MAAR als $god = 1 mag je altijd door
of moet ik daar 2 statements voor maken?
1 2 3 | nakendInEenWeideMetBier(); } |
Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnenquote:Op zaterdag 17 december 2005 18:36 schreef JeRa het volgende:
[..]
Probeer eens in te zien wat je wilt bereiken. Een reactie mag gewijzigd worden als $aap==1, of $god==1. Dat is in feite wat je zegtdus:
[ code verwijderd ]
Wat denk je dat || doet? Die haakjes hebben er verschrikkelijk weinig mee te makenquote:Op zaterdag 17 december 2005 18:50 schreef wobbel het volgende:
[..]
Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnen, maargoed, je kan dus met haakjes werken
Als een van de twee 1 is mag je door.quote:Op zaterdag 17 december 2005 18:50 schreef wobbel het volgende:
[..]
Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnen, maargoed, je kan dus met haakjes werken
Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'quote:Op zaterdag 17 december 2005 18:53 schreef Swetsenegger het volgende:
[..]
Als een van de twee 1 is mag je door.
Wanneer beide 1 zijn, is ook 1 van de twee 1 en mag je dus door.
Overigens wel vreemd dat je En user EN admin tegelijk kan zijn
Dan is aap toch altijd 1 als god 1 is. Je kan immers geen admin zijn en NIET ingeloggedquote:Op zaterdag 17 december 2005 18:55 schreef JeRa het volgende:
[..]
Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'
ik kijk eerst of de reactie wel van jou, zoja ($aap = 1)...dan mag je door...quote:Op zaterdag 17 december 2005 18:55 schreef JeRa het volgende:
[..]
Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'
Die haakjes maken idd niet uit, maar als je niet bent ingelogd kom je niet eens zo ver in me script dat je doormag, dus dat doet er niet toe.quote:Op zaterdag 17 december 2005 18:57 schreef Swetsenegger het volgende:
[..]
Dan is aap toch altijd 1 als god 1 is. Je kan immers geen admin zijn en NIET ingelogged
Overigens maakt dat geen verscil voor de ||
1 2 3 4 5 6 7 8 | if(($aap == 1 || $god == 1) || ($aap == 1 && $god == 1)) { echo 'je mag door'; } else { echo 'gaat heen! verderfelijk creatuur opgerezen uit de poelen van de verdoemenis in de diepste krochten van de aarde waar het vuur nooit dooft' } ?> |
Ja dat was al een poosje duidelijk hoorquote:Op zaterdag 17 december 2005 19:08 schreef wobbel het volgende:
Dus als beide 1 is mag je door, is maar 1 van de 2 goed (dus of $aap is goed, of $admin is goed) dan mag je door, maar als beide 0 zijn mag je niet door
Wie heeft het over haakjesquote:Die haakjes maken idd niet uit, maar als je niet bent ingelogd kom je niet eens zo ver in me script dat je doormag, dus dat doet er niet toe.
Nee dusquote:
1 2 3 4 5 6 7 8 | if($aap == 1 || $god == 1) { echo 'je mag door'; } else { echo 'gaat heen! verderfelijk creatuur opgerezen uit de poelen van de verdoemenis in de diepste krochten van de aarde waar het vuur nooit dooft' } ?> |
Het werktquote:
1 2 3 | if(($MySQL_Reactie_Assoc['UserId'] == $_SESSION['IdLid'] || $main->Rechten(1) == 1) || ($MySQL_Reactie_Assoc['UserId'] == $_SESSION['IdLid'] && $main->Rechten(1) == 1)) ?> |
1 2 | || $main->Rechten(1) == 1) ) |
Dat proberen we 'm al een poosje uit te leggenquote:Op zaterdag 17 december 2005 20:42 schreef SuperRembo het volgende:
De laatste helft is overbodig.
[ code verwijderd ]
Dit geeft hetzelfde resultaat.
LOCK TABLES table1 WRITE, table2 READ, table3 WRITEquote:Op zaterdag 17 december 2005 23:41 schreef Swetsenegger het volgende:
Moet ik bij een UNLOCK TABLES specificeren welke tabellen het om gaat, of worden gewoon alle tabellen weer vrij gegeven?
Hmz, kan de zooi ook naar innoDB tabellen omzetten. Dan kan ik transacties gebruiken.
Mooi, van de mysql handleiding begreep ik wel dat je in het LOCK TABLES statement alle tables moet opnemen welke je in die thread gaat gebruiken.quote:Op zaterdag 17 december 2005 23:44 schreef JeRa het volgende:
[..]
LOCK TABLES table1 WRITE, table2 READ, table3 WRITE
...
UNLOCK TABLES
Hij houdt bij welke tables je gelocked hebt voor de threaden je geeft met een UNLOCK in één keer alle locks weer vrij.
Ik stel dan meestal een nietszeggende vraag over LOCK TABLES ofzoquote:Op zondag 18 december 2005 16:55 schreef Nevermind het volgende:
Ik wil dit topic weer in MyAT, maar ik heb niks te melden, noch op te lossen. Daarom toch maar een schaamteloze tvp met wat geblaat eromheen om het niet te veel te laten opvallen
1 2 3 | print("<tr><td class=rowhead width=1%>Download</td><td width=99% align=left><a class=\"index\" href=\"download.php/$id/" . rawurlencode($row["filename"]) . "\">" . htmlspecialchars($row["filename"]) . "</a></td></tr>"); ?> |
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 | require_once("include/bittorrent.php"); dbconn(); hit_start(); if (!preg_match(':^/(\d{1,10})/(.+)\.torrent$:', $_SERVER["PATH_INFO"], $matches)) httperr(); $id = 0 + $matches[1]; if (!$id) httperr(); hit_count(); $res = mysql_query("SELECT name FROM torrents WHERE id = $id") or sqlerr(__FILE__, __LINE__); $row = mysql_fetch_assoc($res); $fn = "$torrent_dir/$id.torrent"; if (!$row || !is_file($fn) || !is_readable($fn)) httperr(); mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = $id"); header("Content-Type: application/x-bittorrent"); readfile($fn); hit_end(); ?> |
$fn = "$torrent_dir/$id.torrent";quote:Op zondag 18 december 2005 19:58 schreef qu63 het volgende:
nu mn echte vraag dan maar
[ code verwijderd ]
resulteerd in deze link: http://tracker.qu63.nl/download.php/1/24.2.torrent
mijn download.php:
[ code verwijderd ]
alleen die link geeft een foutmelding als ik erop klik
" No input file specified. "
Help
dat zit in "include/bittorrent.php"quote:Op zondag 18 december 2005 20:03 schreef Swetsenegger het volgende:
[..]
$fn = "$torrent_dir/$id.torrent";
Waar komt $torrent_dir en $id.torrent vandaan? Want het ziet er naar uit dat er dus geen file te readen valt
readfile($fn);
Correctquote:Op zondag 18 december 2005 18:43 schreef Swetsenegger het volgende:
[..]
Ik stel dan meestal een nietszeggende vraag over LOCK TABLES ofzo.
-edit- echte vraag. Ik neem aan dat er aan het eind van het script gewoon unlocked wordt? net als dat mysql_close automatisch plaatsvind aan het eind van het script?
quote:LOCK TABLES locks tables for the current thread. If any of the tables are locked by other threads, it blocks until all locks can be acquired. UNLOCK TABLES releases any locks held by the current thread. All tables that are locked by the current thread are implicitly unlocked when the thread issues another LOCK TABLES, or when the connection to the server is closed.
En daarom is het ook een goed idee om altijd UNLOCK TABLES uit te voerenquote:Op zondag 18 december 2005 20:12 schreef SuperRembo het volgende:
Tenzij je een persistant connection gebruikt. Dan blijven alle locks en transactions open als je het zelf niet doet (of als je php script een fout veroorzaakt en de unlock niet uitvoert).
- PHP-versiequote:Op zondag 18 december 2005 23:21 schreef DionysuZ het volgende:
Als ik in een file.php include("../foo.php"); gebruik en in foo.php heb ik ook een include("bar.php") dan werkt het op sommige servers als: bar.php moet in dezelfde directory staan als file.php. Op weer andere servers doet ie et wel zoals ik wil (bar.php staat bij foo.php in de dir). Hoe komt dit? Oudere php versie ofzo?
Ik denk dat daar het probleem zitquote:Op maandag 19 december 2005 09:34 schreef Desdinova het volgende:
[...] De code is te groot en rommelig [...]
1 2 3 | $this->resultaten = mysql_query(mysql_real_escape_string($query),$this->c_id); ?> |
quote:Op maandag 19 december 2005 15:59 schreef DionysuZ het volgende:
ik weet niet echt precies wat je wil doen, maar misschien is preg_replace() wat voor je?
1 2 3 4 | $pattern = '@<a href=\"#\".*(.*?)</a>@'; $table = preg_replace($pattern, '\\1',$table); ?> |
Ik ben niet zo'n expert met reguliere expressies, maar dit lijkt te werken:quote:Op maandag 19 december 2005 15:52 schreef Desdinova het volgende:
ik heb een string met een linkje:
'hee woeptiedoe <a href="#" javascriptenzolinkje hier>klik</a> en nog wat'.
nu wil ik alles verwijderen vanaf <a href="#" tot en met >. linkjes die niet # als href hebben blijven op die manier gewoon intact. de </a> blijft ook gewoon staan maar dat is niet zo erg.
iemand n keyword/functie voor me waar ik op kan googlen?
1 2 3 4 5 6 | $str = 'hoi test <a href="#" bladiebla>linkje</a> nogwat'; echo $str . "<br>"; $str = preg_replace( "/\<a href=\"#\"(.+)>(.+)<\/a>/is", '\2', $str ); echo $str; ?> |
gvdquote:
en als ik nou <a blalalalalala href="#" bllalalalala>bloep</a> doe?quote:Op maandag 19 december 2005 17:40 schreef Desdinova het volgende:
[..]
gvd
die kuttag kloot met mn code.
zo hoortie:
$pattern = '@<a href=\"#\".*?>(.*?)</a>@';
$table = preg_replace($pattern, '\\1',$table);
dat magquote:Op maandag 19 december 2005 17:47 schreef DionysuZ het volgende:
[..]
en als ik nou <a blalalalalala href="#" bllalalalala>bloep</a> doe?
1 2 3 4 5 6 7 8 9 | //Sessie ouder dan 5 (5 x 60 seconden) minuten? if ((time() - $_SESSION['time']) > 300) { unset($_SESSION['time']); header("Location:index.php"); } else { $_SESSION['time'] = time(); } ?> |
Als je die code op index.php zet krijg je een oneindige loop.quote:Op maandag 19 december 2005 21:28 schreef SkaterSam het volgende:
Ik doe altijd zo: een $_SESSION['time'] aanmaken met de waarde time() en dan controleren op elke pagina, met zoiets:
[ code verwijderd ]
Ik vond het wel een slimme methode![]()
1 2 3 4 5 6 7 | if (isset($_SESSION['time'])) { //hier die code } else { // maak hier een nieuwe sessie, of een header, wat je maar wil } ?> |
Ik gebruik dus inderdaad standaard sessies.quote:Op maandag 19 december 2005 21:01 schreef JeRa het volgende:
Als je een eigen sessie-systeem hebt is het makkelijk:
1) Haal de session key op uit de cookie
2) Controleer of de session key nog in de database met sessions staat, zo niet: session verlopen
Als je de standaard PHP sessions gebruikt weet ik het niet zeker, maar je zou kunnen controleren op de waarde van PHPSESSID in de cookie of controleren of een cruciale session-variabele aanwezig is (userid bijvoorbeeld), zo niet - session verlopen.
1 2 3 | $db->query("INSERT INTO nieuws (nieuws_titel, nieuws_bericht, nieuws_auteur, nieuws_categorie_id, nieuws_status) VALUES ('" . $titel . "','" . $text . "','" . $auteur . "','" . $categorie . "','" . $status . "')"); ?> |
1 2 3 | $db->query("INSERT INTO nieuws_categorie (nieuws_categorie_naam) VALUES ('" . $categorie . "')"); ?> |
quote:Op zondag 18 december 2005 19:58 schreef qu63 het volgende:
nu mn echte vraag dan maar
[ code verwijderd ]
resulteerd in deze link: http://tracker.qu63.nl/download.php/1/24.2.torrent
mijn download.php:
[ code verwijderd ]
alleen die link geeft een foutmelding als ik erop klik
" No input file specified. "
Help
a) bijdehante opmerkingquote:Op dinsdag 20 december 2005 00:30 schreef Ro�a� het volgende:
a) mysql_real_escape_string gebruiken
b) header alleen doen als mysql_error() geen error aangeeft: if(!mysql_error()) {header() exit(); } else { //waarschuwing }
c) slaap lekker, ik ga me nest in.
-r-
hij geeft die foutmelding als je op http://tracker.qu63.nl/download.php/1/24.2.torrent klikt.quote:Op dinsdag 20 december 2005 00:35 schreef JeRa het volgende:
@qu63:
Op welke regel geeft hij die foutmelding?
Is er niet de mogelijkheid dat die foutmelding wordt gegeven in die include van bittorrent.php? Heb je daar al naar gekeken? Wellicht kun je er dan achterkomen wat ervoor zorgt dat ie die foutmelding geeftquote:Op dinsdag 20 december 2005 00:36 schreef qu63 het volgende:
[..]
hij geeft die foutmelding als je op http://tracker.qu63.nl/download.php/1/24.2.torrent klikt.
niet op een regel dus, maar dat is het enige wat hij uitspuugd
Wat is daar bijdehand aan?quote:Op dinsdag 20 december 2005 00:35 schreef SkaterSam het volgende:
[..]
a) bijdehante opmerking
b) dat was ik dus vergeten om in de functie te zetten, ik zie het al, bedankt![]()
c) welterusten![]()
Goedbedoeld, dat zeker, maar ik ben niet zooo dom dat ik dat zou vergeten, hij staat in mijn query() functie er gewoon bij, misschien was het was hard van mequote:Op dinsdag 20 december 2005 00:38 schreef JeRa het volgende:
Wat is daar bijdehand aan?
Tja, dat had hij niet kunnen zien. En wat bedoel je met dat ie in je query()-functie erbij staat? Je gooit toch geen mysql_real_escape_string over je hele query he?quote:Op dinsdag 20 december 2005 00:40 schreef SkaterSam het volgende:
[..]
Goedbedoeld, dat zeker, maar ik ben niet zooo dom dat ik dat zou vergeten, hij staat in mijn query() functie er gewoon bij, misschien was het was hard van me
http://tracker.qu63.nl/bittorrent.txtquote:Op dinsdag 20 december 2005 00:38 schreef JeRa het volgende:
[..]
Is er niet de mogelijkheid dat die foutmelding wordt gegeven in die include van bittorrent.php? Heb je daar al naar gekeken? Wellicht kun je er dan achterkomen wat ervoor zorgt dat ie die foutmelding geeft
Doe eens in plaats van die laatste header() en readfile() een 'echo $fn' om te zien wat de filename precies is die wordt gegenereerdquote:Op dinsdag 20 december 2005 00:50 schreef qu63 het volgende:
[..]
http://tracker.qu63.nl/bittorrent.txt
heb em daar maar ff geplaatst
heb geen idee waar de fout kan zitten
quote:Op dinsdag 20 december 2005 00:42 schreef JeRa het volgende:
Tja, dat had hij niet kunnen zien. En wat bedoel je met dat ie in je query()-functie erbij staat? Je gooit toch geen mysql_real_escape_string over je hele query he?
Verder is de foutmelding best wel interessant enzo
1 2 3 | $this->resultaten = mysql_query(mysql_real_escape_string($query),$this->c_id); ?> |
1 2 3 | mysql_query("SELECT * FROM bla WHERE id= ?", $check($id)) ?> |
in welke pagina?quote:Op dinsdag 20 december 2005 00:52 schreef JeRa het volgende:
[..]
Doe eens in plaats van die laatste header() en readfile() een 'echo $fn' om te zien wat de filename precies is die wordt gegenereerd
okquote:Op dinsdag 20 december 2005 00:55 schreef JeRa het volgende:
[..]
In jouw script dat je had geposthet kleinere dus.
Zet eens op strategische plekken een exit() neer in jouw script, zodat je weet wanneer hij die foutmelding geeft. Te beginnen met helemaal bovenaanquote:Op dinsdag 20 december 2005 01:00 schreef qu63 het volgende:
nog steeds No input file specified.
ik heb het veranderd in download.php
ik blijf diezelfde melding krijgenquote:Op dinsdag 20 december 2005 01:01 schreef JeRa het volgende:
[..]
Zet eens op strategische plekken een exit() neer in jouw script, zodat je weet wanneer hij die foutmelding geeft. Te beginnen met helemaal bovenaanzolang je niets ziet verplaats je die exit() een regel naar beneden totdat je de foutmelding weer krijgt, en je weet waar het dus foutgaat
het lijkt er wel op jaquote:Op dinsdag 20 december 2005 01:05 schreef SkaterSam het volgende:
Als je zoekt op Google naar 'php No input file specified' krijg je oa het volgende: http://www.byte.nl/docs/Php-Cgi-Mode.html, misschien is dat iets?
.htaccess ook met dubbel s?quote:Op dinsdag 20 december 2005 01:11 schreef qu63 het volgende:
.htacces aangemaakt in de map tracker.qu63.nl (de root voor de tracker dus, dezelfde map waar ook download.php in staat) maar helpt niks
nu welquote:
Dat zou wel moeten werken, eventueel met multiviews aan.quote:Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:
Even iets anders, de URL: http://tracker.qu63.nl/download.php/1/24.2.torrent
Klopt deze wel? Heb je ergens gedefinieerd dat download.php/1/24.2.torrent moet verwijzen naar download.php? Op deze manier probeer je de map 'download.php' te openen, vervolgens de map '1' en vervolgens gaat ie proberen te zoeken naar 24.2.torrent. Ik neem aan dat dat niet is wat je wilt.
ik heb nu "allow from all" toegevoegd aan mn .htaccess , nu werkt het wel gewoon.quote:Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:
Ik denk niet dat je dat moet doen. Die HTTP 500 error krijg je omdat je .htaccess niet goed in elkaar steekt - ik vermoed dat PHP-CGI al is ingeschakeld op jouw webserver, en dat je daarom die foutmelding krijgt. Die werk je niet weg door nóg een keer PHP-CGI proberen in te schakelen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $handle = opendir($dir); //Eventuele direcories niet in de lijst while (false !== ($file = readdir($handle))) { if (!is_dir("./$file")) { $opdelen = explode(".", $file); //indexbestand wegfilteren if ($opdelen[0]<>"") { echo "<option value=$opdelen[0]>" . htmlspecialchars($opdelen[0]) . '</option>'; } } } closedir($handle); |
ik heb geen idee welk stukje code die verwijzing aanmaakt, dat is een beetje het probleemquote:Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:
Even iets anders, de URL: http://tracker.qu63.nl/download.php/1/24.2.torrent
Klopt deze wel? Heb je ergens gedefinieerd dat download.php/1/24.2.torrent moet verwijzen naar download.php? Op deze manier probeer je de map 'download.php' te openen, vervolgens de map '1' en vervolgens gaat ie proberen te zoeken naar 24.2.torrent. Ik neem aan dat dat niet is wat je wilt.
Je option value moet tussen haakjes staan, zeker met spaties ertussen. Variabelen (of arrays) in je quotes zetten is sowieso 'ranzig' programmeren:quote:Op dinsdag 20 december 2005 11:00 schreef RichardQuest het volgende:
Ik heb een array gemaakt van alle bestanden in de directory in een array stopt en de .html-extensie eruit haalt zodat het wat mooier is (explode). Probleem is dat spaties in de bestandnaam wel meegenomen worden in de lijst, maar niet in de option value![]()
[ 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 | $dir = 'd:'; // test $handle = opendir($dir); echo '<select>'; // test while (false !== ($file = readdir($handle))) { if (!is_dir("./$file")) { $opdelen = explode(".", $file); //indexbestand wegfilteren if ($opdelen[0]<>"") { echo '<option value="'.$opdelen[0].'">' . htmlspecialchars($opdelen[0]) . '</option>'; } } } echo '</select>'; // test closedir($handle); ?> |
In je database maak je een DATE of DATETIME veld aan.quote:Op dinsdag 20 december 2005 15:01 schreef SkaterSam het volgende:
Ik ben bezig met een soort van weblog systeem, maar nu vroeg ik me af hoe je de datum zoals op een weblog krijgt. Dat wil dus zeggen eerst een h1 met daarin de datum, en daaronder alle posts van die specifieke datum op tijdsvolgorde. Iets als dit:
Vrijdag 13 oktober
Log 1 - 16.00
Log 2 - 15.00
Donderdag 12 oktober
Log 3 - 21.00
Afijn, jullie begrijpen het idee. Ik vroeg me af of het kon met een query, er van uitgaande dat je maar een tabel hebt. Moet je dan twee rijen hebben in de DB, een met datum en een met tijd? Zowiezo begin je met een while() loop om alle data op te halen uit de query (SELECT * FROM table ORDER BY date), maar moet je dan nog een query uitvoeren? En nog een while() loop?
Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.quote:Op dinsdag 20 december 2005 15:07 schreef Swetsenegger het volgende:
In je database maak je een DATE of DATETIME veld aan.
En vervolgens trek je ze er met een query uit
SELECT * FROM table ORDER BY datum.
Dan krijg je de records dus gegroepeerd op datum terug.
waarschijnlijk kan je iets doen in de trend van:quote:Op dinsdag 20 december 2005 15:17 schreef SkaterSam het volgende:
[..]
Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.
de waarde welke je terug krijgt van $row['datum'] sla je op in een var $prev_date.quote:Op dinsdag 20 december 2005 15:17 schreef SkaterSam het volgende:
[..]
Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.
1 2 3 4 5 6 | // je datum resultaat is veranderd. het komende record heeft dus een andere datum echo'<td style="font-weight:bold">'.$row['datum'].'</td>'; }else{ //datum hetzelfde dus echo geen regel met datum } |
1 2 3 | preg_match('/^[\w\-\s]*$/i', $string) ?> |
1 2 3 4 5 | FROM order_content AS oc LEFT JOIN produkten AS p USING (product_id) WHERE oc.order_id=5 |
1 2 3 4 5 6 7 8 | FROM order_content AS oc LEFT JOIN produkten AS p USING (product_id) , orders AS o RIGHT JOIN users as u USING (user_id) WHERE oc.order_id=5 |
orders dus om order_id te kunnen koppelen aan user_id.quote:Op dinsdag 20 december 2005 21:11 schreef SuperRembo het volgende:
Het eerste wat me opvalt is de tabel orders. Waarom staat die in de tweede query, je doet er niets mee
[edit]
Je gebruikt het om de user_id bij de order te halen, alleen specificeer je helemaal geen relatie tussen order_content en orders.
(Ik vind die USING syntax niet erg overzichtelijk als er meer dan 2 tabellen worden gebruikt)
1 2 3 4 5 6 7 8 9 10 11 12 13 | u.name, oc.number, p.articlecode, p.name, oc.giftwrap, p.first_price, p.second_price FROM order o INNER JOIN order_content oc ON oc_order_id = o.order_id INNER JOIN produkten p ON p.product_id = oc.product_id INNER JOIN users u ON u.user_id = o.user_id WHERE o.order_id = 5 |
Mjah, ik heb de tabel verzuimt products te noemen. Dat lijkt me nou toch niet echt een groot probleemquote:Op dinsdag 20 december 2005 21:23 schreef SuperRembo het volgende:
[ code verwijderd ]
Je zou er ook LEFT JOINs van kunnen maken, maar een order zonder user of produkten lijkt me niet zo logisch.
(Tabel produkten, kolom product_id![]()
)
1 2 3 | INNER JOIN order_content oc ON oc_order_id = o.order_id INNER JOIN pro' at line 9 |
quote:Op dinsdag 20 december 2005 21:42 schreef SuperRembo het volgende:
Dat moest natuurlijk oc.order_id zijn. En order moet orders zijn.
Ja, dat kan.quote:Op donderdag 22 december 2005 16:20 schreef SkaterSam het volgende:
kan dit: $_SESSION['var1']['var2'] , dus een een variabele binnen de array var1 ?
1 2 3 4 5 | Zoeken naar filmpje:<br> <input type="text" name="zoekterm" size="30"><br> <input type="submit" name="submit" value="Zoeken"> |
1 2 3 | $sql = "SELECT * FROM filmpjes WHERE titel LIKE '%$HTTP_POST_VARS[zoekterm]%' ORDER BY titel ASC"; ?> |
1 2 3 4 5 6 7 | if(strlen($_POST['zoekterm']) < 3){ // foutmelding } else { // select query :-) } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function checkError($string) { if (array_key_exists($string, $this->error)) { return "<span class=\"error\">" . $this->error[$string] . "</span>"; } else { return "huh"; } } function setError($field, $message) { $this->error[$field] = $message; $this->num_error = count($this->error); } ?> |
1 2 3 | $form->setError("username", "username is niet correct"); ?> |
Is er iets verkeerds aan hoe ik hem aanroep?quote:Op donderdag 22 december 2005 23:58 schreef DionysuZ het volgende:
gebruik je het wel in een class?
edit: nevermind ik zie hoe je em aanroept
Nee het beantwoordt mijn vraagquote:Op vrijdag 23 december 2005 00:00 schreef SkaterSam het volgende:
[..]
Is er iets verkeerds aan hoe ik hem aanroep?
Niet de mijnequote:
Als die twee functions die je liet zien in een class staan vermoed ik dat je $fout out of scope laat gaan, maar dat is nogal lastig te zeggen zo zonder verdere codequote:Op vrijdag 23 december 2005 02:39 schreef SkaterSam het volgende:
Hmm, ik heb de simpelste oplossing gekozen om fouten te voorkomen, en gewoon een login class gemaakt met alle benodigdheden daarin.
1 2 3 4 5 6 7 8 9 | if ($login->logged_in == true) { header("Location:../admin/main.php"); } else { $_SESSION['error_username'] = $login->checkError('username'); $_SESSION['error_wachtwoord'] = $login->checkError('wachtwoord'); header("Location:../admin/index.php"); } ?> |
1 2 3 4 5 6 | } else { $login->checkError('username'); $login->checkError('wachtwoord'); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function checkError($string) { if (array_key_exists($string, $this->error)) { echo "<span class=\"error\">" . $this->error[$string] . "</span>"; } else { return false; } } function setError($field, $message) { $this->error[$field] = $message; $this->num_error = count($this->error); } ?> |
Ook met 'return' in plaats van echo in de checkError functie pakt die hem niet.quote:Op vrijdag 23 december 2005 15:22 schreef JeRa het volgende:
Ik vind dat niet zo vreemd - je doet immers een 'echo' en geen 'return'
Hoe ziet je class eruit? Wat heb je nog meer geprobeerd qua debuggen?quote:Op vrijdag 23 december 2005 15:32 schreef SkaterSam het volgende:
[..]
Ook met 'return' in plaats van echo in de checkError functie pakt die hem niet.
Eigenlijk wilde ik dat niet eens noemen aangezien je de vorige keer zo verhit reageerde toen iemand je vroeg of je je strings in de query escapede (want je was niet totaal dom ofzo)quote:Op vrijdag 23 december 2005 16:05 schreef SkaterSam het volgende:
Hoeren! Ik had gewoon niet session_start() aangeroepen boven het script![]()
Ja misschien toch maar wel, maar gelukkig is dit de thread voor dummies, ik begin me aardig mee te identificerenquote:Op vrijdag 23 december 2005 16:11 schreef JeRa het volgende:
Eigenlijk wilde ik dat niet eens noemen aangezien je de vorige keer zo verhit reageerde toen iemand je vroeg of je je strings in de query escapede (want je was niet totaal dom ofzo)had 't dus toch beter kunnen doen.
1 2 3 4 5 6 7 8 9 10 | $sql = <<< ___SQL SELECT * FROM axs_events WHERE evt_loc_id = {$loc_id} AND evt_date >= '{$date}' ORDER BY evt_date ASC ___SQL; |
Thnx!quote:Op vrijdag 23 december 2005 17:41 schreef JeRa het volgende:
Die query zit best gaar in elkaar, een groter-dan-of-gelijk-aan-vergelijking doen met een string?
En wat je daar ziet is heredoc syntax, een alternatief voor quotes. Die <<< geeft het begin van de heredoc aan, en die ___SQL is een willekeurige identifier die het begin en einde aangeeft.
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 | $fp = fsockopen("host.com", 80, $errno, $errstr, 30); if(!$fp) { echo "$errstr ($errno)<br />\n"; } else { $data = "foo=bar\r\n"; $out = "POST /scipt.php HTTP/1.1\r\n"; $out .= "Host: host.com\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out.="Content-Length: " .strlen($data)."\r\n"; $out.=$data ."\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $content .= fgets($fp, 128); } fclose($fp); echo $content; } ?> |
1 2 3 4 | Your browser sent a request that this server could not understand. Request header field is missing colon separator. |
str_replace()quote:Op zondag 25 december 2005 10:05 schreef Chandler het volgende:
Mensen even een korte vraag, hoe kan ik een & omzetten zodat het niet in de URL als een & gezien wordt...want nu kan ik een bestand niet verwijderen
D'oh, had ik moeten kunnen denken.quote:
Het zal vast wel met een simpele functie kunnen, maar volgens mij werkt dit wel:quote:Op zondag 25 december 2005 17:04 schreef user931989 het volgende:
hoe kan ik als ik een getal heb, bv. 10000000, hier duizendtalpunten tussen laten zetten?
Ik bedoel dus dit:
invoer: 10000000
uitvoer: 10.000.000
het moet ook werken met bv. 93185365
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $getal = 1234567890; settype( $getal, "string" ); $nieuw = ''; while( strlen( $getal ) > 3 ) { $nieuw = '.' . substr( $getal, -3 ) . $nieuw; $getal = substr( $getal, 0, strlen( $getal ) - 3 ); } $nieuw = $getal . $nieuw; echo $nieuw; ?> |
quote:Op zondag 25 december 2005 17:26 schreef wobbel het volgende:
Als ik minuten en seconden heb, hoe kan ik deze omtoveren in seconden?
Bijv:
$blaat = "3:23";
Hoe maak ik daar seconden van? (203 seconden)
Eerst uit elkaar trekken bij de : (hoe????) en dan voor de : x 60 en dan achter de : erbij optellen
1 2 3 4 5 6 7 8 9 10 11 | $lengte = "3:23"; $split = explode( ':', $lengte ); settype( $split[0], "int" ); settype( $split[1], "int" ); $seconden = $split[0] * 60 + $split[1]; echo $seconden; |
met number_format();quote:Op zondag 25 december 2005 17:04 schreef user931989 het volgende:
hoe kan ik als ik een getal heb, bv. 10000000, hier duizendtalpunten tussen laten zetten?
Ik bedoel dus dit:
invoer: 10000000
uitvoer: 10.000.000
het moet ook werken met bv. 93185365
quote:Op maandag 26 december 2005 11:36 schreef DutchBlood het volgende:
Ik heb twee tabellen.
Eentje met onderdelen erin, met daarin een veld catid.
Dat veld catid verwijst naar het catid van de categorie waar het onderdeel in valt. Nu wil ik dus dmv een query de onderdelen selecten en meteen de naam van de categorie ophalen.
Dat lijkt me te doen dmv. Joins, maar hoe?
1 2 3 4 5 6 | o.whatever, c.name FROM onderdelen o LEFT JOIN catagory c ON o.cat_id = c.cat_id WHERE o.id=".$_GET['id'] |
Apache geeft bij mij een errorquote:Op maandag 26 december 2005 12:26 schreef pc-fr34k het volgende:
Even een schopje voor mijn vraagje:
[PHP/(My)SQL] voor dummies - Deel 18
Ja, daarom ook mijn vraag, wat doe ik fout. Als ik stukken weglaat die voor de POST-data zorgen dan krijg ik wel de pagina maar te zien dat er geen POST-data is verzonden.quote:Op maandag 26 december 2005 13:06 schreef SuperRembo het volgende:
[..]
Apache geeft bij mij een error
Bad Request
Your browser sent a request that this server could not understand.
Request header field is missing colon separator.
Het is geluk, bedankt.quote:Op maandag 26 december 2005 14:41 schreef SuperRembo het volgende:
Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18quote:Op dinsdag 27 december 2005 11:43 schreef wobbel het volgende:
Ook nogmaals mijn vraag dan maar
[PHP/(My)SQL] voor dummies - Deel 18
dan is die post later geeditquote:Op dinsdag 27 december 2005 12:00 schreef freiss het volgende:
[..]
Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18
Het is de bedoeling dat bij een HTTP request de headers eerst komenk, vervolgens een lege regel (newline), en daarna de data. Op de manier zoals het eerst gedaan werd zat de header ná de data, en dat gaat dus niet werkenquote:Op maandag 26 december 2005 14:41 schreef SuperRembo het volgende:
Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
Dat was inderdaad het evrwarrende, en ik moest \r\n veranderen naar \n. Nu werkt het iig.quote:Op dinsdag 27 december 2005 21:18 schreef SuperRembo het volgende:
Ja dat zag ik later ook.
Het komt alleen een beetje vreemd over dat je eerst de header "Connection Close" stuurt en daarna pas de data. Maar die header betekent natuurlijk niet dat de connectie meteen dicht gegooid moet worden, maar dat de connectie dicht moet als ie klaar is.
Dat is afhankelijk van het OS van de server.quote:Op dinsdag 27 december 2005 22:39 schreef pc-fr34k het volgende:
\r\n veranderen naar \n.
Oh, handig, dan weet ik dat ook weer. Leer elke dag nog wat.quote:Op dinsdag 27 december 2005 22:40 schreef Swetsenegger het volgende:
[..]
Dat is afhankelijk van het OS van de server.
\r\n is windows \n is Linux.
1 2 3 | $aantal = mysql_query("SELECT COUNT(*) FROM tabel"); ?> |
je wilt alles in een loop?quote:Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
[ code verwijderd ]
Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
<?phpquote:Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
[ code verwijderd ]
Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
1 2 3 | $query = mysql_query("SELECT * FROM xxx") ?> |
1 2 3 | $aantal = mysql_num_rows($query) ?> |
1 2 3 4 5 | $result = mysql_query("SELECT COUNT(*) FROM tabel"); $row = mysql_fetch_row($result); $aantal = $row[0]; ?> |
Ja, dat kan. Maar als je verder niets doet met de rijen uit de tabel dan is het nogal onzinnig om ze allemaal in te lezen. Daarnaast is een count in mysql sneller, omdat niet alle data hoeft te worden overgepompt van mysql naar php. Ofwel, het werkt, maar het is sterk af te raden.quote:Op woensdag 28 december 2005 11:19 schreef freiss het volgende:
Volgens mij kan je gewoon:
[ code verwijderd ]
doen, en dan aanroepen met
[ code verwijderd ]
Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberenquote:Op zondag 25 december 2005 18:57 schreef Swetsenegger het volgende:
Toevallig heb ik ook een url probleempje.
Welke kan ik nu beter gebruiken? rawurlencode of urlencode?
Het gaat om een link meegestuurd in een e-mail, met daarin een bevestigings token van 32 karakters.
Dit werkte prima in OE en Entourage (microsofts mail client voor Mac), maar niet in Outlook 2000, welke de url automatisch encode. Aangezien mijn script niet decode, maar wel de lengte van de token checked, geeft hij een foutmelding.
Ik wil nu dus de tokenencode, mailen, en de bevestigingspagina de token weer laten encoden.
Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.quote:Op woensdag 28 december 2005 12:14 schreef wobbel het volgende:
ik doe voor ál mijn SQL inserts/updates/selects/deletes altijd addslashes();
En mocht bij DELETE maar 1 record verwijderd worden, dan doe ik ook LIMIT 1
En bij selecteren ga ik eerst kijken of de $_POST en/of $_GET wel bestaat.
Is dat veilig genoeg?
1 2 3 4 5 6 7 8 | if(!get_magic_quotes_gpc()) { $_POST['name']=addslashes($_POST['name']); $_POST['address']=addslashes($_POST['address']); $_POST['city']=addslashes($_POST['city']); } ?> |
Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.quote:Op woensdag 28 december 2005 12:20 schreef Light het volgende:
[..]
Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberen
Hier mijn activate scriptje (ff iets simpels gekozen)quote:Op woensdag 28 december 2005 12:21 schreef Swetsenegger het volgende:
[..]
Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.
[ code verwijderd ]
Delete, inderdaad limit 1 als het om 1 record gaat, en if ($_SERVER['REQUEST_METHOD']=='GET') is wel handig.
Maar je controleert geen userinput op die manier, je probeert alleen de schade te beperken indien er verkeerde input is. Handiger is het om te controlere of dat wat in je GET staat overeenkomt met wat je verwacht.
Verwacht je bv een id terug, controleer dan op is_numeric. Verwacht je een string van een bepaalde lengte (bv een token van 32 karakters) controleer dan met strlen of de lengte van de GET overeenkomt met bv 32 karakters.
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 | php session_start(); /* Load main library Files */ require_once("lib/htconfig.php"); require_once($GLOBALS['SITE']['LibPath'] . "/main.php"); /* Register page title */ $tml->RegisterVar ("DESC", "Activeren"); if(!$_GET['username'] || !$_GET['hash']) { $error->Report ("Niet alle (verplichte)variablen zijn toegewezen."); } else { $MySQL_Username_Select = mysql_query("SELECT count(*) FROM Leden WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'"); $MySQL_Username_Count = mysql_result($MySQL_Username_Select, 0); if($MySQL_Username_Count == 1) { $MySQL_Actief_Update = "UPDATE Leden SET Actief = '2' WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'"; $MySQL_Actief_Query = mysql_query($MySQL_Actief_Update) or die("Fout in query op regel " . __LINE__); $main->Message ("Geactiveerd", "Je hebt je account nu succesvol geactiveerd. Je kan nu inloggen.", "menu_home"); } else { $error->Report ("Er is geen gebruikersnaam gevonden die nog geactiveerd moet worden."); } } /* Output Pages */ $tml->Output(); ?> |
Waarom doe je addslashes bij een select?quote:Op woensdag 28 december 2005 12:25 schreef wobbel het volgende:
[..]
Hier mijn activate scriptje (ff iets simpels gekozen)
[ code verwijderd ]
En soms controleer ik iets wel 4x ofzo, maar dat maakt toch niet uit?![]()
Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens opquote:Op woensdag 28 december 2005 12:22 schreef Swetsenegger het volgende:
[..]
Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.
Maar is urlencode sowieso aan te raden wanneer je een bevestigingslink mailt?
Het is dus een md5hash.quote:Op woensdag 28 december 2005 12:34 schreef Light het volgende:
[..]
Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens op
Da's ook een voorbeeld dat er uberhaupt checks nodig zijn. Misschien doen ze wel user input valideren, dwz een is_numeric check op dingen die numeriek moeten zijn. En toch is dat niet voldoende.quote:Op woensdag 28 december 2005 11:52 schreef Swetsenegger het volgende:
Een beter voorbeeld om aan te tonen dat het controleren van userinput een MUST is, is er niet
Persoonsgegevens bij X-Toys.nl
%0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail clientquote:Op woensdag 28 december 2005 12:35 schreef Swetsenegger het volgende:
[..]
Het is dus een md5hash.
Daar staan dus geen vreemde tekens in. Tussen de 32 karakters stond plotseling !%0d%0d.
Ik heb nog niet gezocht waar%0d voor staat, dan kan ik misschien achterhalen hoe die er plotseling inkomen. de ! is sowieso een raadsel.
Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.quote:Op woensdag 28 december 2005 12:43 schreef Light het volgende:
[..]
%0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail client
HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.quote:Op woensdag 28 december 2005 12:58 schreef Swetsenegger het volgende:
[..]
Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.
Zelfs als ik de url selecteerde en copy paste gaf hij die newline. Als platte tekst versturen ipv html? Maar dat is vrij lastig ivm het netjes weergeven van de bestelling.
Ja, ik stuur dus een html mail, met in de body gewoon een <a href....quote:Op woensdag 28 december 2005 13:36 schreef Light het volgende:
[..]
HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.
quote:Op woensdag 28 december 2005 15:58 schreef Light het volgende:
Ik neem aan dat je zelf geen enters in de url plant, en dat je de url tussen " " hebt staan in die link. Als het dan mis gaat kan het volgens mij alleen nog maar aan de betreffende mail client liggen.
1 2 3 | $body .= "<a href=\"http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."\">http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."</a><br /><br />"; ?> |
Ik hou het erop dat het aan de specifieke mail client lagquote:Op woensdag 28 december 2005 19:14 schreef Light het volgende:
Dat ziet er gewoon goed uitEn die spatie voor \" mag het verschil ook niet zijn.
Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzoquote:Op woensdag 28 december 2005 19:27 schreef FuifDuif het volgende:
In hoeverre is PHP (inmiddels) geschikt en volwassen genoeg voor echte design pattern implementaties en object geörienteerd ontwikkelen?
Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruikenquote:Op woensdag 28 december 2005 19:38 schreef JeRa het volgende:
[..]
Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzo
Ik snap iets niet aan deze redenering. Je hebt het gevoel dat PHP een hobbyistentaaltje is, waardoor je wellicht zou willen kijken naar alternatieven. Maar je zegt niet waar je beperkt wordt, en als je niet wordt beperkt in je werken dan is er toch niets mis met PHP?quote:Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:
Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
Het formulier wordt gegenereerd met PHP en vervolgens wil ik dat de selectielijst standaard de huidige datum/tijd toont. Vervolgens wil ik deze informatie bij de submit weer afvangen. Dit is de connectie met PHP. Tijdens mijn zoektocht kwam ik de smarty functie tegen, deze was PHP en vandaar mijn vraag. Mocht je een andere oplossing weten dan houd ik mij natuurlijk ook aanbevolen...quote:Op woensdag 28 december 2005 20:53 schreef JeRa het volgende:
Wat is de connectie met PHP, dit lijkt me vooral HTML en Javascript?
Gewoon kijken met welke van beiden je het beste je geld kan verdienen.quote:Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:
[..]
Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruiken), maar wat betreft de mogelijkheden en de elegantie van de taal an sich, ben ik een voorstander van PHP (uiteraard wel uitgaande van de right tool for the right job). Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
1 2 3 4 | 120.86 120.76 -0.08% 67.73 67.67 -0.09% etcetc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <tr> <td>78.39</td> <td>78.47</td> <td>+0.10%</td> </tr> <tr> <td>120.86</td> <td>120.76</td> <td>-0.08%</td> </tr> <tr> <td>67.73</td> <td>67.67</td> <td>-0.09%</td> </tr> etcetc |
1 2 3 4 5 | -0.08% -0.09% $procenten = array('0.10', '-0.08', '-0.09', etc); |
www.php.net/filequote:Op woensdag 28 december 2005 21:28 schreef Petertjuhh het volgende:
Ik heb een bestandje waar ik een bepaalde rij alleen wil uitlezen. Zo ziet het er nu uit:
[ code verwijderd ]
en ik wil graag de procenten uitlezen.
In html ziet het er zo uit:
[ code verwijderd ]
Hoe kan ik dit dan in een array zetten?
Bijv:
[ code verwijderd ]
Bedankt, ik ben eruitquote:Op woensdag 28 december 2005 22:06 schreef Swetsenegger het volgende:
[..]
www.php.net/file
www.php.net/explode
Je kan toch nooit SQL injecten met alleen maar cijfers?quote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Als iemand een session overneemt betekent dat nog niet dat hij/zij iets aan die session kan veranderen. Dit gebeurt alleen via jouw webinterface en die interface dient dus goed in elkaar te zittenquote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Zolang jij de invoer controleert (zowel de key als de value) en zorgt dat die invoer aan de gestelde eisen voldoet voordat je die in de sessie stopt, kan iemand ook met een sessie hijack de gegevens niet zodanig veranderen dat er gevaarlijke dingen in komen te staan. En als je waarden concequent controleert voordat je ze in de sessie stopt dan hoef je ze niet te controleren als je ze er weer uithaalt.quote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
Nog een vraag over veiligheid.
Ik stop bestellingen in een array, key is het id van de produkt database, value is het aantal dat besteld wordt. Deze array staat in een sessie. Zodra iemand wat besteld, wordt de sessie bijgewerkt. De invloed op het bestel formulier is beperkt. Men kan de aantallen van bestelde produkten wijzigen. Deze waarde controleer ik met is_numeric.
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.quote:Op woensdag 28 december 2005 20:59 schreef Woudloper het volgende:
[..]
Het formulier wordt gegenereerd met PHP en vervolgens wil ik dat de selectielijst standaard de huidige datum/tijd toont. Vervolgens wil ik deze informatie bij de submit weer afvangen. Dit is de connectie met PHP. Tijdens mijn zoektocht kwam ik de smarty functie tegen, deze was PHP en vandaar mijn vraag. Mocht je een andere oplossing weten dan houd ik mij natuurlijk ook aanbevolen...
Dat soort dingen vind ik altijd erg irritant om in te vullen.quote:Op donderdag 29 december 2005 06:58 schreef FuifDuif het volgende:
[..]
Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.
Serieus? Hoe vul jij het liefst een datum in? In een tekstveld waarbij het formaat bijvoorbeeld moet zijn "dd-mm-jjjj"? Dat is een mogelijkheid, maar met een tekstveld dwing je het correcte formaat 100% af.quote:Op donderdag 29 december 2005 08:03 schreef SuperRembo het volgende:
[..]
Dat soort dingen vind ik altijd erg irritant om in te vullen.
Nee hoor. De foksearch zal straks ook meerdere formaten gaan ondersteunen, alhoewel deze helaas niet het verschil zal gaan zien tussen dd/mm/jjjj en mm/dd/jjjj; maar goed, die tweede gebruikt niemand lijkt me.quote:Op donderdag 29 december 2005 08:10 schreef FuifDuif het volgende:
[..]
Serieus? Hoe vul jij het liefst een datum in? In een tekstveld waarbij het formaat bijvoorbeeld moet zijn "dd-mm-jjjj"? Dat is een mogelijkheid, maar met een tekstveld dwing je het correcte formaat 100% af.
Naar zo'n script ben ik ook opzoek. De smarty versie waar ik het over had is namelijk ook zo vormgegeven en die geeft standaard bijvoorbeeld de datum weer. Echter vind ik het onzin om speciaal voor één zo'n functie helemaal smarty te gaan gebruiken...quote:Op donderdag 29 december 2005 06:58 schreef FuifDuif het volgende:
Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.
Je kunt zoiets eenvoudig zelf maken. Bijvoorbeeld even heel eenvoudig uit de losse pols (dus fouten onder voorbehoudquote:Op donderdag 29 december 2005 09:26 schreef Woudloper het volgende:
[..]
Naar zo'n script ben ik ook opzoek. De smarty versie waar ik het over had is namelijk ook zo vormgegeven en die geeft standaard bijvoorbeeld de datum weer. Echter vind ik het onzin om speciaal voor één zo'n functie helemaal smarty te gaan gebruiken...
Heb jij wellicht een voorbeeld van dat script waar jij het over hebt. Op internet (diverse PHP websites) heb ik zoiets lopen zoeken, maar kon helaas niets vinden...
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 | $month = $_POST["month"]; $year = $_POST["year"]; <select name="day"> <? for($i = 1; $i < 32; $i++) { ?> <option label="<?=$i?>" value="<?=$i?>" <? if($day == $i) { ?>selected="selected"<? } ?>><?=$i?></option> <? } ?> </select> <select name="month"> <? for($i = 1; $i < 13; $i++) { ?> <option label="<?=$i?>" value="<?=$i?>" <? if($month == $i) { ?>selected="selected"<? } ?>><?=$i?></option> <? } ?> </select> <select name="year"> <? $currentYear = date("Y"); $firstYear = date("Y") - 100; for($i = $firstYear; $i < $currentYear; $i++) { ?> <option label="<?=$i?>" value="<?=$i?>" <? if$year == $i) { ?>selected="selected"<? } ?>><?=$i?></option> <? } ?> </select> |
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 | class fileReader { var $filename; var $settings; function fileReader () { $this->filename = './test.properties'; $this->getSettings(); } function getSettings () { $file = file($this->filename); reset($file); foreach ($file as $line) { $line = rtrim($line); # Get rid of newline characters $line = ltrim($line); # Get rid of any leading spaces if ($line == "" || $line == "\n" || strstr($line,"#") == 1) { next($file); } else { list($key, $value) = preg_split("/\s*=\s*/", $line, 2); # split by "=" and removing blank space either side of it. $this->settings[$key] = $value; } // end if } // end for each } // end function } ?> |
1 2 3 4 5 6 | list($array, $key, $value) = preg_split("/([^\.]+)\.(\S+)\s*=\s*(\S+)/", $line, 2); # split by "=" and removing blank space either side of it. $array = ucfirst(strtolower($array)); //Gebruikersvriendelijkheid $key = strtolower($key); $this->settings[$array][$key] = $value; ?> |
quote:Op vrijdag 30 december 2005 21:13 schreef SuperRembo het volgende:
htmlentities() of htmlspecialchars().
1 2 | WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0 |
1 2 | WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0 |
-edit- fuck, domme lul. DELETE FROM natuurlijk, zonder *quote: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 '* FROM users
WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0' at line 1
1 2 3 4 5 6 | oc.*,o.* FROM orders AS o INNER JOIN order_content AS oc USING (order_id) WHERE o.thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0 |
Bronquote:MySQL understands the || and && operators to mean logical OR and AND, as in the C programming language. In MySQL, || and OR are synonyms, as are && and AND. Because of this nice syntax, MySQL doesn't support the ANSI SQL || operator for string concatenation; use CONCAT() instead. Because CONCAT() takes any number of arguments, it's easy to convert use of the || operator to MySQL.
Werkt perfect, bedankt allebeiquote:Op vrijdag 30 december 2005 21:16 schreef JeRa het volgende:
Met preg_replace() kun je alles wat niet in een range valt wegfiltreren:
$string = preg_replace('/[^a-z0-9]/i', '', $string);
En voor de rest dus dit:
[..]
Nou, omdat || in sql al niet hetzelfde is als OR denk ik ook niet dat && hetzelfde is als AND. En && wordt verder niet genoemd, dus het kan goed zijn dat dat helemaal geen functie heeft.quote:Op vrijdag 30 december 2005 22:54 schreef SuperRembo het volgende:
Ik heb in sql nog nooit && gezien. Ook gezien de rest van de taal lijkt me AND logischer dan &&.
&& werkt ook niet in sql server.
1 2 3 4 5 6 7 8 9 | item1 item2 item2 item2 item3 item1 item3 item1 item4 |
Ik vind het persoonlijk ook behoorlijk flauw van Roönaän.quote:Op zaterdag 31 december 2005 10:12 schreef Chandler het volgende:
waarom post je dan? geef gewoon hints misschien zie ik het ligt dan? want ik heb wel een idee maar dan moet ik vele queries doenen veel bedoel ik het aantal items
In feite heb je daar niet veel queries voor nodig. Wanneer je hem insert, kun je er voor kiezen om een nieuwe insert standaard onderaan te plakken. Via een beheertool zou je daarnaast dan een overzicht kunnen geven waarmee je de indeling kunt instellen (bijvoorbeeld via pijl omhoog en naar beneden bij iedere records). De omhoog-pijl verwisselt het geselecteerde element met het element daarboven en een omlaag-pijl doet het andersom. Je kunt het natuurlijk zo uitgebreid maken als je zelf wilt.quote:Op zaterdag 31 december 2005 10:54 schreef Chandler het volgende:
dat is inderdaad wa ik bedoel maar ik doel meer dan stel je hebt 10 items en je wilt de bovenste ergens midden in plantenen dat dan het liefst zonder al te veel queries! maar goed ik ga hier volgend jaar wel over verder.
mja, je ziet toch zelf ook wel in dat al duizenden zij het niet honderdduizenden voor jou met dit probleem gezeten hebben.quote:Op zaterdag 31 december 2005 10:12 schreef Chandler het volgende:
waarom post je dan? geef gewoon hints misschien zie ik het ligt dan? want ik heb wel een idee maar dan moet ik vele queries doenen veel bedoel ik het aantal items
Daarom heet dit topic ook [PHP/MySQL] voor dummies.quote:Op zaterdag 31 december 2005 11:35 schreef Ro�a� het volgende:
[..]
mja, je ziet toch zelf ook wel in dat al duizenden zij het niet honderdduizenden voor jou met dit probleem gezeten hebben.
1 2 3 | $str = preg_replace("/\[img\](.*?)\[\/img\]/si","<img src=\"\\1\" alt=\"\">",$str); ?> |
Dat doen ze tegenwoordig met Javascript zoals FOK ook heeft gedaanquote:Op zaterdag 31 december 2005 12:05 schreef mooya het volgende:
In heb een ubb parser die van [[url=blabla/plaatje.jpg]afbeelding[/url]] een afbeeldin gmaakt.
[ code verwijderd ]
Hoe kan ik de hoogte en breedte van de afbeelding ophalen? zodat ik de afbeelding kan verkleinen als deze te breed is
![]()
Als het plaatje wordt geupload kan je dat met PHP aanpassen. Als het om een afbeelding gaat, welke mensen in jouw toepassing linken of iets dergelijks, zal je het met clientside scripting moeten doen zoals javascript.quote:Op zaterdag 31 december 2005 12:05 schreef mooya het volgende:
In heb een ubb parser die van [[url=blabla/plaatje.jpg]afbeelding[/url]] een afbeeldin gmaakt.
[ code verwijderd ]
Hoe kan ik de hoogte en breedte van de afbeelding ophalen? zodat ik de afbeelding kan verkleinen als deze te breed is
![]()
ok TNX..quote:Op zaterdag 31 december 2005 12:09 schreef Chandler het volgende:
[..]
Dat doen ze tegenwoordig met Javascript zoals FOK ook heeft gedaan
Ik weet niet eens waar je het over hebtquote:Op zaterdag 31 december 2005 18:54 schreef rickmans het volgende:
wellicht een hele basic vraag, maar ik zie het niet zo heel snel langskomen in de manual van phpdoc. Ik merk dat phpdoc erg sterk is in het documentatie van classes, maar kan ik dit ook doen voor gewone files waarin bijvoorbeeld een simpele if staat? Wat ik tot nu toe zie is dat alleen een page-level docblock wordt meegenomen, maar documentatie bij bijvoorbeeld een eenvoudige if wordt niet opgepakt. Is dit juist, wordt het gewoon simpelweg niet meegenomen, of doe ik het een en ander fout waardoor het niet meegenomen wordt.
http://www.phpdoc.org/quote:Op zaterdag 31 december 2005 19:05 schreef Swetsenegger het volgende:
[..]
Ik weet niet eens waar je het over hebt
Wat is phpdoc?
quote:phpdocu is the current standard auto-documentation tool for the php language. Similar to Javadoc, and written in php, phpDocumentor can be used from the command line or a web interface to create professional documentation from php source code. phpDocumentor has support for linking between documentation, incorporating user level documents like tutorials and creation of highlighted source code with cross referencing to php general documentation.
Concreet... wat doet het dan?quote:Op zaterdag 31 december 2005 19:07 schreef rickmans het volgende:
[..]
http://www.phpdoc.org/
phpDocumentor can be used from the command line or a web interface to create professional documentation from php source code
Ah, vandaar dat ik er niets van weet, aangezien ik een notoire ik-plaats-nooit-comments coder benquote:Op zaterdag 31 december 2005 19:19 schreef rickmans het volgende:
Het maakt op zich van de comments in je code een documentatie naslagwerkje. (om het even heel kort door de bocht te zeggen).
Laat je klanten het niet horenquote:Op zaterdag 31 december 2005 19:20 schreef Swetsenegger het volgende:
[..]
Ah, vandaar dat ik er niets van weet, aangezien ik een notoire ik-plaats-nooit-comments coder ben.
Volgens mij is phpdoc vooral bedoeld om na te kunnen gaan welke variabelen en functies er in een class zitten, en niet voor hoe die dingen intern werken. En in feite is dat ook niet echt interessant. Als je in phpdoc ziet dat er een functie foo is met argumenten bar1 en bar2 dan wil je kunnen terugvinden wat de functie doet met die argumenten, niet hoe.quote:Op zaterdag 31 december 2005 18:54 schreef rickmans het volgende:
wellicht een hele basic vraag, maar ik zie het niet zo heel snel langskomen in de manual van phpdoc. Ik merk dat phpdoc erg sterk is in het documentatie van classes, maar kan ik dit ook doen voor gewone files waarin bijvoorbeeld een simpele if staat? Wat ik tot nu toe zie is dat alleen een page-level docblock wordt meegenomen, maar documentatie bij bijvoorbeeld een eenvoudige if wordt niet opgepakt. Is dit juist, wordt het gewoon simpelweg niet meegenomen, of doe ik het een en ander fout waardoor het niet meegenomen wordt.
Wat hebben die met mijn comments te maken?quote:Op zaterdag 31 december 2005 19:30 schreef SuperRembo het volgende:
[..]
Laat je klanten het niet horen
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |