quote:Op woensdag 7 november 2012 21:18 schreef Xanland het volgende:
Het zijn inderdaad, uiteraard, vaste routes. Waar ik denk dat ik nu eigenlijk naar op zoek te zijn is te weten wat het coördinaat, bijvoorbeeld, 50 meter verderop de polyline is.
Dit aangezien ik de reistijd tussen 2 haltes weet en ook hoeveel meter ik de marker moet verplaatsen. Alleen kan ik zoiets niet in PHP vinden om dus het volgende coördinaat op de polyline in PHP te berekenen.
Je gaat in ieder geval een controller moeten maken.quote:Op woensdag 7 november 2012 23:49 schreef pascal08 het volgende:
Ik zit weer met het volgende lastige probleem. Via een tutorial op youtube had ik met raw php in notepad++ een universal member page gemaakt. Als ik dan localhost/project/gebruikersnaam deed, dan kreeg ik een pagina te zien die speciaal voor de gebruiker was, een members page dus.
Nu gebruik ik codeigniter, maar dan wordt alles een stuk lastiger. Codeigniter gebruikt standaard geen $_GET en ik wil liever ook niks aanpassen om dat wel werkend te krijgen. Het lijkt me namelijk stug dat CodeIgniter hier geen andere oplossing voor biedt. Ik heb al nagedacht over alternatieven, maar ik kan niet anders bedenken dan een unieke URL voor elke gebruiker, want uiteindelijk wil je een gebruikerspagina ook direct via een URL kunnen benaderen.
Kan iemand mij een zetje in de goede richting geven, ik heb namelijk geen flauw idee hoe ik dit ga googlen.
Dat ik daar niet zelf op gekomen ben.quote:Op woensdag 7 november 2012 23:56 schreef Light het volgende:
[..]
Je gaat in ieder geval een controller moeten maken.
Ja, heb ik.quote:Op donderdag 8 november 2012 00:04 schreef Juicyhil het volgende:
Heb je wel al een RewriteRule daarvoor aangemaakt binnen je htaccess?
Anders is het iets van index.php/project/gebruikersnaam
Kan het ook zo?:quote:Op donderdag 8 november 2012 00:10 schreef Juicyhil het volgende:
Zie hier: http://codeigniter.com/user_guide/general/urls.html
Je kunt ook argumenten meegeven in je url. Als print_r(func_get_args()) neerzet in de userpage action van je homecontroller, zou je hem moeten kunnen zien.
1 2 3 | <?php $this->uri->segment(3); ?> |
Als je hem zo krijgt, zou het ook kunnen. Maar lijkt me als parameter in je functie wat netter. Je kunt hem immers ook gewoon een default value meegeven.quote:Op donderdag 8 november 2012 00:15 schreef pascal08 het volgende:
[..]
Kan het ook zo?:
Eerst naar localhost/project/ gaan, daar de link aanklikken die naar localhost/project/home/userpage/username verwijst. Dan in de view "userpage":
[ code verwijderd ]
Ik krijg dan namelijk wel de gebruikersnaam die ik nodig heb om de pagina uniek te maken.
Ik moet die uri->segments in m'n controller plaatsen, dat bedoel je toch?quote:Op donderdag 8 november 2012 00:17 schreef Juicyhil het volgende:
[..]
Als je hem zo krijgt, zou het ook kunnen. Maar lijkt me als parameter in je functie wat netter. Je kunt hem immers ook gewoon een default value meegeven.
In je action jaquote:Op donderdag 8 november 2012 00:20 schreef pascal08 het volgende:
[..]
Ik moet die uri->segments in m'n controller plaatsen, dat bedoel je toch?
Het werkt.![]()
Nu is $username gewoon al direct een variabele in m'n view, fantastisch!
![]()
Ik zou dit eens lezen als ik jou was: http://nl.wikipedia.org/wiki/Model-view-controller-modelquote:Op zaterdag 10 november 2012 00:00 schreef pascal08 het volgende:
Is het eigenlijk verstandig om meerdere controllers aan te maken in CodeIgniter? Moet ik die dan elkaar laten extenden of allemaal de CI_controller? Ik snap niet wat het nut hiervan is, buiten dat m'n code er overzichtelijker van wordt. Ik zie namelijk bij heel veel tutorials meerdere controllers.
Ik heb echt al enorm veel gelezen, want ik wil in een paar weken met 0 kennis een mooie website bouwen. Schoonheidsfoutjes of een amateuristische code kan mij op zich niet zoveel schelen zolang alles maar veilig is.quote:Op zaterdag 10 november 2012 00:07 schreef Juicyhil het volgende:
Ligt er natuurlijk wel helemaal aan wat je precies gaat maken. Als je straks voor iedere dingetje een controller hebt, wordt ook weer zo onoverzichtelijk
Soms kan het tijdstip debuggen wel tegen werken, als je gewoon dom door kunt programmeren dan maakt het tijdstip opzich niet uit, maar als er ook maar 1 slash of iets anders mist dan kun je daar eeuwen op dood starenquote:
Ik kan het me niet voorstellen, want een map met een ander project op hetzelfde niveau doet het wel. Als ik de mapnaam verander krijg ik dezelfde foutmeldingen. Ik denk dus dat ik iets vreselijk over het hoofd zie.quote:Op zondag 11 november 2012 00:30 schreef Pakspul het volgende:
Zit dit probleem in in de apache server? Anders moet je stap voor stap gaan debuggen om te kijken of er toch ergens iets verkeerd wordt geladen.
Als je dan een echo "jeej"; in je alle eerste PHP script neer zet dan moet deze boven de foutmelding komen te staan. Gebeurd dit niet dan komt hij al geen eens in je PHP script en zit Apache te kutten.quote:Op zondag 11 november 2012 00:34 schreef pascal08 het volgende:
[..]
Ik kan het me niet voorstellen, want een map met een ander project op hetzelfde niveau doet het wel. Als ik de mapnaam verander krijg ik dezelfde foutmeldingen. Ik denk dus dat ik iets vreselijk over het hoofd zie.
quote:Op zondag 11 november 2012 00:35 schreef Pakspul het volgende:
[..]
Als je dan een echo "jeej"; in je alle eerste PHP script neer zet dan moet deze boven de foutmelding komen te staan. Gebeurd dit niet dan komt hij al geen eens in je PHP script en zit Apache te kutten.
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.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: |