Klopt. Ik gebruik CodeIgniter trouwens, ben ik vergeten te vermelden.quote:Op zondag 11 november 2012 00:38 schreef Pakspul het volgende:
[..]
Je URL is nu wel ineens anders. index.php staat er nu ineens tussen.
ok, ben ik niet bekend mee, maar als de URL goed is dan kun je verder gaan om de if statement uit te zoeken waarom die de keuze maakt om toch een foutmelding af te drukken. Variabelen weergeven helpt hierbij om te kijken wat er in zit.quote:Op zondag 11 november 2012 00:39 schreef pascal08 het volgende:
[..]
Klopt. Ik gebruik CodeIgniter trouwens, ben ik vergeten te vermelden.
Arggggh, zo vervelend is dat hè. Ik ben gewoon niet geschikt voor dit soort dingen, veel te slordig en ik maak er heel vaak een puinhoop van.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?php function q($query, $data = array()) { /* run query with data */ $this->query = array('query' => $query, 'data' => $data); try { $this->prep = $this->dbConnection->prepare($query); foreach ($data AS $key => $val) { if (is_int($val)) { $this->prep->bindParam($key, (int)$val, PDO::PARAM_INT); // regel 43 } else { $this->prep->bindParam($key, $val); } } $this->prep->execute(); $this->prep->setFetchMode(PDO::FETCH_ASSOC); return $this->prep; // can return false } catch (Exception $e) { $this->pdoException($e->getMessage()); exit; } } ?> |
1 2 3 4 5 6 7 8 9 10 | <?php $tst->q("SELECT * FROM `fish` WHERE `user_id` > :id LIMIT :startCnt, :numberCnt", array(":id" => 0, ":startCnt" => 1, ":numberCnt" => 5)); ?> |
1 | Fatal error: Cannot pass parameter 2 by reference in D:\EasyPHP-12.1\www\pdoclass.php on line 43 |
1 2 3 4 | array (size=3) ':id' => int 0 ':startCnt' => int 1 ':numberCnt' => int 5 |
1 2 | $val = (int)$val; $this->prep->bindParam($key, $val, PDO::PARAM_INT); |
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 | array (size=4) 'error' => string 'PDO-SQL-ERROR' (length=13) 'PDO_error' => string 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''5', '5'' at line 4' (length=231) 'SQL' => array (size=2) 'query' => string 'SELECT * FROM `fish` WHERE `user_id` > :id LIMIT :startCnt, :numberCnt' (length=136) 'data' => array (size=3) ':id' => int 0 ':startCnt' => int 1 ':numberCnt' => int 5 'debug_backtrace' => array (size=2) 0 => array (size=7) 'file' => string 'D:\***\pdoclass.php' (length=32) 'line' => int 60 'function' => string 'pdoException' (length=12) 'class' => string 'pdoWrapper' (length=10) 'object' => object(pdoWrapper)[1] ... 'type' => string '->' (length=2) 'args' => array (size=1) ... 1 => array (size=7) 'file' => string 'D:\***\pdoclass.php' (length=32) 'line' => int 145 'function' => string 'q' (length=1) 'class' => string 'pdoWrapper' (length=10) 'object' => object(pdoWrapper)[1] ... 'type' => string '->' (length=2) 'args' => array (size=2) ... |
Dat heet het "teddybeer-effect". Doordat je je probleem aan iemand moet uitleggen wordt het voor jezelf ook duidelijker en doordat je extra houvast hebt aan dit topic / je collega / je teddybeer zie je de oplossing opeens zelf.quote:Op zondag 11 november 2012 00:51 schreef pascal08 het volgende:
[..]
Arggggh, zo vervelend is dat hè. Ik ben gewoon niet geschikt voor dit soort dingen, veel te slordig en ik maak er heel vaak een puinhoop van.
Het gekke is wel, dat als ik mijn probleem hier post, ik vaak zelf het antwoord vind.
Rubber ducking.quote:Op zondag 11 november 2012 10:48 schreef Farenji het volgende:
[..]
Dat heet het "teddybeer-effect". Doordat je je probleem aan iemand moet uitleggen wordt het voor jezelf ook duidelijker en doordat je extra houvast hebt aan dit topic / je collega / je teddybeer zie je de oplossing opeens zelf.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | <?php class pdoWrapper { private $dbConnection; private $lastQuery = 0; private $prep; public $queries = array(); private function mtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function __construct($hostname, $username, $password, $database) { /* open the connection to the database server and database */ $this->queries['connection'] = array('hostname' => $hostname, 'username' => $username, 'database' => $database, 'startTime' => $this->mtime_float()); try { $con = "mysql:dbname=" . $database . ";host=" . $hostname; $this->dbConnection = new PDO($con, $username, $password); } catch(Exception $e) { $this->pdoException($e->getMessage()); exit; } $this->dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->queries['connection']['endTime'] = $this->mtime_float(); $this->queries['connection']['totalTime'] = round($this->queries['connection']['endTime'] - $this->queries['connection']['startTime'], 6); $this->queries['connection']['connectTime'] = $this->queries['connection']['totalTime']; $this->queries['connection']['queries'] = 0; $this->queries['connection']['longestQueryTime'] = 0; $this->queries['connection']['longestQuery'] = 0; } function q($query, $data = array()) { /* run query with data */ $this->lastQuery++; // start logging $this->queries[$this->lastQuery] = array('query' => $query, 'data' => $data, 'rows' => -1, 'startTime' => $this->mtime_float()); try { $this->prep = $this->dbConnection->prepare($query); // loop elements and bind to there requested value foreach ($data AS $bindValue => $replaceValue) { // int, add PDO::PARAM_INT for processing as REAL int -d if (is_int($replaceValue)) { $val = intval($replaceValue); $this->prep->bindValue($bindValue, $replaceValue, PDO::PARAM_INT); } else { $this->prep->bindValue($bindValue, $replaceValue, PDO::PARAM_STR); } } $this->prep->execute(); } catch (Exception $e) { $this->pdoException($e->getMessage()); } $this->queries[$this->lastQuery]['rows'] = $this->prep->rowCount(); $this->prep->setFetchMode(PDO::FETCH_ASSOC); // end the logging $this->queries[$this->lastQuery]['endTime'] = $this->mtime_float(); $this->queries[$this->lastQuery]['totalTime'] = round($this->queries[$this->lastQuery]['endTime'] - $this->queries[$this->lastQuery]['startTime'], 6); // update the database total connection time. $this->queries['connection']['endTime'] = $this->mtime_float(); $this->queries['connection']['totalTime'] = round($this->queries['connection']['endTime'] - $this->queries['connection']['startTime'], 6); $this->queries['connection']['queries']++; if ($this->queries[$this->lastQuery]['totalTime'] > $this->queries['connection']['longestQueryTime']) { $this->queries['connection']['longestQueryTime'] = $this->queries[$this->lastQuery]['totalTime']; $this->queries['connection']['longestQuery'] = $this->queries[$this->lastQuery]; } return $this->prep; // can return false } function fetch() { /* fetch all data */ return $this->prep->fetchAll(); } function rows() { /* retrieve number of found rows */ return $this->queries[$this->lastQuery]['rows']; } function result() { /* result for used more then 0 yes or no */ return ( $this->queries[$this->lastQuery]['rows'] > 0) ? false : true; } function insert_id() { /* return last insert id */ $this->queries[$this->lastQuery]['insert_id'] = $this->dbConnection->lastInsertId(); return $this->queries[$this->lastQuery]['insert_id']; } function affected() { /* return number affected rows alternative */ return $this->queries[$this->lastQuery]['rows']; } function pdoException($message) { $this->queries['connection']['errorQueries'][$this->lastQuery] = $message; $this->queries[$this->lastQuery]['error'] = array('error' => 'PDO-SQL-ERROR', 'PDO_error' => $message, 'debug_backtrace' => debug_backtrace()); } } ?> |
Eh.quote:Op maandag 12 november 2012 12:05 schreef pascal08 het volgende:
Waar laat ik mijn PHP-code in JSFiddle?
Nee... toch?quote:
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Ik post toch ook een JS-code én een PHP-bestand.quote:Op maandag 12 november 2012 12:14 schreef KomtTijd... het volgende:
...een javascript probleem dus. Wat moet dat in het PHP-topic?
Stand-alone ja, maar misschien moet het PHP-script wel aangepast worden om het op deze manier te laten werken, weet ik veel.quote:Op maandag 12 november 2012 12:17 schreef KomtTijd... het volgende:
...je zegt net dat het php-script gewoon werkt?
Ik heb 'm al in het JS-topic gepost. Waar moet ik precies naar kijken in de developer-console van Chrome?quote:Op maandag 12 november 2012 12:21 schreef GlowMouse het volgende:
Ik denk dat de fout niet in het php-script zit. Misschien kom je verder met de developer-console in je browser.
quote:Op maandag 12 november 2012 12:10 schreef pascal08 het volgende:
[..]
Nee... toch?
Maarja, ik heb dus het volgende probleem. Ik heb met Bootstrap een typeahead veld gemaakt en ik heb de JS code onder aan m'n HTML pagina geschreven. Als ik dit doe werkt het wel:
[ afbeelding ]
..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.
[ afbeelding ]Kwestie van search.php testen. .ajax wil niet zeggen dat hij een $_POST verstuurd controleer eerst of hij dit uberhaupt doet. Door een variable terug te krijgen van PHP script. dus dat je een visuele output ergens maakt. Je PHP file is leuk gemaakt, maar voor test willen we eerst zien of hij dat stukje code bereikt.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Controleer met behulp van Firebug (firefox addon)in de console of er een output richting de server gaat en of je daar iets van terug krijgt maak daarvoor bvb:van en ga dan vervolgens kijken of je dat terug krijgt in de console.
1
2
3
4
5
6<?php
if(isset($_POST['Een_bestaande_variabele']))
{
echo "het werkt!";
}
?>
Mocht dit niet het geval zijn dan weet je dat je Javascript niet werkt. Desnoods stop je eronder iets wat een kleurtje oranje maakt op de site met behulp van JQuery om te testen of het script werkt of niet.
Mocht het Javascript werken dan kan hij mogelijk "search.php" niet vinden. en zul je dit anders moeten benaderen.Redacted
quote:Op maandag 12 november 2012 13:40 schreef Crutch het volgende:
Heb je ook gekeken wat er terugkomt in die datavariabele?
In de PHP-log gekeken?
Misschien is ?query= wel leeg?
Bedankt voor het meedenken, maar het probleem was al vrij snel opgelost in het JS topic. Ik ben in ieder geval vandaag heel veel wijzer geworden over debuggen, dus dat voorkomt een hoop onnodige posts in de toekomst.quote:Op dinsdag 13 november 2012 00:10 schreef cablegunmaster het volgende:
[..]
Kwestie van search.php testen. .ajax wil niet zeggen dat hij een $_POST verstuurd controleer eerst of hij dit uberhaupt doet. Door een variable terug te krijgen van PHP script. dus dat je een visuele output ergens maakt. Je PHP file is leuk gemaakt, maar voor test willen we eerst zien of hij dat stukje code bereikt.
Controleer met behulp van Firebug (firefox addon)in de console of er een output richting de server gaat en of je daar iets van terug krijgt maak daarvoor bvb:
[ code verwijderd ]
van en ga dan vervolgens kijken of je dat terug krijgt in de console.
Mocht dit niet het geval zijn dan weet je dat je Javascript niet werkt. Desnoods stop je eronder iets wat een kleurtje oranje maakt op de site met behulp van JQuery om te testen of het script werkt of niet.
Mocht het Javascript werken dan kan hij mogelijk "search.php" niet vinden. en zul je dit anders moeten benaderen.
1 2 3 4 5 | <?php $string = "/x/y/z/a/b"; $e = explode("/", $string); echo end($e); ?> |
1 2 3 4 | <?php $string = "/x/y/z/a/b"; echo end(explode("/", $string)); ?> |
Hier ook.quote:Op dinsdag 13 november 2012 10:48 schreef Tijn het volgende:
Dat laatste voorbeeld werkt bij mij gewoon, hoor.
Hier nietquote:Op dinsdag 13 november 2012 10:48 schreef Tijn het volgende:
Dat laatste voorbeeld werkt bij mij gewoon, hoor.
1 2 3 4 | <?php $string = '/a/b/c/d/e/f'; echo end(explode("/", $string)); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Strict standards: Only variables should be passed by reference in D:\EasyPHP-12.1\home\codesource.php on line 3 Call Stack # Time Memory Function Location 1 0.0008 138544 {main}( ) ..\codetester.php:0 2 0.0076 176864 include( 'D:\EasyPHP-12.1\home\codesource.php' ) ..\codetester.php:43 Dump $_SERVER $_SERVER['REMOTE_ADDR'] = string '127.0.0.1' (length=9) $_SERVER['REQUEST_METHOD'] = string 'POST' (length=4) $_SERVER['REQUEST_URI'] = string '/home/codetester.php' (length=20) Variables in local scope (#2) $string = string '/a/b/c/d/e/f' (length=12) |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |