Suppression ligne BD

Résolu
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   -  
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, J'ai une table Salle qui est composé d'un id auto inc, num_salle, description et nombre_poste.

Je voudrais qu'à partir d'un champ de mon site je puisse supprimer une ligne de cette BD en rentrant le numéro de la salle à enlever.

J'ai donc écrit ce code mais apparemment il ne fait rien a ma BD. La connexion est fonctionnelle.

<FORM Method="POST" Action="">
        Numéro de la salle à supprimer : <input type="text" name="nums" size=10 <br></br>
        <br></br>
        <input type="submit", name="submit" Value="Supprimer"> 
<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='')

{

$nums = $_POST['nums']; 
    
    $sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 

mysql_query($sql) or die(mysql_error()) ;

}

?></div></FORM>




De plus j'ai une table inventaire (num_salle,id_mat) qui montres du matériel dans des salles, je voudrais également rajouter un bout de code pour dire que si dans la salle il y a des choses dedans, impossible. Mais je ne sais pas comment faire. Merci d'avance.
A voir également:

13 réponses

sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
Bonjour ? Bonsoir ? Salut ?

Il manque un 's' à ta requête SQL

$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bien, et désolé de ma précipitation du post... Seriez-vous comment je pourrais faire pour avoir un message qui bloque la suppression si une salle contient des ordinateurs (si dans emplacement elle est référencé)?
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req)

if ($resultat[0] != 0) {
echo "Il y a du matériel dans cette salle !";
return;
}


"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
Si je présente le code comme ça, la page ne marche plus :

<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='')
$nums = $_POST['nums']; 

{

$sql = "SELECT COUNT(*) FROM Salles WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req)

	if ($resultat[0] != 0) {
	echo "Il y a du matériel dans cette salle !";
	return;
	}
	
    
    $sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 

mysql_query($sql) or die(mysql_error()) ;

}

?>
0

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

Posez votre question
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
Qu'est ce qui ne "marche" plus ? Quelles sont tes erreurs ?

$resultat=mysql_fetch_row($req)
il manque le ";"
if ($_POST['nums']!='')
$nums = $_POST['nums'];

{


Ce code n'a aucun sens. Tu créé toi même des erreurs par rapport à ton code précédent :

if ($_POST['nums']!='')
{
$nums = $_POST['nums'];

Il faut que tu mettes les codes
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
et
mysql_query($sql) or die(mysql_error()) ;
dans un else qui suit ton accolade précédente, sinon ce code sera exécuté même si
if ($resultat[0] != 0)
est faux (normalement non à cause du return, mais on sait jamais ; j'utilise rarement "return").


if ($resultat[0] != 0) {
echo "Il y a du matériel dans cette salle !";
} else {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error()) ;
}

Excuses moi de te poser cette question, mais est ce que tu comprends ce que tu fais ? parce là, tu fais des erreurs de quelqu'un qui vient juste de commencer à programmer, et si c'est le cas je te conseille fortement de suivre des cours de base en programmation PHP/SQL (via Openclassroom ou autres).

"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
Oui je comprend, je commence à programmer et j'ai fini mes tutoriels et cours ^^, c'est vrai que là dessus j'ai écris n'importe quoi.

J'ai donc ce code php

<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') 
{
$nums = $_POST['nums'];
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
mysql_query($sql) or die(mysql_error()) ;
}

$sql = "SELECT COUNT(*) FROM Salle WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);



	if ($resultat[0] != 0) {
	echo "Il y a du matériel dans cette salle !";
	return;
	}
	   

?>


Mais je peux toujours supprimer une salle qui contient des postes et avec la clé étrangères la ligne de la salle avec son poste part aussi de la table emplacement.
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
OK, tu n'as pas vu que j'avais modifié plusieurs fois mes messages, c'est de ma faute.

Je vais te donner la solution, ça ira plus vite. Essayes ce code :


<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') {
$nums = $_POST['nums'];

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);

if ($resultat[0] == 0) {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error());
echo "La salle $nums a bien été supprimée";
} else {
echo "Impossible de supprimer la salle $nums : il y a du matériel dans cette salle !";
}

}
?>
0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
Je te remercie, tout marche bien, j'ai changé inventaire par emplacement et par contre j'ai encore un petit soucis, je ne peux plus supprimer les salles remplies, je peux supprimer celles pas remplies mais dans les deux cas j'ai pas de messages. Les echo n'ont pas l'air de fonctionner
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
Je croyais qu'on ne devait pas pouvoir supprimer une salle qui avait du matériel à l'intérieur ? Et pourquoi la table "emplacement" ? C'est pas "inventaire" qui définit s'il y a du matériel dans les salles ?

0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
A la base c'est inventaire tu as raison, je ne sais plus pourquoi je l'ai renommé emplacement dans ma BD, à changer. Enfaite ce que j'ai voulu dire plus haut c'est que quand je supprime une salle (qui ne contient pas de matériel) je n'ai pas de message la salle ... à été supprimée. Et quand j'essaille de supprimer une salle qui contient du matériel, je clique et rien, il ne la supprime pas mais pas de messages non plus pour dire que c'est pas possible.
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
Ca serait mieux de faire ça dans une page HTML complète :


<html>
<head>
</head>
<body>
<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') {
$nums = $_POST['nums'];

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);

if ($resultat[0] == 0) {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error());
echo "La salle $nums a bien été supprimée";
} else {
echo "Impossible de supprimer la salle $nums : il y a du matériel dans cette salle !";
}

} else {
?>
<FORM Method="POST" Action="">
Numéro de la salle à supprimer : <input type="text" name="nums" size=10 <br></br>
<br></br>
<input type="submit", name="submit" Value="Supprimer">
<!-- Puis tout le code HTML du formulaire -->
<?php
}
?>
</body>
</html>


Complète les morceaux manquants, notamment au niveau du commentaire en HTML

"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
Je comprends pas pourquoi tu as rajouté le sql2 et de quel formulaire tu parles
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
J'ai retiré les requêtes sql2, c'était un test chez moi.

<FORM Method="POST" Action="">
C'est ça un formulaire. Il doit donc se terminer par la balise </FORM>
0