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 :

Le fichier de traitement.php de formulaire ne remonte rien [MySQL]


Sujet :

PHP & Base de données

  1. #41
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,

    Je pense que j'ai avancé côté Base de données.

    Je remet le code sql car j'ai une erreur
    Cannot add or update a child row: a foreign key constraint fails (`materiels`.`user_mobile`, CONSTRAINT `user_mobile_ibfk_5` FOREIGN KEY (`ID_USER_MOBILE`) REFERENCES `user_mobile_equipt` (`ID_USER_MOBILE`) ON DELETE CASCADE ON UPDATE CASCADE)
    Code sql : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    -- phpMyAdmin SQL Dump
    -- version 4.1.14
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Jeu 22 Janvier 2015 à 23:10
    -- Version du serveur :  5.6.17
    -- Version de PHP :  5.5.12
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
    --
    -- Base de données :  `materiels`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `equipements`
    --
     
    CREATE TABLE IF NOT EXISTS `equipements` (
      `ID_EQUIPEMENT` int(11) NOT NULL AUTO_INCREMENT,
      `CHARGEUR` char(20) NOT NULL,
      `CABLEUSB` char(20) NOT NULL,
      `CASQUE` char(20) NOT NULL,
      `CARTEMEMOIRE` char(20) NOT NULL,
      `COQUEHOUSE` char(20) NOT NULL,
      PRIMARY KEY (`ID_EQUIPEMENT`),
      FULLTEXT KEY `COQUEHOUSE` (`COQUEHOUSE`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `equipements`
    --
     
    INSERT INTO `equipements` (`ID_EQUIPEMENT`, `CHARGEUR`, `CABLEUSB`, `CASQUE`, `CARTEMEMOIRE`, `COQUEHOUSE`) VALUES
    (8, 'Chargeur', 'CableUSB', 'Casque', 'Cartememoire', 'CoqueHouse');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `ligne mobile`
    --
     
    CREATE TABLE IF NOT EXISTS `ligne mobile` (
      `ID_LIGNE` int(4) NOT NULL AUTO_INCREMENT,
      `SIM` bigint(30) NOT NULL,
      `NUMERO` char(12) NOT NULL,
      `COMPTE` varchar(100) NOT NULL,
      PRIMARY KEY (`ID_LIGNE`),
      UNIQUE KEY `SIM` (`SIM`),
      UNIQUE KEY `NUMERO` (`NUMERO`),
      KEY `COMPTE` (`COMPTE`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `ligne mobile`
    --
     
    INSERT INTO `ligne mobile` (`ID_LIGNE`, `SIM`, `NUMERO`, `COMPTE`) VALUES
    (8, 456, '0606060606', '0000000');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `pc`
    --
     
    CREATE TABLE IF NOT EXISTS `pc` (
      `PCMARQUE` varchar(100) NOT NULL,
      `PCMODELE` varchar(100) NOT NULL,
      `SNPC` int(20) NOT NULL,
      PRIMARY KEY (`SNPC`),
      KEY `MARQUE` (`PCMARQUE`,`PCMODELE`,`SNPC`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `telephone-mobile`
    --
     
    CREATE TABLE IF NOT EXISTS `telephone-mobile` (
      `ID_MOBILE` int(4) NOT NULL AUTO_INCREMENT,
      `MARQUE` char(25) NOT NULL,
      `MODELE` char(25) NOT NULL,
      `VALEUR` varchar(6) NOT NULL,
      PRIMARY KEY (`ID_MOBILE`),
      KEY `VALEUR` (`VALEUR`),
      FULLTEXT KEY `MARQUE` (`MARQUE`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `telephone-mobile`
    --
     
    INSERT INTO `telephone-mobile` (`ID_MOBILE`, `MARQUE`, `MODELE`, `VALEUR`) VALUES
    (8, 'NOKIA', '6700', '60');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `user`
    --
     
    CREATE TABLE IF NOT EXISTS `user` (
      `ID_AGENT` int(11) NOT NULL AUTO_INCREMENT,
      `NOM` char(25) NOT NULL,
      `PRENOM` char(25) NOT NULL,
      `EMAIL` char(25) NOT NULL,
      `SERVICE` char(25) NOT NULL,
      PRIMARY KEY (`ID_AGENT`),
      UNIQUE KEY `NOM` (`NOM`),
      UNIQUE KEY `EMAIL` (`EMAIL`),
      KEY `SERVICE` (`SERVICE`),
      KEY `PRENOM` (`PRENOM`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `user`
    --
     
    INSERT INTO `user` (`ID_AGENT`, `NOM`, `PRENOM`, `EMAIL`, `SERVICE`) VALUES
    (8, 'BRUZESSE', 'AGNES', 'a.bruzzese@cc-sudestuaire', 'FINANCES');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `user_mobile`
    --
     
    CREATE TABLE IF NOT EXISTS `user_mobile` (
      `ID_USER_MOBILE` int(12) NOT NULL AUTO_INCREMENT,
      `ID_AGENT` int(4) NOT NULL,
      `ID_MOBILE` int(4) NOT NULL,
      `ID_LIGNE` int(4) NOT NULL,
      `SN` char(20) NOT NULL,
      `IMEI` char(20) NOT NULL,
      `DATEREMISE` char(10) NOT NULL,
      `ETAT_REMISE` char(20) NOT NULL,
      `DATERETOUR` char(10) DEFAULT NULL,
      `ETAT_RETOUR` char(20) DEFAULT NULL,
      `COMMENTS` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`ID_USER_MOBILE`),
      KEY `ID_AGENT` (`ID_AGENT`),
      KEY `ID_MOBILE` (`ID_MOBILE`),
      KEY `ID_LIGNE` (`ID_LIGNE`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `user_mobile_equipt`
    --
     
    CREATE TABLE IF NOT EXISTS `user_mobile_equipt` (
      `ID_USER_MOBILE` int(4) NOT NULL,
      `ID_EQUIPEMENT` int(4) NOT NULL,
      PRIMARY KEY (`ID_USER_MOBILE`),
      KEY `ID_EQUIPEMENT` (`ID_EQUIPEMENT`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `user_mobile`
    --
    ALTER TABLE `user_mobile`
      ADD CONSTRAINT `user_mobile_ibfk_5` FOREIGN KEY (`ID_USER_MOBILE`) REFERENCES `user_mobile_equipt` (`ID_USER_MOBILE`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `user_mobile_ibfk_2` FOREIGN KEY (`ID_AGENT`) REFERENCES `user` (`ID_AGENT`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `user_mobile_ibfk_3` FOREIGN KEY (`ID_MOBILE`) REFERENCES `telephone-mobile` (`ID_MOBILE`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `user_mobile_ibfk_4` FOREIGN KEY (`ID_LIGNE`) REFERENCES `ligne mobile` (`ID_LIGNE`) ON DELETE CASCADE ON UPDATE CASCADE;
     
    --
    -- Contraintes pour la table `user_mobile_equipt`
    --
    ALTER TABLE `user_mobile_equipt`
      ADD CONSTRAINT `user_mobile_equipt_ibfk_3` FOREIGN KEY (`ID_USER_MOBILE`) REFERENCES `user_mobile` (`ID_USER_MOBILE`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `user_mobile_equipt_ibfk_2` FOREIGN KEY (`ID_EQUIPEMENT`) REFERENCES `equipements` (`ID_EQUIPEMENT`) ON DELETE CASCADE ON UPDATE CASCADE;

    En plus je ne peux plus vider la base d'un coup, pourtant tout est en cascade ! Ça devrait fonctionner non ?

    (Quand tout sera OK, j'importerai le fichier de BdD vierge, je partirai donc de zéro...)

    Côté php c'est pas top !

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($EQUIP as $values) {
      $requete = "INSERT INTO USER_MOBILE_EQUIPT ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( ".$values.",' ' )";
    Je rencontre
    Error: INSERT INTO USER_MOBILE_EQUIPT ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( CableUSB,'' ) ;
    Unknown column 'CableUSB' in 'field list'
    Merci encore pour ta patience Jérôme, c'est vraiment sympas de m'aider à comprendre.

    Jean-Michel

  2. #42
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ ce qui serait sympa de ta part, c'est de suivre mes instructions.
    Tu as gardé ta table "equipements" telle quelle, alors que je t'ai dit qu'elle est mal conçue.
    Code sql : 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
     
    --
    -- Structure de la table `equipements`
    --
    CREATE TABLE IF NOT EXISTS `equipements` (
      `ID_EQUIPEMENT` int(11) NOT NULL AUTO_INCREMENT,
      `NOM_EQUIPEMENT` varchar(100) NOT NULL,
      PRIMARY KEY (`ID_EQUIPEMENT`),
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
     
    --
    -- Contenu de la table `equipements`
    --
    INSERT INTO `equipements` (`ID_EQUIPEMENT`, `NOM_EQUIPEMENT`) VALUES
    (1, 'Chargeur'),
    (2, 'Cable USB'),
    (3, 'Casque'),
    (4, 'Carte mémoire'),
    (5, 'Coque House');
    Pour l'affichage des cases à cocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ID_EQUIPEMENT, NOM_EQUIPEMENT FROM equipements"
    A la récupération des cases cochées :
    a/ D'ABORD, il faut récupérer le dernier id créé lors de l'INSERT pour ID_USER_MOBILE -> $id_user_mobile
    b/ on efface la précédente config.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE FROM user_mobile_equipt WHERE ID_USER_MOBILE = ".$id_user_mobile.";";
    c/ on enregistre la config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ( $EQUIP as $value){
       "INSERT INTO user_mobile_equipt ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( ".$id_user_mobile.", ".$value." );";
    }
    2/
    • table `ligne mobile`
    • table `telephone-mobile`
    • table `user_mobile`

    Essaie au moins de rester cohérent, et choisis la même règle d'écriture pour tous !
    • table `ligne_mobile`
    • table `telephone_mobile`
    • table `user_mobile`


    3/ Que viennent faire ces "Contraintes" dans le SQL ??
    Repars de tables vierges, et tu seras tranquille.

  3. #43
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,

    Je suis désolé, j'ai compris de travers...
    Je comprends mieux,vu que je gère ma base avec phpmyadmin... pas en ligne de commande
    Je ne savais pas qu'on pouvait intégrer directement du contenu de cette manière.

    Petit à petit j'apprends...


    Quand tu écris :
    A la récupération des cases cochées :
    a/ D'ABORD, il faut récupérer le dernier id créé lors de l'INSERT pour ID_USER_MOBILE -> $id_user_mobile
    b/ on efface la précédente config.
    C'est au cas ou je changerai l'enregistrement des équipements d'un user, je suppose ?

    Oui, effectivement je manque de rigueur côté écriture et franchement c'est ni top, ni facile à suivre...

    Pour les contraintes sql, elle sont liées aux vue relationnelles croisées entre les tables dans phpmyadmin (c'est lié au moteur "Innodb" il me semble) !

    Il ne faut pas les mettre ?

    Et pour faire suite, vu qu'une image vaut mieux (parfois) qu'un discours :

    Nom : Sans titre.png
Affichages : 123
Taille : 48,9 Ko

    Je ne comprend même pas pourquoi le "vardump" est renvoyé deux fois (sauf si il est renvoyé autant de fois que de case cochées...)

    Merci encore Jérôme.

  4. #44
    Invité
    Invité(e)
    Par défaut
    1/
    Citation Envoyé par Jean-Michel G Voir le message
    C'est au cas ou je changerai l'enregistrement des équipements d'un user, je suppose ?
    tout-à-fait.
    Pour l'instant tu n'as qu'un formulaire d'inscription ("INSERT...").
    Tu pourrais plus tard proposer (quasi) le même formulaire, en modification ("UPDATE...").

    2/ "undefined variable..." veut dire que la variable n'est pas définie. Vérifie.

    Mais sans le code... on ne peut rien dire de plus...
    Dernière modification par Invité ; 24/01/2015 à 05h56.

  5. #45
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,

    Je remets le code

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
     
    <?php
     
    // Parametres mysql
    define('DB_SERVER', 'localhost'); // serveur mysql
    define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', ''); // mot de passe
    define('DB_DATABASE', 'materiels'); // nom de la base
    // Connexion au serveur mysql
    $connect = mysqli_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE) or die('Impossible de se connecter : ' . mysqli_error());
    // sélection de la base de données
    $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis:
    <br/><br/>";
    $msg_erreur2 = "Oops !!! Il doit manquer quelques choses.";
    $msg_ok = "Matériel enregistré.";
    $message = $msg_erreur;
    $message2 = $msg_erreur2;
    $MARQUE = $_POST['MARQUE'];
    $MODELE = $_POST['MODELE'];
    $SN = $_POST['SN'];
    $IMEI = $_POST['IMEI'];
    $SIM = $_POST['SIM'];
    $NUMERO = $_POST['NUMERO'];
    $VALEUR = $_POST['VALEUR'];
    $COMPTE = $_POST['COMPTE'];
    $EQUIP = (!empty($_POST['EQUIPEMENTS']) ) ? $_POST['EQUIPEMENTS'] : array();
    $NOM = $_POST['NOM'];
    $PRENOM = $_POST['PRENOM'];
    $EMAIL = $_POST['EMAIL'];
    $SERVICE = $_POST['SERVICE'];
    $DATEREMISE = $_POST['DATEREMISE'];
    $remise = (!empty($_POST['remise'])) ? $_POST['remise'] : array();
    $DATERETOUR = $_POST['DATERETOUR'];
    $retour = $_POST['retour'];
    $COMMENTS = $_POST['COMMENTS'];
     
     
     
     
     
    // vérification des champs
    if (empty($MARQUE)) {
        $message .= "MARQUE DU MOBILE<br/>";
    }
    if (empty($MODELE)) {
        $message .= "MODELE DU MOBILE<br/>";
    }
    if (empty($SN)) {
        $message .= "S/N DU MOBILE<br/>";
    }
    if (empty($IMEI)) {
        $message .= "IMEI<br/>";
    }
    if (empty($SIM)) {
        $message .= "SIM<br/>";
    }
    if (empty($NUMERO)) {
        $message .= "NUMERO DE MOBILE<br/>";
    }
    if (empty($VALEUR)) {
        $message .= "VALEUR DU MOBILE<br/>";
    }
    if (empty($COMPTE)) {
        $message .= "NUMERO DU COMPTE<br/>";
    }
    if (empty($NOM)) {
        $message .= "NOM<br/>";
    }
    if (empty($PRENOM)) {
        $message .= "PRENOM<br/>";
    }
    if (empty($EMAIL)) {
        $message .= "EMAIL<br/>";
    }
    if (empty($SERVICE)) {
        $message .= "SERVICE<br/>";
    }
    if (empty($DATEREMISE)) {
        $message .= "DATE DE REMISE<br/>";
    }
    if (empty($remise)) {
        $message .= "ETAT DE REMISE<br/>";
    }
    if (!empty($DATERETOUR)) {
     
    }
    if (!empty($COMMENTS)) {
     
    }
     
     
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) {
     
        echo $message;
     
    // sinon c'est ok
    } else { {
            $requete = "INSERT INTO `telephone_mobile` (MARQUE, MODELE, VALEUR) VALUES ('" . $MARQUE . "', '" . $MODELE . "', '" . $VALEUR . "')";
            //$resultat = mysqli_query($connect, $requete);
        } if (mysqli_query($connect, $requete)) {
            echo "Téléphone mobile enregistré" . "<br>";
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        } {
            $requete = "INSERT INTO `user_mobile` (IMEI, SN, DATEREMISE, ETAT_REMISE, DATERETOUR, ETAT_RETOUR, COMMENTS) VALUES ('" . $IMEI . "', '" . $SN . "', '" . $DATEREMISE . "', '" . $remise . "', '" . $DATERETOUR . "', '" . $retour . "', '" . $COMMENTS . "')";
            //$resultat = mysqli_query($connect, $requete);
        } if (mysqli_query($connect, $requete)) {
            echo "User mobile enregistré" . "<br>";
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        } {
            $requete = "INSERT INTO `ligne_mobile` (SIM, NUMERO, COMPTE) VALUES ('" . $SIM . "', '" . $NUMERO . "', '" . $COMPTE . "')";
            //$resultat = mysqli_query($connect, $requete);
        }if (mysqli_query($connect, $requete)) {
            echo "Ligne enregistré";
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        }
        if (!empty($EQUIP)) {
     
     
            foreach ($EQUIP as $value) {
                $requete = "INSERT INTO user_mobile_equipt ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( '" . $ID_USER_MOBILE . "', '" . $value . "' )";
     
     
                var_dump($EQUIP);
            } 
     
     
             if (mysqli_query($connect, $requete)) {
                echo "Equipement enregistré";
            } else {
                echo "Error: " . $requete . "<br>" . mysqli_error($connect);
            }
        } {
            $requete = "INSERT INTO user (NOM, PRENOM, EMAIL, SERVICE) VALUES ('" . $NOM . "', '" . $PRENOM . "', '" . $EMAIL . "', '" . $SERVICE . "')";
            $resultat = mysqli_query($connect, $requete);
        }
        if ($resultat) {
            echo $msg_ok;
            mysqli_close($connect);
        } else {
            echo $message2;
        }
    }
    ?>
    et l'erreur

    Nom : Sans titre.png
Affichages : 137
Taille : 39,1 Ko

    Question : est-ce que php ne détecte pas une variable automatiquement dans ce cas de figure vu que c'est déjà dans sql ?
    Enfin, je l'ai compris comme ça.

    J'ai essayé avec un SELECT placé en amont mais ça ne donne rien de mieux !

    Et encore le vardump qui apparait en double ...

    Apparemment la boucle se fait deux fois !

    Ohlala....................

  6. #46
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut apprendre à lire et comprendre les messages d'erreur.
    Là il t'indique le type d'erreur et le numéro de ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           foreach ($EQUIP as $value) {
                $requete = "INSERT INTO user_mobile_equipt ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( '" . $ID_USER_MOBILE . "', '" . $value . "' )";
    $ID_USER_MOBILE n'est pas défini !

    Il faut le récupérer de la requête précédente dans la table `user_mobile`, car il s'agit de l'id (index auto-incrémenté) de l'enregistrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            $requete = "INSERT INTO `user_mobile` (IMEI, SN, DATEREMISE, ETAT_REMISE, DATERETOUR, ETAT_RETOUR, COMMENTS) VALUES ('" . $IMEI . "', '" . $SN . "', '" . $DATEREMISE . "', '" . $remise . "', '" . $DATERETOUR . "', '" . $retour . "', '" . $COMMENTS . "')";
    Après cette requête, tu peux récupérer l'id créé grâce à : mysqli_insert_id
    N.B. quand je mets un lien : clique dessus

    Par conséquent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            $requete = "INSERT INTO `user_mobile` (IMEI, SN, DATEREMISE, ETAT_REMISE, DATERETOUR, ETAT_RETOUR, COMMENTS) VALUES ('" . $IMEI . "', '" . $SN . "', '" . $DATEREMISE . "', '" . $remise . "', '" . $DATERETOUR . "', '" . $retour . "', '" . $COMMENTS . "')";
            //$resultat = mysqli_query($connect, $requete);
        } if (mysqli_query($connect, $requete)) {
            echo "User mobile enregistré" . "<br>";
            $ID_USER_MOBILE = mysqli_insert_id($connect); // on récupère l'id créé
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        } {
    Revois aussi ta gestion d'erreur.
    Car quand une requête ne fonctionne pas, il ne faut pas passer à l'étape suivante, mais arrêter le processus.

  7. #47
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir Jérôme,

    il faut apprendre à lire et comprendre les messages d'erreur.
    Là il t'indique le type d'erreur et le numéro de ligne.
    Ça je l'ai bien lu, c'est la façon de définir la variable que je n'avais pas trouvé, tu as répondu à ma question.

    Il y a tellement de fonctions....

    Merci encore.

    J'applique et je te tiens au courant.

  8. #48
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Il y a du nouveau. Pour l'ensemble ça fonctionne, mais l'ID_EQUIPEMENT ne remonte pas !

    Voici l'extrait du code

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    if (strlen($message) > strlen($msg_erreur)) {
     
        echo $message;
     
    // sinon c'est ok
    } else { {
            $requete = "INSERT INTO `telephone_mobile` (MARQUE, MODELE, VALEUR) VALUES ('" . $MARQUE . "', '" . $MODELE . "', '" . $VALEUR . "')";
            //$resultat = mysqli_query($connect, $requete);
        } if (mysqli_query($connect, $requete)) {
            echo "Téléphone mobile enregistré" . "<br>";
            $ID_MOBILE = mysqli_insert_id($connect); // on récupère l'id créé
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        } {
            $requete = "INSERT INTO `ligne_mobile` (SIM, NUMERO, COMPTE) VALUES ('" . $SIM . "', '" . $NUMERO . "', '" . $COMPTE . "')";
            //$resultat = mysqli_query($connect, $requete);
        }if (mysqli_query($connect, $requete)) {
            echo "Ligne enregistré" . "<br>";
            $ID_LIGNE = mysqli_insert_id($connect); // on récupère l'id créé
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        } {
            $requete = "INSERT INTO user (NOM, PRENOM, EMAIL, SERVICE) VALUES ('" . $NOM . "', '" . $PRENOM . "', '" . $EMAIL . "', '" . $SERVICE . "')";
            $resultat = mysqli_query($connect, $requete);
            $ID_AGENT = mysqli_insert_id($connect); // on récupère l'id créé
        } {
            $requete = "INSERT INTO `user_mobile` (ID_AGENT, ID_MOBILE, ID_LIGNE, IMEI, SN, DATEREMISE, ETAT_REMISE, DATERETOUR, ETAT_RETOUR, COMMENTS) VALUES ('" . $ID_AGENT . "', '" . $ID_MOBILE . "', '" . $ID_LIGNE . "', '" . $IMEI . "', '" . $SN . "', '" . $DATEREMISE . "', '" . $remise . "', '" . $DATERETOUR . "', '" . $retour . "', '" . $COMMENTS . "')";
            //$resultat = mysqli_query($connect, $requete);
        } if (mysqli_query($connect, $requete)) {
            echo "User mobile enregistré" . "<br>";
            $ID_USER_MOBILE = mysqli_insert_id($connect); // on récupère l'id créé
        } else {
            echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        }
     
        if (!empty($EQUIP)) {
     
            foreach ($EQUIP as $values) {
                $requete = "SELECT ID_EQUIPEMENT FROM equipements";
                $requete = "INSERT INTO user_mobile_equipt (ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ('" . $ID_USER_MOBILE . "', '" . $values . "')";
     
                var_dump($EQUIP);
            } {
     
                //$resultat = mysqli_query( $connect, $requete );
            } if (mysqli_query($connect, $requete)) {
                echo "Equipement enregistré" . "<br>";
            } else {
                die('ERREUR : ' . mysqli_error());
                //echo "Error: " . $requete . "<br>" . mysqli_error($connect);
            }
        }
        if ($resultat) {
            echo $msg_ok;
            mysqli_close($connect);
        } else {
            echo $message2;
        }
    }
    Je pense, pourtant, avoir respecté tes consignes !

    Je récupère également les autres ID "auto-incrémenté" avec la fonction mysqli_insert_id.

    Si je veux récupérer un ID nom "auto-incrémenté" je fais bien un "SELECT", mais rien d'inscrit dans la base....

    Je sens que c'est presque ça....

  9. #49
    Invité
    Invité(e)
    Par défaut
    Bonjour Jean-Michel,

    1/ c'est bien d'avoir des idées, mais ne te sens pas obligé de récupérer TOUS les ID créés

    Il faut récupéré uniquement celui ou ceux qui sont utiles pour la suite des opérations.

    2/ c'est bien de faire une requête, encore faut-il l’exécuter !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            foreach ($EQUIP as $values) {
                $requete = "SELECT ID_EQUIPEMENT FROM equipements"; // A QUOI PEUT BIEN SERVIR CETTE LIGNE ??? réponse : à rien. A supprimer, donc.
                $requete = "INSERT INTO user_mobile_equipt (ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ('" . $ID_USER_MOBILE . "', '" . $values . "')";
                // ICI, il ne manquerait pas quelque chose pour... EXECUTER la requete ?
                var_dump($EQUIP);
            } {

  10. #50
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonjour Jérôme,

    Question : Ne faut-il pas récupérer les ID correspondant à ceux qui doivent s'enregistrer dans la table ID_USER_MOBILE ?

    La requête s’exécute bien, mais à moitié puisque seule l'ID_USER_MOBILE est enregistré.

    C'est pourquoi j'ai essayé avec un "SELECT".

    Question : pour l'exécution de requête le : if (mysqli_query($connect, $requete));
    Ça exécute bien la requête ?

    Sinon, avec : $resultat = mysqli_query( $connect, $requete );

    Même résultat, les "ID_EQUIPEMENT" ne s'enregistrent pas.

    Merci encore.

  11. #51
    Invité
    Invité(e)
    Par défaut
    Que donne var_dump($EQUIP); ?

    redonne le bout de formulaire correspondant

  12. #52
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (!empty($EQUIP)) {
     
            foreach ($EQUIP as $values) {
     
                $requete = "INSERT INTO user_mobile_equipt (ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ('" . $ID_USER_MOBILE . "', '" . $values . "')";
                $resultat = mysqli_query( $connect, $requete );
                var_dump($EQUIP);
            }
    Le "ID_USER_MOBILE" est bien récupéré dans la table correspondante, mais c'est tout.

    var_dump($EQUIP);

    Donne :

    array (size=3)
    0 => string 'Chargeur' (length=8)
    1 => string 'CableUSB' (length=8)
    2 => string 'Casque' (length=6)

    array (size=3)
    0 => string 'Chargeur' (length=8)
    1 => string 'CableUSB' (length=8)
    2 => string 'Casque' (length=6)

    array (size=3)
    0 => string 'Chargeur' (length=8)
    1 => string 'CableUSB' (length=8)
    2 => string 'Casque' (length=6)
    C'est bizard que le var_dump remonte les données, mais que ça ne suivent pas dans la base !

  13. #53
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    redonne le bout de formulaire correspondant
    Le code d'affichage des checkbox !!

    N'as-tu pas remarqué que les "données" du $_POST sont les NOMS (chargeur,...) et non les ID ??

    Et que donc, ça n'a aucune chance de fonctionner...

  14. #54
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Oops ! Désolé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    id="EQUIPEMENTS"><label>EQUIPEMENTS:</label>
                            <input name="EQUIPEMENTS[]" value="Chargeur" type="checkbox" />Chargeur
                            <input name="EQUIPEMENTS[]" value="CableUSB" type="checkbox" />Cable USB
                            <input name="EQUIPEMENTS[]" value="Casque" type="checkbox" />Casque<br />
                            <input name="EQUIPEMENTS[]" value="Cartememoire" type="checkbox" />Carte memoire
                            <input name="EQUIPEMENTS[]" value="CoqueHouse" type="checkbox" />Coque/House

    N'as-tu pas remarqué que les "données" du $_POST sont les NOMS (chargeur,...) et non les ID ??
    Ah ben là forcément...

    Mais ça tombe bien (enfin presque) car comme je l'ai écris plus tôt dans le post, je préfère enregistrer les NOMS plutot que les ID, apparemment c'est faisable.
    J'ai changé ID_EQUIPEMENT par NOM_EQUIPEMENT dans la base et le code. Mais là, seule la première checkbox cochée remonte dans la base.
    Question : Est-ce que la fonction "implode" peux me servir à enregistrer toutes les checkbox sur la même ligne dans la BdD ?

    Merci Jérôme.

  15. #55
    Invité
    Invité(e)
    Par défaut
    OK, comme tu veux...

    Le principal est que tu te tiennes à une méthode, et restes cohérent d'un bout à l'autre.

  16. #56
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Je réponds à ma question...
    Est-ce que la fonction "implode" peux me servir à enregistrer toutes les checkbox sur la même ligne dans la BdD ?
    A priori non, vu que en principe, si je comprends bien, la fonction "foreach" fait une boucle ?
    Donc quand j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (!empty($EQUIP)) {
     
            foreach ($EQUIP as $values) {
     
                $requete = "INSERT INTO user_mobile_equipt (ID_USER_MOBILE, NOM_EQUIPEMENT ) VALUES ('" . $ID_USER_MOBILE . "', '" . $values . "')";
                $resultat = mysqli_query( $connect, $requete );
    Cela signifie que à chaque fois qu'une case est coché, la requête est exécuté. et donc enregistre autant de ligne que de case coché dans la base, avec le même ID_USER_MOBILE mais avec des "values" différente.

    C'est bien ça ?

    Merci par avance.

  17. #57
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!empty($EQUIP)) {
     
       $EQUIP_liste = implode( ', ', $EQUIP );
     
    }
    Mais là, ça devient compliqué de rester cohérent dans les réponses, puisque tu es reparti sur ton ancien système...
    La conception des tables, la méthode d'enregistrement,... dépendent de la méthodologie choisie.

  18. #58
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir Jérôme,

    J'entends bien, mais d'enregistrer l'ID plutôt que le NOM, quand je souhaiterai avoir un état, cela ne sera-t-il pas plus compliquer pour remonter les informations via un formulaire ?
    Je me doute que c'est pas évident pour toi, de m'aider ainsi, sans avoir l'ensemble du projet sous les yeux !

    Bon j'ai testé ton dernier code.
    Bref, tu as raison, il ne faut pas que je m'écarte de la méthode de départ, que tu t'es évertué à me montrer.

    Alors je reprends.

    Si je comprends bien, la fonction "foreach" fait une boucle ?
    Donc quand j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    if (!empty($EQUIP)) {
     
            foreach ($EQUIP as $values) {
     
                $requete = "INSERT INTO user_mobile_equipt (ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ('" . $ID_USER_MOBILE . "', '" . $values . "')";
                $resultat = mysqli_query( $connect, $requete );
    Cela signifie que à chaque fois qu'une case est coché, la requête est exécuté. et donc enregistre autant de ligne que de case coché dans la base, avec le même ID_USER_MOBILE mais avec des "values" différente.

    C'est bien ça ?

    Alors, là l'ID_USER_MOBILE s'enregistre bien, mais pas de ID_EQUIPEMENT !

    Ah ben maintenant c'est le NOM_EQUIPEMENT qui s'enregistre dans ID_EQUIPEMENT !!!

  19. #59
    Invité
    Invité(e)
    Par défaut
    Il faut modifier le formulaire !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                            <input name="EQUIPEMENTS[]" value="Chargeur" type="checkbox" />Chargeur
                            <input name="EQUIPEMENTS[]" value="CableUSB" type="checkbox" />Cable USB
                            <input name="EQUIPEMENTS[]" value="Casque" type="checkbox" />Casque<br />
                            <input name="EQUIPEMENTS[]" value="Cartememoire" type="checkbox" />Carte memoire
                            <input name="EQUIPEMENTS[]" value="CoqueHouse" type="checkbox" />Coque/House
    Tu dois :
    • faire une requête SELECT de la table EQUIPEMENTS
    • pour chaque ligne de résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      <input name="EQUIPEMENTS[]" value="<?php echo $resultat['ID_EQUIPEMENT']; ?>" type="checkbox" id="EQUIPEMENT<?php echo $resultat['ID_EQUIPEMENT']; ?>"/>
      <label for="EQUIPEMENT<?php echo $resultat['ID_EQUIPEMENT']; ?>"><?php echo $resultat['NOM_EQUIPEMENT']; ?></label>
    Sauras-tu faire cette requête et affichage ? (c'est du "basic")

    N.B. N'hésite pas à lire des cours (mysqli, requêtes,...

  20. #60
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 59
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,

    Quand tu dis
    Tu dois :

    faire une requête SELECT de la table EQUIPEMENTS
    pour chaque ligne de résultat :
    Est-ce toujours en utilisant la boucle "foreach" ?

    Sinon, quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      <input name="EQUIPEMENTS[]" value="<?php echo $resultat['ID_EQUIPEMENT']; ?>" type="checkbox" id="EQUIPEMENT<?php echo $resultat['ID_EQUIPEMENT']; ?>"/>
      <label for="EQUIPEMENT<?php echo $resultat['ID_EQUIPEMENT']; ?>"><?php echo $resultat['NOM_EQUIPEMENT']; ?></label>
    La fin du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $resultat['NOM_EQUIPEMENT']; ?>
    apparait comme commenté !

    Est-ce normal ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. traitement du fichier texte avec PHP,
    Par owenho dans le forum Langage
    Réponses: 9
    Dernier message: 15/07/2012, 23h03
  2. Aide pour Traitement d'un formulaire - PHP
    Par De Felger dans le forum Langage
    Réponses: 44
    Dernier message: 08/04/2012, 19h40
  3. Réponses: 1
    Dernier message: 10/08/2011, 16h44
  4. Récupérer $POST de formulaire créer par JAVASCRIPT pour traitement PHP
    Par rodblochon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/03/2010, 06h14
  5. Traitement php d'un formulaire dynamique !
    Par Argol dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/03/2009, 16h10

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