Bonjour,
Voila je rencontre un petit problème avec mon code.
Je suis actuellement en train de développer un "trello-like", pour me faire la main sur PHP, JS et SQL
Une bonne partie de l'application est "faites", seulement j'ai un petit probleme au niveau des UPDATE qu'il pourrait y avoir si jamais je voulais modifier une tache.
Voila un aperçu :
Sur cet apercu la colonne de gauche me permet d'ajouter une card, une fois le formulaire remplit, les données sont envoyées dans ma bdd dans ma table "todo" je les récupèrent ensuite pour créer une card que je vais afficher dans la colonne "A faire" on obtient donc la card encadrée en rouge.
En état d'hover d'une card, une icone apparait pour éditer la card au clic sur cette icone on a ce petit menu qui apparait avec differentes options possible que vous pouvez voir (Modifier le titre, la description, la date etc..).
La fonction supprimer est fonctionnelle, elle supprime la card de ma bdd.
Je voudrais savoir comment mettre a jour le titre par exemple une fois que ca sera fais je pense que je serais a meme de faire le reste tout seul.
Actuellement au clic sur modifier le titre, je transform le text en input et je récupere la valeur qui etait deja présente pour la mettre dans l'input.
mon fichier main.js
<script>
$('.todo-task .menu_edit .menu_title').on('click', function(){
var title_card = $(e.target).parent().find('.task-header').text();
change_title = $(e.target).parent().find('.task-header').replaceWith("
<form action='../../php/todo_update.php' method='POST' id='form-title'>
<div class='input-field m0'>
<input type='text' name='change_title' id='change_title' class='change_title' value="+title_card+">
</div>
<button type='submit' name='submit_title' class='btn btn-primary save_change'>Sauvegarder</button>
</form>");
});
</script>
mon fichier todo_update.php
<?php
require 'dbconfig.php';
$db = new DB();
$newtitle = ($_POST['change_title']);
$db->updateTitle($newtitle);
?>
mon fichier dbconfig.php, je vous mets juste la fonction qui me pose probleme.
<?php
function updateTitle($newtitle, $id){
$query = $this->db->query(" UPDATE todo SET title={$newtitle} WHERE id={$id}");
}
?>
PS: Juste au dessus pour le WHERE id={id} je sais qu'il faut que je passe l'id de la card sur la quelle je veux modifier le titre mais je ne sais pas comment .. j'ai vu que je pouvais faire un input hidden mais je n'ai pas réussis a avoir le résultat voulu ..
Voila, en attente d'une réponse j'espere que j'ai été assez précis et clair.. merci beaucoup !
Axel.
Bonjour.
Pourquoi utilises-tu des accolades dans ta requête SQL ?
Il ne faut les utiliser que pour inclure un objet non pour une variable, tu devrais donc plutôt faire :
$query = $this->db->query("UPDATE todo SET title = $newtitle WHERE id = $id");
Par contre, à moins de traiter les données postées avant de faire appel à ta fonction ùpdateTitle
, tu devrais peut-être utiliser une requête préparée.
Sinon, quelle est l'utilité d'entourer la valeur de l'input par une paranthèse ($_POST['change_title'])
?
Bonjour, Je regarde a droite a gauche sur internet ce que je peux faire et comment je peux le faire donc je t'avoue que je ne saurais te donner de reponse de " Pourquoi utilises-tu des accolades dans ta requête SQL ? "
Je t'avoue que je suis vraiment débutant en PHP et je ne sais pas trop comment faire pour réussir a obtenir ce que je veux
Je t'avoue que je suis vraiment débutant en PHP
Dans ce cas là, formes toi un minimum sur le PHP, par exemple en suivant des tutoriels et/ou des formations concernant celui-ci, il y en a sur le site.
Bonjour Lartak, comme je l'ai précisé sur mon post, je me fais la main sur PHP et mySQL en créant ce TodoList, je suis venu ici pour trouver réponse a ma question et je t'avoue que ta réponse ne m'aide pas vraiment ..