Page 1 sur 1

Supprimer information

Posté : 13 juin 2006, 09:13
par béka
Bonjour tout le monde, je ne sais pas pourquoi avec ce code je n'arrive pas a supprimer les informations qui sont dans les différentes tables.

Voila mon code :
<?php
/*********************************************************************/
/*				  Script d'administration de stage				     */
/*********************************************************************/

require ("../../../connexion.php");


	//$contenu=$_POST['contenu'];
$query5 = "SELECT * FROM demande_emploi";
$resultat5 = mysql_query($query5);
$id = $_POST['id'];
$nom_etudiant = $_POST['nom_etudiant'];
$nom_cv = $_POST['nom_cv'];

$query6 = "SELECT * FROM cv";
$result6 = mysql_query($query6);			
				
$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` AND $nom_cv=`cv`.`nom_cv`";
$result2 = mysql_query($query2);
if ($result2)
{
	$query = "DELETE FROM demande_emploi WHERE id='$id'";
	$result = mysql_query($query);
	if ($result)
	{
	
		if (unlink("../../../etudiant/depot/cv/$nom_cv"))
		{
		echo "le CV correspondant à cette demande a bien été supprimée"; 
		}
		else 
		{
		echo "impossible de supprimer le CV correspondant à cettte demande";
		}
	} else echo "impossible de suppr dans la table demande_emploi<br>";
} else echo "impossible de suppr dans la table cv<br>";

mysql_close($db);
echo "vos données ont bien été supprimées, veuillez à présent cliquer <a href=\"index.php\">ici</a>";
?>
En fait, quand j'éxecute ce script j'ai le message
impossible de suppr dans la table cv
ce qui signifie qu'aucune requète n'est éxécutée pourtant leur syntaxe est bonne?

Posté : 13 juin 2006, 09:15
par guilt92
Tu t'obstines a ne pas mettre les or die(mysql_error()) à la fin de tes query, pourtant on te le dit à chaque fois ;)

Sinon comme d habitude : as tu fais un echo $query2; pour voir si la requete fonctionne etc etc .....

Le probleme ici est

$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` ....

Je pense que $nom_etudiant n est pas un nom de champ de ta table....

(avec un echo de la requete tu l aurai vu :) )

Posté : 13 juin 2006, 09:16
par béka
oui c'est vrai j'y pense jamais

Posté : 13 juin 2006, 09:21
par béka
je viens, d'ajouter les echo et or die(mysql_error()) et j'ai le message suivant
Unknow table 'demande_emploi' in where clause

Posté : 13 juin 2006, 09:21
par guilt92

Le probleme est

$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` ....

Je pense que $nom_etudiant n est pas un nom de champ de ta table....

Posté : 13 juin 2006, 09:23
par béka
j'ai changé et j'ai mis ca :
$query2 = "DELETE FROM cv WHERE demande_emploi.nom_etudiant=cv.nom_etudiant AND demande_emploi.nom_cv=cv.nom_cv";
$result2 = mysql_query($query2) or die(mysql_error());
echo $query2;
et j'ai ce mesage d'erreur

Posté : 13 juin 2006, 09:24
par guilt92
Unknow table 'demande_emploi' in where clause
La table est inconnue... Il faut l ajouter dans le FROM :


$query2 = "DELETE FROM cv, demande_emploi WHERE demande_emploi.nom_etudiant=cv.nom_etudiant AND demande_emploi.nom_cv=cv.nom_cv";

Posté : 13 juin 2006, 09:25
par béka
oui mais je ne veux pas que ca supprime dans la table demande_emploi.
Si je la rajoute dans le FROM, ca va suppr dans a table demande_emploi non?

Posté : 13 juin 2006, 09:33
par guilt92
Euh d'ailleurs je ne suis meme pas sur que tu puisses mettre plusieurs nom de tables dans une requete DELETE. Désolé.

Si tu peux utiliser les sous requetes cela peut constituer une solution, sinon tu peux faire un SELECT avant pour connaitre le nom de l étudiant a supprimer puis le supprimer après dans la table.

Posté : 13 juin 2006, 09:34
par béka
je vois pas ce que tu veux dire
le nom de l'étudiant je le connais, c'est une variable que j'obtiens avec $_POST

Posté : 13 juin 2006, 09:35
par zeus
Pour commencer, explique nous ce que tu veux supprimer parce que quand je regarde la clause WHERE de ta requete, je me demande si tu veux réellement supprimer autant de cv :-k

Posté : 13 juin 2006, 09:39
par béka
je veux supprimer une annonce déposée par un etudiant (qui est donc stockée dans la table 'demande_emploi') et supprimer le cv correspondant a cette demande (stocké dans le répertoire cv/ et dont les informations sont stockées dans la table 'cv').
Oui je vois ce que tu veux dire zeus quand tu dis "je ne pense pas que tu veux réellement supprimer autant de cv" et c'est pour ca que j'avais utilisé au début la variable $nom_etudiant qui correspondait uniquement à un élève, celui que je voulais supprimer

Posté : 13 juin 2006, 10:00
par zeus
ok, dans ce que t'as dit guilt92, il est interdit de mettre une valeur à gauche du signe =
$query2 = "DELETE FROM `cv` WHERE `cv`.`nom_etudiant` = '".$nom_etudiant."'";
Sinon, tu es déseperant : on passe des heures à chaque fois à t'expliquer les mêmes choses :
-
or die(mysql_error())
déjà dit dans le post
- extraire les chaines des variables
"nom_etudiant` = '".$nom_etudiant."'"
plutot que
"nom_etudiant` = '$nom_etudiant'"
- encadrer les chaines par des ' dans une requete
- rechercher sur le forum et/ou sur le net. Ton message d'erreur était très significatif

Posté : 13 juin 2006, 11:01
par béka
voila mon nouveau code
<?php
/*********************************************************************/
/*				  Script d'administration de stage				     */
/*********************************************************************/

require ("../../../connexion.php");


	//$contenu=$_POST['contenu'];
$query5 = "SELECT * FROM demande_emploi";
$resulta = mysql_query($query5) or die(mysql_error());
$id = $_POST['id'];
while ($row = mysql_fetch_array($resulta)) { 
$nom_etudiant = ($row['nom_etudiant']);
}

//$query6 = "SELECT * FROM cv";
//$result6 = mysql_query($query6);			
				
$query2 = "DELETE FROM `cv` WHERE `cv`.`nom_etudiant` = '".$nom_etudiant."'";
$result2 = mysql_query($query2) or die(mysql_error());
echo $query2;
if ($result2)
{
	$query = "DELETE FROM `demande_emploi` WHERE `id`='".$id."'";
	$result = mysql_query($query) or die(mysql_error());
	if ($result)
	{
	
		if (unlink("../../../etudiant/depot/cv/".$nom_cv.""))
		{
		echo "le CV correspondant à cette demande a bien été supprimée"; 
		}
		else 
		{
		echo "impossible de supprimer le CV correspondant à cettte demande";
		}
	} else echo "impossible de suppr dans la table demande_emploi<br>";
} else echo "impossible de suppr dans la table cv<br>";
mais avec ceci, je n'arrive pas a supprimer le fichier cv qui est dans le répertoire cv pourtant il s'agit de la bonne fonction unlink() ?