Problème de DELETE FROM en phpmysql...

Taku -  
 Taku -
Bonjour,

Ça fait maintenant trois jours que je ne sais plus comment faire pour régler ce problème... Je m'explique :

Sur une de mes pages j'ai le code suivant :
?>
<tr valign=top><td><a href="Traitement.php?do=DelCon&con=<? echo $rowConcert['index']; ?>" onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette entrée?'));"><font color=red>SUPPRIMER</font></a></td><td><? echo $Date; ?></td><td><? echo $rowConcert['Lieu']; ?></td><td><? echo $Heure; ?></td><td><? echo $rowConcert['Description']; ?></td><td><? echo $rowConcert['Entree']; ?></td></tr>
<?


Donc ce code me permet d'afficher tout ce qui vient de ma table Concerts et, lorsque l'on clique dessus, me renvoye sur ma page traitement.php avec deux variables : do (retourne DelCon et con (qui me retourne l'id de la video dans la table).

Jusque la tout fonctionne, mais sur traitement.php vient mon problème :
if ($do == "DelCon"){
	$con = @$_GET['con'];
	mysql_query("DELETE FROM Concerts WHERE index = '$con'");
	header('Location: admin.php');
	}


Donc, après vérif, ce n'est pas un problème de la variable $do.... Car j'entre dans le if. C'est donc ma requête qui ne veut pas aboutir. Je vous prévient déjà que j'ai, je pense, essayer toutes les façon du monde avec les guillemets et que rien n'y fait. Il y a un autre point louche, sur la même page il y'a ce petit bout de code :
if ($do == "DelVid"){
	$vid = @$_GET['vid']."%";
	mysql_query("DELETE FROM Videos WHERE lien LIKE '$vid'");
	header('Location: admin.php');    
	}


qui la, lui, fonctionne parfaitement de la meme manière, à la seul différence que j'utilise un like et rajoute un % après ma variable.

Je ne comprend vraiment rien... AU SECOURS T_T
A voir également:

13 réponses

Utilisateur anonyme
 
Bonjour

WHERE index = '$con'");
Index est un mot réservé, si tu testais le résultat de la requête tu verrais qu'il y a une erreur
Soit tu changes le nom du champ index, soit tu l'entoures d'accents graves (touche Altgr 7)
0
Taku
 
D'accord merci beaucoup (les guillement spéciaux n'y on rien fait mais après changement de l'index, tout va mieux...)

Je me permet de poser une autre question... Même cas de figure mais cette fois :

if ($do == "Texte"){ 
 $Texte = @$_POST['Texte'] ; 
 mysql_query("UPDATE Article SET Accueil = '$Texte'"); 
 header('Location: admin.php'); 
 } 


Je sèche également la dessus... Mon update ne fonctionne pas... Désoler...
0
Utilisateur anonyme
 
i
f (isset($_POST['Texte'])) {
$Texte = mysql_real_escape_string($_POST['Texte']) ; 
...
}

Car s'il y a des apostrophes dans $_POST['Texte'], ta requête devient incorrecte.
Il faut aussi ABSOLUMENT que tu ajoutes une condition WHERE à ton update, sinon, ce sont tous les champs Accueil qui vont prendre la nouvelle valeur en même temps. Je doute que ce soit l'effet recherché.

les guillement spéciaux n'y on rien fait Mais si ça marche, tu n'avais pas dû les mettre au bon endroit.
0
Taku
 
Merci de prendre du temps pour me répondre :) Néanmoins ma requête ne fonctionne toujours pas... Une autre idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Pourquoi ne mets tu rien pour essayer de comprendre l'erreur ?
mysql_query("UPDATE Article SET Accueil = '$Texte'") or die(mysql_error());
0
Taku
 
Il faut vraiment que je m'y remette, je ne me souvenais plus de ce genre de chose. Malheureusement il me dit le fameux error avec le field list :

Unknown column 'Accueil' in 'field list'

après recherche je n'ai toujours pas trouver d'ou cela pourrait venir. Si j'ai bien compris, il ne trouve pas mon champs accueil dans ma table ? Pourtant après vérification tout est correcte du coté de la base de donnée... Je nage T__T
0
Utilisateur anonyme
 
accueil ou Accueil ? Attention aux majuscules / minuscules
0
Taku
 
Non non effectivement c'est juste c'est bien avec une majuscule :)
0
Utilisateur anonyme
 
mysql se trompe rarement, s'il te dit que ce champ n'existe pas, c'est très très très probablement qu'il n'existe pas. J'estime la probabilité à 100% ^^

C'est bien dans la table Article ?

Peux-tu donner la définition de ta table (obtenue avec la fonction exporter de phpmyadmin par exemple)
0
Taku
 
CREATE TABLE IF NOT EXISTS 'Article' (
  'IdArticle' int(11) NOT NULL AUTO_INCREMENT,
  'Titre' text NOT NULL,
  'Contenu' text NOT NULL,
  PRIMARY KEY ('IdArticle')
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Contenu de la table 'Article'
--

INSERT INTO 'Article' ('IdArticle', 'Titre', 'Contenu') VALUES
(1, 'Accueil', 'Tr?®s jeune, elle ?©tudie la guitare classique et le chant lyrique pour lequel elle obtient en <b>1981 un Dipl?¥me professionne [...]


Voila, j'ai juste tronquer le contenu (long).
0
Utilisateur anonyme
 
Effectivement, tu n'as pas de champ Accueil

¨Tu as des champs idArticle, Titre et Contenu

Le mot 'Accueil' que tu vois n'est pas le nom d'un champ, mais la valeur contenue dans un champ.
0
Utilisateur anonyme
 
Je pense que ce que tu cherchais à faire c'est

$Texte = mysql_real_escape_string($_POST['Texte']) ;
mysql_query("UPDATE Article SET Contenu = '$Texte'" WHERE Titre='Accueil' );
Mais ce n'est pas logique de sélectionner un enregistrement par le champ 'Titre' plutôt que par IdArticle.
0
Taku
 
champs... Titre... Where... Accueil... J'ai honte... MERCI !!!
0
Utilisateur anonyme
 
Tu as vu que j'ai posté en même temps que toi ?
0
Taku
 
Haha oui :p encore merci, et je vais chercher par l'id du coup :)
0