IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

probleme de requête DELETE [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut probleme de requête DELETE
    Bonjour à tous,

    Je me prends la tête avec un formulaire pourtant très simple, le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    function supprimer_contrat($num_contrat) {
    	if($num_contrat != "") {
    		mysql_connect("localhost", "root", "") or die(mysql_error());
    		$req = "DELETE FROM contrats WHERE num_contrat = '".$num_contrat."'";
    		mysql_query($req) or die(mysql_error());
     
    		echo "Contrat numéro ".$num_contrat." supprimé";
    	}
    }
     
    ?>
     
     
    <form method="post" name="inter2dossier" action="#" onsubmit="<?php echo supprimer_contrat($_POST['num_contrat']); ?>">
    			<table>
     
    				<tr>
    					<td>Numéro du contrat à supprimer :</td><td><input class="saisie" type="text" name="num_contrat" /></td>
    				</tr>
    				<tr>
    					<td colspan="2">
    						<center><input type="submit" value="Supprimer" /></center>
    					</td>
    			</table>
    </form>
    Hélas ça ne marche pas !!
    J'ai fait une capture d'écran accessible dans les pièces jointes pour que ce soit plus parlant.

    Pouvez-vous m'aider ?
    Images attachées Images attachées  

  2. #2
    Membre chevronné
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Par défaut
    Salut,
    effectivement avec un fonction php sur le onsubmit cela n'est pas très claire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="<?php echo supprimer_contrat($_POST['num_contrat']); ?>"
    La fonction peut marcher mais elle ne sera pas appelé par le onsubmit mais juste traité lors du rechargement de la page par le formulaire. C'est pourquoi cela est à proscrire.

  3. #3
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    C'est ton formulaire qui est faux. Tu ne peux pas te permettre de faire un echo supprimer_contrat... Sa ne marche pas. Si déjà tu devrais utiliser eval mais c'est déconseillé.

    Fais plutôt une page delete-contrat.php sur laquelle tu as le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // Filtre de validation pour être sûr que la valeur contenu dans $_POST est correcte.
    include 'ta_fonction_supprimer_contrat';
    supprimer_contrat($_POST['num_contract']);
    // Redirection sur une autre page (page de confirmation par exemple)
    header('Location: index.php');
    ?>
    Puis dans l'action de ton formulaire tu met simplement delete-contrat.php.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  4. #4
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Salut,

    A mon avis, tu devrais plutot modifier ton code de cette maniere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
    //Ta fonction de suppression de contrat
     
    //Traitement de ton formulaire
    if(isset($_POST["contrat"]))
    {
            //Appel de ta fonction
            supprimer_contrat($_POST["contrat"]);
    }
    ?>
    //Formulaire de suppression de contrat
    <form method = "post" action = "tapage">
      //input text
    </form>
    Tu ne peut pas traiter une variable envoyée par le méthode post dans un onsubmit déclaré dans une balise form. Du moins, ce n'est pas logique !

    En attendant confirmation ...

    Cordialement

  5. #5
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Eh bien à toi de jouer maintenant, tu as le choix au niveau des corrections !

  6. #6
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    Effectivement je vais les essayer et je vous tiens au courant

  7. #7
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    J'ai utilisé la méthode de JML40 car je voulais rester dans la même page.

    Il y a du mieux mais maintenant j'ai une erreur de ON DELETE CASCADE

    Pourtant je viens de faire un alter table en ajoutant ON DELETE CASCADE.

    Voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cannot delete or update a parent row: a foreign key constraint fails (`intranet/dossiers`, 
    CONSTRAINT `dossiers_ibfk_89` FOREIGN KEY (`id_contrat`) REFERENCES `contrats` (`id_contrat`) 
    ON UPDATE CASCADE)

  8. #8
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    J'avais tout simplement oublié de mettre un ON UPDATE CASCADE sur une table.

    Comme quoi en fin de journée on est plus forcément très productif !!

  9. #9
    Membre éclairé Avatar de berti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 239
    Par défaut
    je crois bien que tu as oublie de dire sur quelle base tu te connectes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function supprimer_contrat($num_contrat) {
    	if($num_contrat != "") {
    		$connec=mysql_connect("localhost", "root", "") or die(mysql_error());
    		mysql_select_db("ta base de donnees",$connec);
    $req = "DELETE FROM contrats WHERE num_contrat = '".$num_contrat."'";
    		mysql_query($req) or die(mysql_error());
     
    		echo "Contrat numéro ".$num_contrat." supprimé";
    	}
    }
     
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] probleme requête delete
    Par MCarole dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/05/2009, 08h50
  2. pb requête delete/update avec opérateur like, connexion ADO
    Par jerome666 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/02/2006, 16h47
  3. Requête DELETE problème de WHERE ... ???
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 21/11/2005, 11h19
  4. Probleme de requête SQL
    Par breizhoo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h22
  5. [requête] DELETE + SELECT
    Par doohan dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/07/2003, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo