Note that there are some explanatory texts on larger screens.

plurals
  1. PORetrieve datas with MySQL & Backbone JS
    primarykey
    data
    text
    <p>I hope you can help me. I'm trying to fetch datas from my database with mysql and backbone. The thing is that I can create a « user », and I can get all of them. But when I try to make :</p> <pre><code>var user = new User({id: 10}); </code></pre> <p>I always have this type of result, wichever the given id :</p> <pre><code>Object {id: "10", nom: "", age: "", prenom: ""} </code></pre> <p>But I get a response from my server:</p> <pre><code>[{"id":"10","nom":"test","prenom":"test","age":"12"}] </code></pre> <p>So, the GET request is executed, and return something not saved in the « user » variable.</p> <p>For more explanations, here is my script</p> <pre><code>// The model var User = Backbone.Model.extend({ defaults: { id:"", nom:"", age:"", prenom:"" }, url: function(){ if (this.isNew()){ return "./users.php"; } else { return "./users.php?id=" + this.id; } } }); // The collection var Users = Backbone.Collection.extend({ models:"user", url:"./users.php" }); // The view var EditUser = Backbone.View.extend({ el: ".page", render: function(options) { var that = this if (options.id) { var user = new User({id: options.id}); console.log(user.toJSON()); user.fetch({ success: function(user){ var template = _.template($('#edit-user-template').html(), {user: user}); that.$el.html(template); } }) } else { var template = _.template($('#edit-user-template').html(), {user:null}); this.$el.html(template); } }, events: { 'submit .edit-user-form' : 'saveUser', }, saveUser: function(ev){ data = $(ev.currentTarget).serializeObject(); var user = new User(); user.save(data, { success: function(user) { router.navigate('', {trigger:true}) } }); return false; } }); </code></pre> <p>And my users.php</p> <pre><code>&lt;?php $request_method = strtolower($_SERVER['REQUEST_METHOD']); switch($_SERVER['REQUEST_METHOD']){ case 'POST': save(); break; case 'GET': fetch(); break; case 'PUT': save(); break; case 'DELETE': // delete item destroy(); break; } function fetch() { $pdo=new PDO("mysql:dbname=nomade;host=localhost","",""); $sql = "SELECT * FROM users"; if (isset($_GET['id'])) $sql .= " WHERE id =".$_GET['id']; $statement=$pdo-&gt;prepare($sql); $statement-&gt;execute(); $results=$statement-&gt;fetchAll(PDO::FETCH_ASSOC); echo json_encode($results); } function save() { $pdo=new PDO("mysql:dbname=nomade;host=localhost","",""); $data = json_decode(file_get_contents('php://input')); $nom = $data-&gt;{'nom'}; $prenom = $data-&gt;{'prenom'}; $age = $data-&gt;{'age'}; $statement=$pdo-&gt;prepare("INSERT INTO users (prenom, nom, age) VALUES ('".$nom."','".$prenom."',$age)"); $statement-&gt;execute(); $results=$statement-&gt;fetchAll(PDO::FETCH_ASSOC); echo json_encode($results); } ?&gt; </code></pre> <p><strong>EDIT</strong> When I make a</p> <pre><code>var user = new User({id: options.id}); user.fetch({ success: function(user){ console.log(user.attributes[0]); // var template = _.template($('#edit-user-template').html(), {}); // that.$el.html(template); } }); </code></pre> <p>I get this :</p> <pre><code> Object {id: "5", nom: "dsfsdfqds", prenom: "qsdfqsdf", age: "12"} </code></pre> <p>Why ? </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload