|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Stefano WRInaute occasionnel

Inscrit le: 12 Fév 2006 Messages: 236 Localisation: Paris
|
Posté le : Jeu Mai 29, 2008 13:00 Sujet du message: Effacer ligne base de données |
|
|
Bonjour,
Je préviens que je suis un autodidacte (encore niveau débuttant) en php.
Voici mon problème j'ai créé un petit script php avec un formulaire pour pouvoir mettre en ligne des actualités.
Il marche très bien. Or, pour l'instant dès que l'événement est passé je me connecte à la base de données et je l'efface manuellement. Mais ce n'est pas très pratique. Je pensais donc créer un petit formulaire où écrire l'id de l"actualité à effacer.
Voici mes problème :
le petit script pour effacer, pourtant banale ne marche pas du tout :
| Code: |
<?php
define('CONF_ONLY', true);
include("./config.php");
mysql_connect($dbhost , $dbuser , $dbpasswd);
mysql_select_db($dbname);
$sql = 'DELETE * FROM `t_mus` WHERE `idann` ='$id' ;';
$result = mysql_query($sql);
if($result)
{
echo("La suppression à été correctement effectuée") ;
}
else
{
echo("La suppression à échouée") ;
}
mysql_close();
?>
|
Il se connecte bien à la base de données mais :
- il n'efface rien du tout. Si je remplace '$id' par l'id de l'actu à supprimer rien ne se passe. Et pourtant le même script avec select affiche les infos de cette table.
- deuxième gros problème. Si j'arrive à faire marche cette instruction, je ne sais pas comment relier ce script à un formulaire pour que je lui donne l'id à supprimer.
Si vous avez des suggestions, je vous en remercie par avance. |
|
| |
|
 |
FloBaoti WRInaute passionné

Inscrit le: 30 Avr 2006 Messages: 594 Localisation: Montpellier
|
Posté le : Jeu Mai 29, 2008 13:24 Sujet du message: Effacer ligne base de données |
|
|
Ton problème est le SQL à priori, pas le PHP.
Un DELETE en SQL supprime forcément toute une "ligne", donc il ne faut pas spécifier les champs à supprimer.
La syntaxe est donc : DELETE FROM table WHERE condition; |
|
| |
|
 |
Stefano WRInaute occasionnel

Inscrit le: 12 Fév 2006 Messages: 236 Localisation: Paris
|
Posté le : Jeu Mai 29, 2008 13:42 Sujet du message: Effacer ligne base de données |
|
|
Bonjour,
t_mus est la table, je n'ai justement pas spécifié le champs.
J'ai donc élimine le *
$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id;';
Mais cela ne marche pas  |
|
| |
|
 |
BadProcESs WRInaute accro

Inscrit le: 28 Juil 2003 Messages: 2319 Localisation: Partout ("clusterisé") ;)
|
Posté le : Jeu Mai 29, 2008 13:43 Sujet du message: Effacer ligne base de données |
|
|
As-tu un message d'erreur ?
As-tu essayé de tester la requête dans l'administration de la base de données ? |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2255
|
Posté le : Jeu Mai 29, 2008 13:44 Sujet du message: Effacer ligne base de données |
|
|
| Toujours essayer sa requête dans un simple client sql avant toute intégration au code, et ceci pour n'importe quel langage. ex: l'onglet sql de phpmyadmin |
|
| |
|
 |
FloBaoti WRInaute passionné

Inscrit le: 30 Avr 2006 Messages: 594 Localisation: Montpellier
|
Posté le : Jeu Mai 29, 2008 13:46 Sujet du message: Effacer ligne base de données |
|
|
* signifie tous les champs en SQL. Donc tu avais bien spécifié "tous les champs".
Ensuite, une erreur PHP : '$id'
La concaténation se fait avec des points : '.$id.' |
|
| |
|
 |
Stefano WRInaute occasionnel

Inscrit le: 12 Fév 2006 Messages: 236 Localisation: Paris
|
Posté le : Jeu Mai 29, 2008 13:48 Sujet du message: Effacer ligne base de données |
|
|
| Citation: |
| As-tu essayé de tester la requête dans l'administration de la base de données ? |
DELETE FROM `t_mus` WHERE `idann` =6
comme ça, ça marche....
Dernière édition par Stefano le Jeu Mai 29, 2008 13:49; édité 1 fois |
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12346 Localisation: Toulouse
|
Posté le : Jeu Mai 29, 2008 13:48 Sujet du message: Effacer ligne base de données |
|
|
il te suffit de faire echo $sql en php pour voir ton erreur  |
|
| |
|
 |
