1 2 | print date("Y-m-d",$tijd); |
$tijd moet een integer zijn, het is nu toch een string?quote:Op zondag 4 maart 2007 01:38 schreef beerten het volgende:
Hmmm, een simpel probleem, waarvoor ik de oplossing zo niet vind.
In een tabel in de database staat de tijd als unix timestamp (seconden sinds epoch) Hier wil ik een gewone leesbare datum van maken. Hoe?
[ code verwijderd ]
Doet het dus niet. Wat is de truck???
Dit output hier "2006-04-04", zou moeten werken?quote:Op zondag 4 maart 2007 01:38 schreef beerten het volgende:
Hmmm, een simpel probleem, waarvoor ik de oplossing zo niet vind.
In een tabel in de database staat de tijd als unix timestamp (seconden sinds epoch) Hier wil ik een gewone leesbare datum van maken. Hoe?
[ code verwijderd ]
Doet het dus niet. Wat is de truck???
Het is een integer. En zelfs als ik het quote en er een string van maak doet hij het alsnog goed. PHP is daar niet zo streng meequote:Op zondag 4 maart 2007 01:38 schreef mschol het volgende:
ordinaire terug vind post
[..]
$tijd moet een integer zijn, het is nu toch een string?
"Doet het dus niet"quote:Op zondag 4 maart 2007 01:38 schreef beerten het volgende:
Doet het dus niet. Wat is de truck???
http://nl3.php.net/staticquote:Op zondag 4 maart 2007 18:32 schreef broodmonkeh het volgende:
laat maar
thnx zal er naar kijken , maar ik heb het opgelost door gewoon die 2 functies in 1 functie te stoppen. Niet netjes maar tochquote:
1 |
En op je server is dat altijd 1.0 hoger?quote:Op maandag 5 maart 2007 10:18 schreef Chandler het volgende:
$cnt = een mysql_result die altijd 0 of hoger is...
post is wat meer gegevens joh, hiermee is het alleen maar gissen...quote:Op maandag 5 maart 2007 13:03 schreef Chandler het volgende:
hoezo? Geqxon? ik snap je vraag niet!
Ik denk dat $cnt voor count staatquote:Op maandag 5 maart 2007 14:27 schreef ralfie het volgende:
[..]
post is wat meer gegevens joh, hiermee is het alleen maar gissen...
Vanavond ga ik naar een cabaret voorstellingen maar ik zal morgen ff kijken wat dat ding precies doet en of het dan beter werkt.quote:Op zaterdag 3 maart 2007 17:41 schreef Swetsenegger het volgende:
[..]
Magic quotes zal waarschijnlijk aanstaan.
*zucht*, zoals gezegd alles door strip_slashes deep trekken ALS magiq quotes aanstaan en met mysql_real_escape_string naar db schrijven. Dan kan je vervolgens zonder probleem de data UIT database presenteren zonder strip_slashes.quote:Op maandag 5 maart 2007 18:13 schreef splendor het volgende:
[..]
Vanavond ga ik naar een cabaret voorstellingen maar ik zal morgen ff kijken wat dat ding precies doet en of het dan beter werkt.
Het liefste wil ik gewoon 1 malig addslashes en niet later nog eens overal stripslashes uitvoeren, tenzij het de veiligheid in de weg staat, veiligheid boven alles natuurlijk.
Het is goed bedoeld dat weet ik wel.quote:Op maandag 5 maart 2007 18:21 schreef Swetsenegger het volgende:
[..]
*zucht*, zoals gezegd alles door strip_slashes deep trekken ALS magiq quotes aanstaan en met mysql_real_escape_string naar db schrijven. Dan kan je vervolgens zonder probleem de data UIT database presenteren zonder strip_slashes.
Je moet encoding alleen gebruiken waar het nodig is. Het is niet handig om standaard alle input door addslashes() heen te halen (zoals magic quotes doet) omdat het misschien wel eens in een SQL statement gebruikt gaat worden.quote:Op maandag 5 maart 2007 18:13 schreef splendor het volgende:
Het liefste wil ik gewoon 1 malig addslashes en niet later nog eens overal stripslashes uitvoeren, tenzij het de veiligheid in de weg staat, veiligheid boven alles natuurlijk. :)
1 |
1 |
1 |
ik heb voor school wel eens met OOP moeten werken, maar i.p.v. overzichtelijker werd het alleen maar onoverzichtelijker, je had een functie die 20x naar iets anders verwees voordat hij daadwerkelijk de functie aanriepquote:Op maandag 5 maart 2007 20:17 schreef H4ze het volgende:
Ik heb sinds kort de kracht van object georienteerd programmeren in PHP ontdektIk heb al wel aardig wat ervaring met OOP in Java, maar ik dacht altijd dat 't voor PHP een beetje doelloos was. Maar zeker voor de wat grotere projecten is het zeer geschikt
![]()
Dan heb je 't niet goed uitgedachtquote:Op maandag 5 maart 2007 21:28 schreef mschol het volgende:
[..]
ik heb voor school wel eens met OOP moeten werken, maar i.p.v. overzichtelijker werd het alleen maar onoverzichtelijker, je had een functie die 20x naar iets anders verwees voordat hij daadwerkelijk de functie aanriep
Daar zijn volgens mij al genoeg artikelen over geschrevenquote:Op dinsdag 6 maart 2007 11:47 schreef super-muffin het volgende:
Gaat er nog iemand een artikel schrijven over OOP in PHP?
Je zou kunnen proberen om met IF in je query te gaan werken. Dus IF d < 16 THEN ORDER BY d ELSE ORDER BY a, b, c END IF. Ik heb geen kant en klare query bij de hand, maar ik denk dat je in die richting moet zoekenquote:Op dinsdag 6 maart 2007 11:57 schreef Geqxon het volgende:
Ik heb weer een leuke:
Een simpele query. Tabel met vier kolommen, eerst gesorteerd op A, daarna op B en daarna op C. D is een extra kolom, met een los attribuut. Nu hoeft er niet op D gestorteerd te worden, tenzij D lager dan 16 is. Dan moet D helemaal bovenaan de searchresults komen.
In PHP is dat op te vangen door twee query's te gebruiken, maar kan dit niet gewoon al direct in de query zelf?
Kijk in dat kader ook even naar Zend Framework.quote:Op maandag 5 maart 2007 21:50 schreef H4ze het volgende:
[..]
Dan heb je 't niet goed uitgedachtIk ben op m'n stage op 't moment bezig met een groot PHP project. Alle modules die ik ontwikkel, werk ik eerst uit in UML. Met een goed ontwerp kun je zeer efficient OO programmeren.
Idd, iets als:quote:Op dinsdag 6 maart 2007 12:09 schreef Hmail het volgende:
[..]
Je zou kunnen proberen om met IF in je query te gaan werken. Dus IF d < 16 THEN ORDER BY d ELSE ORDER BY a, b, c END IF. Ik heb geen kant en klare query bij de hand, maar ik denk dat je in die richting moet zoeken
Daarnaast weet ik eigenlijk niet precies hoeveel load dat op je mysql-server geeft, dus het zou kunnen zijn dat het sneller is om het in php te verwerken
hehe, you beat mequote:Op dinsdag 6 maart 2007 12:28 schreef Roonaan het volgende:
[..]
Idd, iets als:
SELECT IF(d < 16, 0, 1) as d_low, a, b, c FROM TABLE ORDER BY d_low, a, b, c, d
Die d is een veld van je record.quote:Op dinsdag 6 maart 2007 13:15 schreef Geqxon het volgende:
Maar die (d < 16), op welke D slaat dat? Want in mijn tabel zijn er 1600 records, het is niet alsof ik maar een enkel record tevoorschijn tover
1 2 3 4 5 6 7 8 9 | | A | B | C | D | +-------+-------+-------+-------+ | D** | I** | 2** | 4 | | A** | E** | 1** | 120 | | P** | Q** | 1** | 133 | | P** | R** | 2** | 159 | | Z** | H** | 1** | 141 | +-------+-------+-------+-------+ |
1 |
1 |
1 2 3 4 5 6 7 8 9 10 | | A | B | C | D | d_low | +------+------+------+------+-------+ | D** | I** | 2** | 4 | 0 | | A** | E** | 1** | 120 | 1 | | P** | Q** | 1** | 133 | 1 | | P** | R** | 2** | 159 | 1 | | Z** | H** | 1** | 141 | 1 | +------+------+------+------+-------+ 5 rows in set (0.00 sec) |
ik heb het uitgedacht zoals het moest van de docenten..quote:Op maandag 5 maart 2007 21:50 schreef H4ze het volgende:
[..]
Dan heb je 't niet goed uitgedachtIk ben op m'n stage op 't moment bezig met een groot PHP project. Alle modules die ik ontwikkel, werk ik eerst uit in UML. Met een goed ontwerp kun je zeer efficient OO programmeren.
Bedankt! Helaas werkt dit niet met Access, maar wel met de & operatorquote:Op dinsdag 6 maart 2007 16:05 schreef Roönaän het volgende:
SELECT CONCAT(initialen, " ", achternaam) AS naam FROM tabel.
Hoe bedoel je?quote:Waar laat je overigens je tussenvoegsel?
eh... beidequote:Note: is het construeren van een naamsweergave uit onderdelen een data niveau kwestie of een template kwestie?
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 | function make_menu_data_2($data) { $menus1 = explode("n", $data); $menus = str_replace("n","",$menus1); print_r($menus); $aantal = count($menus); $menu = "var MENU_ITEMS = [n"; for ($i = 0; $i < $aantal; $i++) { $menu .= "['"; if ($menus[$i][0] == "*") { $menu .= str_replace("*","",$menus[$i]) . "', null, null,n"; } else { if ($menus[$i][0] == "+") { $menus[$i] = str_replace("+", "", $menus[$i]); $menu .= $menus[$i] . "','page=" . str_replace(" ","",$menus[$i]) . "'],n"; } else if ($menus[$i][0] == "-") { $menus[$i] = str_replace("-", "", $menus[$i]); $menu .= $menus[$i] . "','page=" . str_replace(" ","",$menus[$i]) . "']n],n"; } else { $menu .= $menus[$i] . "','page=" . str_replace(" ","",$menus[$i]); $menu .= "'],n"; } } } $menu .= "n];"; $code = $menu; return $code; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <form name="upload formulier" enctype="multipart/form-data" method="post" action=" echo $_SERVER['PHP_SELF']; "> <input type="file" name="source_file"> <br> <input type="submit" name="submit" value="Submit"> </form><br /> error_reporting(E_ALL); if(isset($_POST['submit'])) { $size = $_FILES['source_file']['size'];// / 1024 / 1024 om naar MB te gaan. $size = round($size, 2); echo "Het volgende bestand wordt geupload:<br />"; echo "Naam: '" . $_FILES['source_file']['name'] . "'<br />"; echo "Grootte: '" . $size . " Bytes'<br />"; echo "<b>tmp_name:</b> '" . $_FILES['source_file']['tmp_name'] . "'<br />"; echo "de upload wordt verwerkt...<br />"; //Variabelen definiëren $ftp_server = "ftp.edek.nl"; $ftp_user_name = "hromiz"; $ftp_user_pass = "XXXXXX"; $source_file = $_FILES['source_file']['tmp_name']; $destination_file = 'rooster/bestand/'.$_FILES['source_file']['name']; echo $destination_file."<br>"; //Maak een basis connectie aan $conn_id = ftp_connect($ftp_server); ftp_pasv($conn_id,TRUE); //Meldt je aan met een gebruikersnaam en wachtwoord $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); //Controleer de verbinding if ((!$conn_id) || (!$login_result)) { echo "FTP connectie is mislukt!<br />"; echo "Probeerde naar '" . $ftp_server . "' te verbinden met de gebruiker '" . $ftp_user_name . "'<br />"; exit; } else { echo "Verbonden met '" . $ftp_server . "', als gebruiker '" . $ftp_user_name . "'<br />"; } //Upload een bestand $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); //Controleer de upload status if (!$upload) { echo "FTP upload is mislukt!<br />"; } else { echo "<b>Geupload: '" . $source_file . "' naar '" . $ftp_server . "' als '" . $destination_file . "'</b><br />"; } //Sluit de FTP stream ftp_close($conn_id); } ?> |
quote:Warning: ftp_put() [function.ftp-put]: rooster/bestand/license.txt: The system cannot find the path specified. in c:domainsedek.nlwwwrootrooster1.php on line 46
Ow ja, die kan ik er eventueel nog bij pakken. Maar niet van belang voor de toepassing.quote:Op dinsdag 6 maart 2007 17:24 schreef Geqxon het volgende:
[..]
Hans van den Berg wordt in jouw voorbeeld "H. Berg"
En dat was gewoon gaan zitten en coden zeker?quote:Op dinsdag 6 maart 2007 15:40 schreef mschol het volgende:
[..]
ik heb het uitgedacht zoals het moest van de docenten..
Zou moeten werken, heeft het hier zojuist prima gedaanquote:Op woensdag 7 maart 2007 09:23 schreef Hmail het volgende:
UPDATE items SET start_date = start_date + 60
Werkt dat niet?
1 2 3 4 5 6 7 8 9 10 11 12 13 | function writeHtaccess($file, $content, $permission) { if(file_exists($file) || is_writable($file)) { $htaccess = fopen($file, $permission) or die ("kan bestand niet openen"); fwrite($file, $concent); fclose($htaccess); } else { echo 'het bestand <strong>' . $file . '</strong> kan niet gevonden of bewerkt worden!'; } } writeHtaccess(".htaccess", "boeh", "w+"); ?> |
Bedankt! En dan nu mijn tweede vraag:quote:Op woensdag 7 maart 2007 10:40 schreef super-muffin het volgende:
Dat kan met htaccess:
[ code verwijderd ]
Zo iets.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $expires = $date - time(); if ($expires > 0){ $exhours = str_pad(floor($expires / 3600), 2, "0", STR_PAD_LEFT); $expires = $expires % 3600; $exminutes = str_pad(floor($expires / 60), 2, "0", STR_PAD_LEFT); $expires = $expires % 60; $exseconds = str_pad($expires, 2, "0", STR_PAD_LEFT); $expires = $exhours.":".$exminutes.":".$exseconds; } else { $expires = "<b>Expired</b>"; } ?> |
Newlines verschillen per OSquote:Op dinsdag 6 maart 2007 17:32 schreef ViPeRII het volgende:
@swetsenecker...
Dus ik moet filteren op rn ?
En wat bedoel je onder windows? De post data is onder een windows client anders dan onder een linux client of bedoel je server sided?
makkelijkste is als je explode op "\r\n", dan worden al die newlines meteen gefiltert uit je input,heb je nergens meer last van, bijvquote:Op dinsdag 6 maart 2007 17:32 schreef ViPeRII het volgende:
@swetsenecker...
Dus ik moet filteren op rn ?
En wat bedoel je onder windows? De post data is onder een windows client anders dan onder een linux client of bedoel je server sided?
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 | function make_menu_data_2($data) { $menus = explode("\r\n", $data); $out="var MENU_ITEMS = [\n"; foreach($menus as $x) { $out.="['"; $y=substr($x,1); switch($x[0]) { case '*': $out.="$y', null, null "; break; case '+': $z=str_replace(' ','',$y); $out.="$y', 'page=$z' "; break; case '-': $z=str_replace(' ','',$y); $out.="$y', 'page=$z' ],\n"; break; default: $z=str_replace(' ','',$x); $out.="$x', 'page=$z' "; } $out.="],\n"; } return "$out\n];"; } ?> |
Probleem zelf opgelost. Stond een haakje verkeerd.quote:Op dinsdag 6 maart 2007 17:20 schreef h.henkie het volgende:
Hoi
Ik heb het volgende. Op deze pagina heb ik een upload scriptje staan met de volgende code:
...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | u.name AS author, COUNT( p.id ) AS cntPosts, ( SELECT lastUpdate FROM r2_posts WHERE topicID = t.id ORDER BY lastUpdate LIMIT 0 , 1 ) AS lastUpdate FROM r2_topics t LEFT JOIN r2_posts p ON p.topicID = t.id LEFT JOIN si_users u ON u.id = t.userID WHERE t.deleted =0 AND t.forumID =2 GROUP BY t.id ORDER BY lastUpdate |
Het moet weer ingewikkeld hoor, voor onze mister Splendor. Je moet gewoon een tweede subquery maken, je kan namlijk niet meerdere resultaten in 1 subquery terug krijgen. Lees dit namelijk maar eens:quote:Op vrijdag 9 maart 2007 17:17 schreef splendor het volgende:
Ik zal de hele query even geven.. het probleem is namelijk dat ik al een JOIN erin heb zitten mét een GROUP BY.. dus nóg een join zou dan zijn eigen GROUP BY moeten hebben
[ code verwijderd ]
Hij moet dus behalve lastUpdate nog een koppeling maken naar tabel users aan de hand van posts.userID = users.id en daar dus de naam van de persoon die de laatste post deed ophalen.
quote:A scalar subquery is a simple operand, and you can use it almost anywhere a single column value or literal is legal, and you can expect it to have those characteristics that all operands have: a data type, a length, an indication whether it can be NULL, and so on.
Bron: mysql.com (http://dev.mysql.com/doc/refman/5.0/en/scalar-subqueries.html)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | class templateParser { var $output; function templateParser($templateFile='default_template.htm') { (file_exists($templateFile))?$this->output=file_get_contents($templateFile):die('Error:Template file '.$templateFile.' not found'); } function parseTemplate($tags=array()) { if(count($tags)>0) { foreach($tags as $tag=>$data) { $data=(file_exists($data))?$this->parseFile($data):$data; $this->output=str_replace('{'.$tag.'}',$data,$this->output); } } else { die('Error: No tags were provided for replacement'); } } function parseFile($file) { ob_start(); include($file); $content=ob_get_contents(); ob_end_clean(); return $content; } function display() { return $this->output; } } ?> |
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 | // include the class require_once('templateparser.php'); require_once('../includes/functions.inc'); $con = mysql_connect($cfg['DB_host'],$cfg['DB_user'],$cfg['DB_pass']) or die(mysql_error()); mysql_select_db($cfg['DB_DB'],$con) or die(mysql_error()); // instantiate a new template Parser object $tp=&new templateParser('index.html'); // define parameters for the class $tags=array( 'title'=>'You are seeing the template parser class in action!', 'sitename'=>$_SERVER['HTTP_HOST'], 'utility'=>'utility.php', 'maincontent'=>'content.php', 'footer'=>'footer.php', 'navGlobalbar'=>'navGlobalBar.php', 'navSubBar'=>'navSubBar.php', 'SiteInfo'=>'<a href="#">About Us</a> | <a href="#">Site Map</a> | <a href="#">Privacy Policy</a> | <a href="#">Contact Us</a> | ©2003 Company Name '); // parse template file $tp->parseTemplate($tags); // display generated page echo $tp->display(); ?> |
quote:Op vrijdag 9 maart 2007 19:32 schreef Stijn1983 het volgende:
[..]
Het moet weer ingewikkeld hoor, voor onze mister Splendor. Je moet gewoon een tweede subquery maken, je kan namlijk niet meerdere resultaten in 1 subquery terug krijgen. Lees dit namelijk maar eens:
[..]
1 2 3 4 5 6 7 8 9 10 11 12 13 | class DBclass { function dbConnect($host, $user, $pass) {} function dbSelect($selectedDB) {} function checkConnection() {} // Controleer de opgezette verbinding met de DB function query($query) {} function checkQueryResource($resource) {} // Controleer de result van de query function fetch($resource) {} // mysql_fetch_assoc() function result($this->queryResource) {} // mysql_result() function dbClose() {} function checkError() {} // Controleer en output de gegeven errors } ?> |
1 2 3 4 5 6 7 8 | SELECT u.name, u.id FROM user AS u WHERE u.id = ".mysql_real_escape_string($id)." "; |
Ja, ik besefte het net pas... Een beetje dom...quote:Op zaterdag 10 maart 2007 16:58 schreef Tiemie het volgende:
je kunt beter iedere variabele apart door mysql_real_escape_string halen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function escapeQuery($query) { // Haal de argumenten op $this->arguments = func_get_args(); // Het eerste resultaat is de query $this->query = array_shift($this->arguments); // Loop door de resterende elementen en geef ze een corresponderend nummer foreach ($this->arguments as $index => $name) { $this->arguments[$index+1] = $name; } // Loop nogmaals door de resultaten en vervang de nummers met de escaped waarden foreach ($this->arguments as $number => $value) { $this->query = str_replace(":$number", "'" . mysql_real_escape_string($value) . "'", $this->query); } // Return de schoongemaakte query return $this->query; } ?> |
je zou in ParseFile() die variabele aan $GLOBALS toe kunnen voegen, dan in het tweede bestand eerst kijken of die bestaat, voordat die hem zelf probeert aan te maken.quote:Op zaterdag 10 maart 2007 09:47 schreef mschol het volgende:
klein vraagje:
ik heb een kleine template parser:
[ code verwijderd ]
die roep ik alsvolgt aan:
[ code verwijderd ]
nu woerdt er in navGlobalBar.php de variable $nums aangemaakt, echter heb ik die variable ook nodig in navSubBar.php
is het mogelijk om die variable beschikbaar te maken voor dat 2de bestand?
anders moet ik een rits querie's opnieuw uitvoeren in het 2de bestand, das performance techniesch niet echt handig
1 2 3 4 5 6 7 8 9 10 11 | function simple_query( $query, $returnfirstrow=false) { if (strpos($query, "SELECT")!==false)) $is_select=true; if( $res=mysql_query($query) ) { if ($returnfirstrow && $is_select) return ( mysql_fetch_assoc($res) ); else if($is_select) return ( $x=mysql_num_rows($res) == 0 ? false : $x ); else return ( $x=mysql_affected_rows($res) == 0 ? false : $x ); } return false; } ?> |
Het feit dat je $this gebruikt betekent niet dat het automatisch ook OOP is en jouw code is daar weer een mooi voorbeeld van. Je gebruikt properties voor acties binnen een method die buiten de scope van de method niet meer gebruikt worden.quote:Op zaterdag 10 maart 2007 17:00 schreef SkaterSam het volgende:
[..]
Ja, ik besefte het net pas... Een beetje dom...![]()
Nu even kijken of ik iets kan schrijven die dat soort dingen in de query automatisch escaped...
edit [18.29]: een beetje van mijzelf en een beetje van Maggi...
[ code verwijderd ]
Huh, hoe bedoel je "een query property binnen je class" ? Wat ik nu doe is het volgende, eerst escape ik die query met de functie, dan return ik hem in een variabele, die ik weer gebruik in de echte query. Maar als je het kan verhelderen, graagquote:Op zaterdag 10 maart 2007 20:30 schreef smesjz het volgende:
Handiger was denk ik dat je een $query property maakt binnen die class zodat je niet die $query hoeft over te gooien (via return bijv) binnen je class.
Ja dat klopt denk ik ook wel. Ik denk dat het meeste in die class ook "gewoon" functies zijn. Ik ben er ook nog mee aan het experimenteren. Maar als je ook hier meer informatie over hebt (hoe zou dit er in OO hebben uitgezien ?) dan lees ik het graag.quote:Nu is het gewoon functioneel programmeren en is het toevallig een class omdat er class voor staat en niet omdat het iets met OO te maken heeft.
Ik bedoelde meer zoiets: (ff quick&dirty voor PHP5)quote:Op zaterdag 10 maart 2007 21:34 schreef SkaterSam het volgende:
Huh, hoe bedoel je "een query property binnen je class" ? Wat ik nu doe is het volgende, eerst escape ik die query met de functie, dan return ik hem in een variabele, die ik weer gebruik in de echte query. Maar als je het kan verhelderen, graag :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class Database { private $query = null; private function prepareQuery() { blabla(); $query = escpape_meuk_hier(); $this->query = $query; } public function execQuery($query) { // Eerst escapen. $this->query = $query; $this->prepareQuery(); mysql_query($this->query); } } ?> |
ik heb in het eerste bestand, navGlobalBar.php, 2 globals toegewezen die ik nodig had, en die kon ik vervolgens aanroepen in het 2de bestand,quote:Op zaterdag 10 maart 2007 20:10 schreef ralfie het volgende:
[..]
je zou in ParseFile() die variabele aan $GLOBALS toe kunnen voegen, dan in het tweede bestand eerst kijken of die bestaat, voordat die hem zelf probeert aan te maken.
Ja, dat zou natuurlijk ideaal zijn! Ik had het echter op deze manier gedaan, omdat ik ook argumenten moet opgeven die vervangen moeten worden in de query (dus een :1 wordt bijvoorbeeld $obj_id), maar ik vond het handiger dat dit in twee stappen ging. Ik neem aan dat ik het bijvoorbeeld ook gewoon in de execQuery had kunnen zetten ($db->execQuery($query, $enkele_argumenten_ter_vervanging)), ik geloof dat jij iets dergelijks bedoelt. Want mijn vraag was hoe ik die vervangende argumenten in de prepareQuery function kreeg.quote:Op zondag 11 maart 2007 10:00 schreef smesjz het volgende:
Ik bedoelde meer zoiets: (ff quick&dirty voor PHP5)
[ code verwijderd ]
Het kan natuurlijk ook nog op tig andere manieren, dit voorbeeldje laat alleen zien dat je door het gebruik van die query property (private $query) je niet meer 'return' hoeft te gebruiken.
Ja dat heb ik gezien, en hoewel ik daar ook naar kijk, probeer ik liever zelf een in elkaar te zetten natuurlijk, leerervaring enzoquote:Verder is een database class al 100 keer in OO gemaakt voor PHP en met een beetje Google werk kan je daar genoeg voorbeelden van vinden.
Hmmm, ja dat kan, ik werk echter met een script die de Errorlog uitleest van Apache2. Dan krijg ik op mijn browserscherm altijd de laatste errors die Apache2 ontdekt. Maar ik weet niet zeker of de Errorlog alle errors die error_reporting(E_ALL) oppikt, ook pakt.quote:BIj het ontwikkelen van je code kan ik je aanraden om error_reporting(E_ALL); aan te zetten zodat PHP je zelf waarschuwt bij misbruik van $this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { if ($handle = opendir($dir)) { // Dit is de juiste manier om door een directory te wandelen. while (false !== ($file = readdir($handle))) { if(is_dir($file)) { readfilelist($file); } $file_arr[]= $file; } closedir($handle); } } |
Je kan ook eens kijken naar de aanpak in PDO (>= php5.1): http://nl2.php.net/manual/en/ref.pdo.phpquote:Op zondag 11 maart 2007 13:28 schreef SkaterSam het volgende:
[..]
Ja, dat zou natuurlijk ideaal zijn! Ik had het echter op deze manier gedaan, omdat ik ook argumenten moet opgeven die vervangen moeten worden in de query (dus een :1 wordt bijvoorbeeld $obj_id), maar ik vond het handiger dat dit in twee stappen ging. Ik neem aan dat ik het bijvoorbeeld ook gewoon in de execQuery had kunnen zetten ($db->execQuery($query, $enkele_argumenten_ter_vervanging)), ik geloof dat jij iets dergelijks bedoelt. Want mijn vraag was hoe ik die vervangende argumenten in de prepareQuery function kreeg.
1 2 3 4 5 6 | $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array(150, 'red')); ?> |
Tijdens het ontwikkelen kan je het beste gewoon errors op je scherm weergeven ipv alleen een error log te gebruiken.quote:Hmmm, ja dat kan, ik werk echter met een script die de Errorlog uitleest van Apache2. Dan krijg ik op mijn browserscherm altijd de laatste errors die Apache2 ontdekt. Maar ik weet niet zeker of de Errorlog alle errors die error_reporting(E_ALL) oppikt, ook pakt.
deze functie werkt niet omdat hij in een oneindige lus raakt. Deze manier van directories uitlezen retourneert namelijk in elke directory ook een handle naar zijn parent directory (. en ..) waardoor php van parent naar child directory en vice versa blijft gaan tot hij ergens vast loopt. Daarnaast is het voor grote directories mogelijk dat php crashed omdat hij in een te diepe recursiviteit raakt (of hoe je dat ook zegtquote:Op zondag 11 maart 2007 13:45 schreef beerten het volgende:
Ik wil graag de volledige inhoud van alle bestanden op mijn webserver inlezen in een array.
Dit wil ik gebruiken om een sitemap te maken. De pagina's/directory's worden vervolgens weergegeven op een pagina om ge(de)selecteerd te worden en wat overige opties.
Maar hoe lees ik de volledige inhoud van de root uit en stop deze in een array?
Ik dacht aan het volgende, maar dat werkt mooi niet! Sterker nog, als ik de functie aanroep wordt een bestand ter download aangeboden.
Kan iemand me op weg helpen?
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 | $dirstack=array('C:\\program files\\Apache group\\Apache2\htdocs'); while(sizeof($dirstack)!=0) { $dir=array_shift($dirstack); if ($handle=opendir($dir)) { while(false!==($file=readdir($handle))) { if ($file=='.' || $file=='..') continue; if (is_dir($dir.'\\'.$file)) $dirstack[]=$dir.'\\'.$file; else $files[]=$dir.'\\'.$file; } } } ?> |
Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.quote:Op zondag 11 maart 2007 14:24 schreef mschol het volgende:
bestaat er een programma dat realtime kan refreshen zodra er een melding in bijvoorbeeld je errorlog bij komt (in linux kan je dit doen) echter onder windows zou ik het ook wel handig vinden als ik bijvoorbeeld de laatste 5 meldingen kan zien (in realtime)
volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt welquote:Op zondag 11 maart 2007 14:33 schreef SkaterSam het volgende:
[..]
Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.
ik ben dus eigenlijk opzoek naar een windows equivalent van tail -fquote:Op zondag 11 maart 2007 16:40 schreef Floxxx het volgende:
[..]
volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt wel
1 2 3 | Warning: parsefile(): Failed opening '<a href='http://home.mschol.eu/pagina.php' target='_blank' ><img src='../images/valid-401.gif' alt='' /></a> | <a href='#'>About Us</a> | <a href='#'>Site Map</a> | <a href='#'>Privacy Policy</a> | <a href='http://tweakers.net'>Contact Us</a> | ©2003 Company Name' for inclusion (include_path='.;c:php4pear') in d:wwwanime_argewebtemplatetemplateparser.php on line 29 |
Maar vlak ook de mogelijkheid van Multiviews niet uit.quote:Op zondag 11 maart 2007 12:19 schreef super-muffin het volgende:
er is een truukje voor, er word een regex gebruikt
[ code verwijderd ]
Deze gebruik ik op mijn website.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |