Afficher/supprimer le contenu d'une bdd en fonction d'un id précis - PHP - Programmation
Marsh Posté le 14-03-2011 à 11:20:17
Je crois qu'il manque la balise fermante du form.
Et name="actu" pourrai mieux fonctionner.
Marsh Posté le 14-03-2011 à 11:34:01
Merci
Mais cela ne me permets pas de récupérer la valeur du SELECT.
Une fois que je pourrais la récupérer, le site pourra afficher les infos.
Ce ne sera qu'en suite que j'inclurai un
Code :
|
Sachant, que je ne saurai pas quoi insérer pour le where.
Marsh Posté le 14-03-2011 à 11:34:57
Bah quand tu fait submit dans le PHP t'as $_POST["actu"] quoi...
Marsh Posté le 14-03-2011 à 11:37:43
Merci, et ensuite, comment exploiter ce $_POST["actu"] pour par exemple, afficher la news qui correspond à l'actu sélectionnée via le menu déroulant ?
Marsh Posté le 15-03-2011 à 17:48:07
Je me permets un petit up, comment feriez-vous pour afficher/supprimer le contenu d'une bdd en fonction d'un id précis ?
J'imagine que ce doit être quelque chose comme ça :
Code :
|
Ou
Code :
|
Mais je ne parviens pas à trouver la syntaxe exacte.
Marsh Posté le 16-03-2011 à 10:01:26
Pour l'affichage :
SELECT titre, contenu FROM news_utilisateur WHERE id =".$donnees['id']."
Suppression :
DELETE FROM news_utilisateur WHERE id =".$donnees['id']."
(http://sql.1keydata.com/fr/sql-delete.php)
Marsh Posté le 16-03-2011 à 10:40:59
AzOo a écrit : Pour l'affichage : |
Merci à toi, suite à ton message, j'ai essayé les deux :
Code :
|
Code :
|
Mais dans les deux cas :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\Pages\esphp.php on line 37
L’intégralité du code :
Code :
|
Marsh Posté le 16-03-2011 à 10:45:10
la query doit etre une string.
$reponse = $bdd->query("DELETE FROM news_utilisateur WHERE id =".$donnees['id']." " );
Marsh Posté le 16-03-2011 à 10:52:10
Merci
J'ai testé ceci :
Code :
|
ou recopié ce que tu indiques :
Code :
|
Dans les deux cas, le serveur renvoie :
( ! ) Fatal error: Uncaught exception 'PDOException' with message '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 '' at line 1' in C:\wamp\www\Pages\esphp.php on line 37
( ! ) PDOException: 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 '' at line 1 in C:\wamp\www\Pages\esphp.php on line 37
Marsh Posté le 21-03-2011 à 12:08:01
- Pourquoi rajouter un espace à la fin de tes requêtes SQL ?
- Tu devrais utiliser les requêtes préparées avec PDO.
- Essaye de faire un echo "SELECT ... " en passant en paramètre tout ce que tu passes en paramètre au $bdd->query(), et copie-colle le résultat dans PHPMyAdmin (ou autre interface d'administration)
- Essaye aussi de mettre un try/catch autour de la requête et d'afficher le détail de l'exception avec un print_r
Marsh Posté le 21-03-2011 à 12:09:41
En fait, ligne 37, tu n'as plus de $donnees, donc ta requête est :
Code :
|
Est-ce qu'il ne faudrait pas mettre plutôt
Code :
|
edit : ce que j'ai dit sur les requêtes préparées reste valable !
Marsh Posté le 21-03-2011 à 13:03:02
Merci pour ces nouveaux conseils.
J'ai essayé de me renseigner à propos du PDO::prepare sans trop avoir compris.
Par contre, j'ai entouré d'un try/catch, mais n'ayant plus d'erreur, celui-ci n'est plus nécessaire :
Code :
|
fonctionne parfaitement
Par contre, je ne sais pas comment afficher l'info en question, j'ai essayé ceci :
Code :
|
Mais il m'affiche ceci : Cannot use object of type PDOStatement as array in C:\wamp\www\Pages\esphp.php on line 43
Marsh Posté le 21-03-2011 à 13:16:09
quand tu copies ton code, indique quelle ligne correspond au numéro de l'erreur (43 en l’occurrence) ...
l'erreur dit que ligne 43 (probablement la ligne 11 ci-dessus), tu essayes d'utiliser un objet PDOStatement comme un tableau.
Il s'agit de $donnees2.
Si tu regardes la ligne d'au dessus, tu as mis $donnees2 = $dotat.
$dotat est effectivement un object PDOStatement.
Comment le convertir en tableau : tu vas sur la doc de PDOStatement
http://php.net/manual/fr/class.pdostatement.php
et tu cherches ...
D'ailleurs, tu l'as déjà fait dans ton code précédent.
Marsh Posté le 21-03-2011 à 13:42:19
Merci !
Je pensais justement pouvoir échapper à cette phase, et n'avais pas vu le lien entre celle-ci et le fait qu'il s'agisse d'un object PDOStatement.
Le truc est que désormais, le serveur ne trouve pas la variable donnees2 :
Code :
|
Marsh Posté le 21-03-2011 à 13:51:19
- Quel est le résultat ?
- Pourquoi te connectes-tu deux fois à la base de données ?
- le !empty() rend inutile le isset()
- pour utiliser les requêtes préparées, au lieu de :
Code :
|
utilise :
Code :
|
Marsh Posté le 21-03-2011 à 14:24:53
Merci encore
Suite à tes conseils, j'ai nettoyé le code et été me documenter :
Code :
|
À terme, je placerai la préparation en haut de page, à la place de ce que j'avais fait.
Marsh Posté le 14-03-2011 à 11:03:19
Bonjour,
Je cherche supprimer la dernière entrée d'une base de donnée au moyen d'un bouton de formulaire.
Pour tenter d'atteindre l'objectif, pourquoi ne pas tenter de passer par une liste déroulante :
Pour le moment, ce formulaire se contente d'afficher les titres.
Le problème est que je ne parviens pas à récupérer la valeur du SELECT.
Celle-ci me permettrait d'afficher sous le menu déroulant, la news correspondant à la valeur prise par l'OPTION.
Une idée pour y parvenir (avec ou sans JS) ?
Message édité par orang le 15-03-2011 à 18:38:48