Stefano WRInaute occasionnel

Inscrit le: 12 Fév 2006 Messages: 236 Localisation: Paris
|
Posté le : Jeu Mai 29, 2008 14:22 Sujet du message: Effacer ligne base de données |
|
|
| Citation: |
| il te suffit de faire echo $sql en php pour voir ton erreur |
Merci,
Mais rien ne s'affiche. Voilà tout le code dans post.php:
| Code: |
<?php
include("/config.php");
// Insertion dans la base
$id = $_GET["idann"];
mysql_connect($dbhost , $dbuser , $dbpasswd);
mysql_select_db($dbname);
$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';
$result = mysql_query($sql);
if($result)
{
echo("La suppression à été correctement effectuée") ;
}
else
{
echo("La suppression à échouée") ;
}
mysql_close();
?>
|
Il ne reconnait pas idann, car si je remplace le bon chiffre
ça marche.
L'idann est fourni par un formulaire :
| Code: |
<form name="f2" onSubmit="return check2()" METHOD="POST" ACTION="form.php">
<table border=0 cellpadding=3 width="549" align="center" cellspacing="0" bgcolor="#e8e8e8">
<tr>
<td width="144"><span style="font-size: 10pt;"><font face="Arial"><b>ID</b> :</td>
<td width="387">
<input type="text" name="idann" value="" size=30>
</td>
</tr>
<tr>
<td width="144">
<input type="reset" name="reset" value="Effacer">
</td>
<td align=RIGHT width="387">
<input type="submit" name=" O K " value=" OK ! ">
</td>
</tr>
</table>
</form> |
Peut-être que le problème est là.
Est-ce la fonction $_get qui récupère l'information ?
Merci encore. |
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12346 Localisation: Toulouse
|
Posté le : Jeu Mai 29, 2008 14:24 Sujet du message: Effacer ligne base de données |
|
|
>> $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';
apres ca tu met : echo $sql;
et tu aura ta requete telle qu'elle est éxécutée (et tu verras que $id est à la palce de sa valeur) |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2255
|
Posté le : Jeu Mai 29, 2008 14:26 Sujet du message: Effacer ligne base de données |
|
|
| Tu vas la mettre ta requete dans phpmyadmin ou pas ? lol |
|
| |
|
 |
webac WRInaute impliqué

Inscrit le: 04 Mar 2005 Messages: 305 Localisation: Ile de France
|
Posté le : Jeu Mai 29, 2008 14:28 Sujet du message: Effacer ligne base de données |
|
|
REMPLACE
$id = $_GET["idann"];
PAR
$id = $_POST["idann"]; |
|
| |
|
 |
mahdivitche WRInaute passionné

Inscrit le: 06 Jan 2008 Messages: 519 Localisation: Marrakech maroc
|
Posté le : Jeu Mai 29, 2008 14:33 Sujet du message: Effacer ligne base de données |
|
|
| peut étre le probleme dans la relation des tables |
|
| |
|
 |
seebz WRInaute impliqué

Inscrit le: 15 Avr 2007 Messages: 331
|
Posté le : Jeu Mai 29, 2008 14:56 Sujet du message: Effacer ligne base de données |
|
|
Simple quote , double quote !
| Code: |
| $sql = "DELETE FROM `t_mus` WHERE `idann`=$id"; |
|
|
| |
|
 |
Stefano WRInaute occasionnel

Inscrit le: 12 Fév 2006 Messages: 236 Localisation: Paris
|
Posté le : Jeu Mai 29, 2008 14:57 Sujet du message: Effacer ligne base de données |
|
|
| Citation: |
| Tu vas la mettre ta requete dans phpmyadmin ou pas ? lol |
Oui, je l'ai fait et donc ce n'est pas un problème de requête :
| Citation: |
| Citation: |
| As-tu essayé de tester la requête dans l'administration de la base de données ? |
DELETE FROM `t_mus` WHERE `idann` =6
comme ça, ça marche... |
.
| Citation: |
$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';
apres ca tu met : echo $sql; |
DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;La suppression à échouée
| Citation: |
$id = $_GET["idann"];
PAR
$id = $_POST["idann"]; |
très bonne suggestion car si je mets echo $id apparait le bon chiffre donc on est sur la bonne voie et je me demande pourquoi quand il se trouve après idann= il n'est pas remplacé  |
|
| |
|
 |
| |
|
|