Ciao, mi sto avvicinando a PHP OOP, MVC e Ajax ma ho un problema.
In una delle mie view c'e una select e in base alla selezione voglio fare una chiamata ad un metodo php e mostrare i dati. ma mi sono perso da qualche parte e non riesco a capire quale sia il percorso giusto che deve fare il codice. Credo sia abbastanza semplice da risolvere ma non capisco che metodo chiamare nella richiesta ajax e soprattutto se mi serve un nuovo metodo nel controller o no.
Grazie
Questa e la mia view
questo e il controllercodice:<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Load Cars By Choice</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function (){ $('#select').change(function (){ //debug var model = $(this).val(); var str = ""; $("select option:selected").each(function(){ str += "<br/><div><b>Company Name: </b>" + $(this).text() + "</div><br/>"; var selection = $(this).text(); var carModelUrl = ".../my_mvc/index.php/loadCarsByChoice"; $.getJSON(carModelUrl, selection, function(json){ console.log("JSON: ", json); str += "<table>"; for (var i = 0; i < json.length; i++) { str += "<tr><td>" + (i+1) + " - " + json[i].BrandName + "</td><td>" + json[i].Model + "</td><td>" + json[i].Colour + "</td><td><img src='../assets/" + json[i].BrandName + ".jpg'></img></td></tr>"; } str += "</table>"; document.getElementById("placeholder").innerHTML=str; }); }); }); }) </script> </head> <body> <h1>Choose a car to see details</h1> <form> <select id="select"> <?php for ($i=0; $i < count($data); $i++) { echo "<option value='".$data[$i]."'>".$data[$i]."</option>"; } ?> </select> </form> <div id="placeholder"></div> </body> </html>
e questi sono due metodi che ho nel model (il primo getBrandNames() serve per mostrare i dati nella select, il secondo deve ricevere la richiesta ajax con il valore selezionato e ritornare i dati)codice:function loadCarsByChoice(){ $data = $this->model->getBrandNames(); $this->load->view('loadCarsByChoice', $data); }
codice:public function getBrandNames(){ try{ $sql = "SELECT DISTINCT BrandName FROM Cars"; $stmt = $this->dbHandler->query($sql); $data = $stmt->fetch(); $result = null; $i = 0; while($data = $stmt->fetch()){ $result[$i] = $data['BrandName']; $i++; } }catch(PDOEXception $e){ print new Exception($e->getMessage()); } $this->dbHandler = NULL; return $result; } public function getCarDetails(){ $carName = $_GET; try{ $sql = "SELECT * FROM Cars WHERE BrandName = '". $carName . "'"; $stmt = $this->dbHandler->query($sql); $result = null; $i = 0; while($data = $stmt->fetch()){ $result[$i]['BrandName'] = $data['BrandName']; $result[$i]['Model'] = $data['Model']; $result[$i]['Colour'] = $data['Colour']; $i++; } }catch(PDOEXception $e){ print new Exception($e->getMessage()); } $this->dbHandler = NULL; return json_encode($result); }


Rispondi quotando