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. #21
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 857
    Points : 6 555
    Points
    6 555
    Par défaut
    Pour des boutons de radio il n'y pas besoin d'utiliser un tableau (donc pas de foreach) vu qu'un ensemble de boutons de radio pour un choix donné ne renvoie qu'une seule valeur. Tous les boutons de radio d'un même ensemble de choix ont le même attribut name et le résultat du choix est donc $_POST['toto'] pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="radio" name="toto" value="choix1" id="idchx1"/><label for="idchx1">texte choix1</label>
    <input type="radio" name="toto" value="choix2" id="idchx2"/><label for="idchx2">texte choix2</label>
    <input type="radio" name="toto" value="choix3" id="idchx3"/><label for="idchx3">texte choix3</label>
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  2. #22
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour complément d'info, pour les cases à cocher et les boutons radio, seuls les éléments cochés sont transmis. Donc si tu ne coches rien, tu ne transmets rien.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #23
    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,

    Merci pour ses précisions.

    Pour complément d'info, pour les cases à cocher et les boutons radio, seuls les éléments cochés sont transmis. Donc si tu ne coches rien, tu ne transmets rien
    Celira, je l'ai bien compris, je te remercie Mais pour les cases à cocher, soit rien est coché et j'ai le "Notice: undefined Index", soit si par exemple, deux cases sont cochées, elle sont effectivement transmisent mais les autres aussi (les non cochées) et deux fois. Si c'est trois cases, c'est transmis trois fois...

    CosmoKnacki,

    Les boutons radios c'est bon. Merci.

    Je continu mes investigations.

  4. #24
    Invité
    Invité(e)
    Par défaut
    bonjour,
    peux-tu remontrer ton code à ce stade ?

    Au moins ce que tu as "compris" des boutons radio et checkbox...

  5. #25
    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,

    Pour bien faire je remets les trois code (html, php et sql)

    Code html : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtmll/DTD/xhtml-transitional.dtd">
    <html xmlns="http://www.w3.org.199/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>Enregistrement</title>
            <link href="form.css" rel="stylesheet" type="text/css" />
        </head>
        <body>
            <div>
                <form target="_top" method="post" action="traitementmobile.php">
                    <fieldset id="TELEPHONE">
                        <p class="titre1" align="center">REMISE DE MATERIELS</p>
                        <br /><br /><br /><br />
                        <p class="titre" align="center">TELEPHONE</p>
                        <br /><br /><br /><br /><br /><br />
                        <label>MARQUE :</label>
                        <select name="MARQUE">
                            <option value=""></option>
                            <option value="NOKIA">NOKIA</option>
                            <option value="SAMSUNG">SAMSUNG</option>
                            <option value="WIKO">WIKO</option>
                        </select>
                        <br />
                        <label>MODELE :</label>
                        <select name="MODELE">
                            <option value=""></option>
                            <option value="6700">6700</option>
                            <option value="2330">2330</option>
                            <option value="GALAXY S3">GALAXY S 3</option>
                            <option value="KAR 2">KAR 2</option>
                            <option value="KAR 3">KAR 3</option>
                        </select>
                        <p id="CHAMPS">
                            <label>S/N :</label>
                            <input type="text" size="30" name="SN"></input>
                            <label>IMEI :</label>
                            <input type="text" size="30" name="IMEI"></input>
                            <br />
                            <label>SIM :</label>
                            <input type="text" size="30" name="SIM"></input>
                            <label>NUMERO :</label>
                            <input type="text" size="30" name="NUMERO"></input>
                            <br />
                            <label>VALEUR :</label>
                            <input type="text" size="30" name="VALEUR"></input>
                            <label>COMPTE :</label>
                            <select name="COMPTE">
                                <option value=""></option>
                                <option value="0000000">0000000</option>
                            </select>
                        </P>
                        <p 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                  
                            <p class="titre2" align="center">UTILISATEUR</p>
                            <br /><br /><br /><br />
                            <label>NOM :</label>
                            <select name="NOM">
                                <option value=""></option>
                                <option value="BRUZESSE">BRUZESSE</option>
                                <option value="BLANCHETIERE">BLANCHETIERE</option>
                                <option value="GUILLOU">GUILLOU</option>
                            </select>
                            <label>PRENOM :</label>
                            <select name="PRENOM">
                                <option value=""></option>
                                <option value="AGNES">AGNES</option>
                                <option value="MAUD">MAUD</option>
                                <option value="OLIVIER">OLIVIER</option>
                            </select><br />
                            <label>EMAIL :</label>
                            <select name="EMAIL">
                                <option value=""></option>
                                <option value="a.bruzzese@cc-sudestuaire.fr">a.bruzzese@cc-sudestuaire.fr</option>
                                <option value="m.blanchetiere@cc-sudestuaire.fr">m.blanchetiere@cc-sudestuaire.fr</option>
                                <option value="o.guillou@cc-sudestuaire.fr">o.guillou@cc-sudestuaire.fr</option>
                            </select>
                            <label>SERVICE :</label>
                            <select name="SERVICE">
                                <option value=""></option>
                                <option value="FINANCES">FINANCES</option>
                                <option value="DEV.ECO ET TOURISME">DEV.ECO ET TOURISME</option>
                                <option value="INFORMATIQUE">INFORMATIQUE</option>
                            </select>
                            <br /><br />
                            Je m'engage à* :<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Prendre soin du matériel qui m'est confié,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Faire un usage strictement professionnel du téléphone et de son forfait,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Le restituer au service SI à la fin de mes missions sur ce poste ou en cas de remise de nouveau matériel,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Signaler tout dysfonctionnement au service SI,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Ne pas insérer la carte SIM dans un autre téléphone sans l'accord du service SI,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Ne pas insérer une autre carte SIM dans ce téléphone,<br />
                            -&nbsp;&nbsp;&nbsp;&nbsp;Modifier le code PIN à la réception de ce téléphone et à le remettre sur 0000 au<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;préalable de sa restitution.<br />
     
                            <meta charset="utf-8">
                                <title>jQuery UI Datepicker - Icon trigger</title>
                                <link rel="stylesheet" href="./jquery-ui-1.9.2.custom/css/jquery-ui-1.9.2.custom.css">
                                    <script src="./jquery-ui-1.9.2.custom/js/jquery-1.8.3.js"></script>
                                    <script src="./jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.js"></script>
                                    <script>
                                        $(function() {
                                            $("#datedebut").datepicker({
                                                showOn: "button",
                                                buttonImage: "./jquery-ui-1.9.2.custom/calendar.gif",
                                                buttonImageOnly: true,
                                                buttonText: "Cliquez"
                                            });
                                            $("#datefin").datepicker({
                                                showOn: "button",
                                                buttonImage: "./jquery-ui-1.9.2.custom/calendar.gif",
                                                buttonImageOnly: true,
                                                buttonText: "Cliquez"
                                            });
                                        });
                                        jQuery(function($) {
                                            $.datepicker.regional['fr'] = {
                                                closeText: 'Fermer',
                                                prevText: 'Précédent',
                                                nextText: 'Suivant',
                                                currentText: 'Aujourd\'hui',
                                                monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                                                    'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
                                                monthNamesShort: ['Janv.', 'Févr.', 'Mars', 'Avril', 'Mai', 'Juin',
                                                    'Juil.', 'Août', 'Sept.', 'Oct.', 'Nov.', 'Déc.'],
                                                dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
                                                dayNamesShort: ['Dim.', 'Lun.', 'Mar.', 'Mer.', 'Jeu.', 'Ven.', 'Sam.'],
                                                dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
                                                weekHeader: 'Sem.',
                                                dateFormat: 'dd/mm/yy',
                                                firstDay: 1,
                                                isRTL: false,
                                                showMonthAfterYear: false,
                                                yearSuffix: ''};
                                            $.datepicker.setDefaults($.datepicker.regional['fr']);
                                        });
                                    </script>
                                    <p>Date de remise:<input type="text" id="datedebut" class="datepicker" name="datedebut"></input></p>
                                    <p id="SIGNATURE1" align="right"><label>SIGNATURE:</label>
                                        <p id="remises"><label>État de remise:</label>
                                            <input name="remise" value="Neuf" type="radio" />Neuf
                                            <input name="remise" value="Très bon" type="radio" />Très bon
                                            <input name="remise" value="Bon" type="radio" />Bon
                                            <input name="SIGNATURE1" size="25" type="text" /></p></p>
                                    <p>Date de retour: <input type="text" id="datefin" class="datepicker" name="datefin"></input></p>
                                    <p id="SIGNATURE2" align="right"><label>SIGNATURE:</label>
                                        <p id="retours"><label>État de retour:</label>
                                            <select name="retour">
                                                <option value=""></option>
                                                <option value="Très Bon">Très Bon</option>
                                                <option value="Bon">Bon</option>
                                                <option value="Passable">Passable</option>
                                                <option value="Hors service">Hors service</option>
                                            </select>
                                            <input name="SIGNATURE2" size="25" type="text" /></p></p>
                                </link>
                                <p class="titre3" align="center">COMMENTAIRES</p>
                                <br /><br /><br /><br /><br />
                                <fieldset id="COMMENTAIRES"><textarea name="COMMENTS" style="width: 682px; height: 16px" ></textarea>
                                </fieldset>
                                <p id="buttons">
                                    <input value="Envoyer/Imprimer" type="submit" onclick="window.print()"/>&nbsp;&nbsp;&nbsp;&nbsp;
                                    <input value="Recommencer" type="reset"/>
                                </p>
                            </meta>
                    </fieldset>
                </form>
            </div>
        </body>
    </html>

    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
    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
    <?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;
    $NOM = $_POST['NOM'];
    $PRENOM = $_POST['PRENOM'];
    $EMAIL = $_POST['EMAIL'];
    $SERVICE = $_POST['SERVICE'];
    $SIM = $_POST['SIM'];
    $NUMERO = $_POST['NUMERO'];
    $COMPTE = $_POST['COMPTE'];
    $MARQUE = $_POST['MARQUE'];
    $MODELE = $_POST['MODELE'];
    $IMEI = $_POST['IMEI'];
    $SN = $_POST['SN'];
    $VALEUR = $_POST['VALEUR'];
    $comments = $_POST['COMMENTS'];
    $datedebut = $_POST['datedebut'];
    $datefin = $_POST['datefin'];
    $EQUIP = $_POST['EQUIPEMENTS'];
    $remise = $_POST['remise'];
    $retour = $_POST['retour'];
     
     
    // vérification des champs
    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($SIM)) {
        $message .= "SIM<br/>";
    }
    if (empty($NUMERO)) {
        $message .= "NUMERO DE MOBILE<br/>";
    }
    if (empty($COMPTE)) {
        $message .= "NUMERO DU COMPTE<br/>";
    }
    if (empty($MARQUE)) {
        $message .= "MARQUE DU MOBILE<br/>";
    }
    if (empty($MODELE)) {
        $message .= "MODELE DU MOBILE<br/>";
    }
    if (empty($IMEI)) {
        $message .= "IMEI<br/>";
    }
    if (empty($SN)) {
        $message .= "S/N DU MOBILE<br/>";
    }
    if (empty($VALEUR)) {
        $message .= "VALEUR DU MOBILE<br/>";
    }
    if (empty($datedebut)) {
        $message .= "DATE DE DEBUT<br/>";    
    }
    if (!empty($datefin)) {
     
    }
    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, IMEI, SN, VALEUR, datedebut, datefin, COMMENTS) VALUES ('" .$MARQUE. "', '" .$MODELE. "', '" .$IMEI. "', '".$SN."', '".$VALEUR."', '" .$datedebut. "', '" .$datefin. "', '" .$comments. "')";
                //$resultat = mysqli_query( $connect, $requete );
                if (mysqli_query($connect, $requete)) {
        echo "record telephone mobile";
    } else {
        echo "Error: " . $requete . "<br>" . mysqli_error($connect);
    }
            }
            {
                $requete = "INSERT INTO `ligne mobile` VALUES ('" .$SIM. "', '" .$NUMERO. "', '" .$COMPTE. "')";
                //$resultat = mysqli_query( $connect, $requete );
                if (mysqli_query($connect, $requete)) {
        echo "record ligne";
    } else {
        echo "Error: " . $requete . "<br>" . mysqli_error($connect);
    }
            }
     
        if (!empty($EQUIP)) {
     
            $Chargeur = 'Chargeur';
            $CableUSB = 'CableUSB';
            $Casque = 'Casque';
            $Cartememoire = 'Cartememoire';
            $CoqueHouse = 'CoqueHouse';
     
            foreach ($EQUIP as $values)
     
                var_dump($EQUIP);{
     
                $requete = "INSERT INTO equipements  (Chargeur, CableUSB, Casque, Cartememoire, CoqueHouse) VALUES ('" .$Chargeur. "', '" .$CableUSB. "', '" .$Casque. "', '" .$Cartememoire. "', '" .$CoqueHouse. "')";
                //$resultat = mysqli_query( $connect, $requete );
            if (mysqli_query($connect, $requete)) {
        echo "record equip";
    } 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 (mysqli_query($connect, $requete)) {
        echo "record user";
    } else {
        echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        }
            }
     if (!empty($remise)) {
     
                $requete = "INSERT INTO etatderemise (`Etat de Remise`) VALUES('" .$remise. "')";
                //$resultat = mysqli_query($connect, $requete );
            if (mysqli_query($connect, $requete)) {
        echo "record remise";
    } else {
        echo "Error: " . $requete . "<br>" . mysqli_error($connect);
        }
            }
     
     if (!empty($retour)) {
     
                $requete = "INSERT INTO etatderetour (`Etat de Retour`) VALUES ('" .$retour. "')";
                //$resultat = mysqli_query($connect, $requete );
                if (mysqli_query($connect, $requete)) {
        echo "record retour";
     
    } else {
        echo "Error: " . $requete . "<br>" . mysqli_error($connect);
            }
       }
     
     
        if ($resultat) {
            echo $msg_ok;
            mysqli_close($connect);
        } else {
            echo $message2;
        }
     
        }
    ?>
    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
    -- phpMyAdmin SQL Dump
    -- version 4.1.14
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Mer 14 Janvier 2015 à 19:42
    -- 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";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `materiels`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `equipements`
    --
     
    CREATE TABLE IF NOT EXISTS `equipements` (
      `Chargeur` char(20) DEFAULT NULL,
      `CableUSB` char(20) DEFAULT NULL,
      `Casque` char(20) DEFAULT NULL,
      `Cartememoire` char(20) DEFAULT NULL,
      `CoqueHouse` char(20) DEFAULT NULL,
      `idequipements` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idequipements`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `etatderemise`
    --
     
    CREATE TABLE IF NOT EXISTS `etatderemise` (
      `Etat de Remise` char(25) NOT NULL,
      `idremise` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idremise`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `etatderetour`
    --
     
    CREATE TABLE IF NOT EXISTS `etatderetour` (
      `Etat de Retour` char(25) DEFAULT NULL,
      `idretour` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idretour`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `ligne mobile`
    --
     
    CREATE TABLE IF NOT EXISTS `ligne mobile` (
      `SIM` int(30) NOT NULL,
      `NUMERO` varchar(100) NOT NULL,
      `COMPTE` varchar(100) NOT NULL,
      PRIMARY KEY (`SIM`),
      UNIQUE KEY `SIM` (`SIM`,`NUMERO`),
      KEY `COMPTE` (`COMPTE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- --------------------------------------------------------
     
    --
    -- 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` (
      `MARQUE` char(25) NOT NULL,
      `MODELE` char(25) NOT NULL,
      `IMEI` int(30) NOT NULL,
      `SN` varchar(26) NOT NULL,
      `VALEUR` varchar(6) NOT NULL,
      `datedebut` char(25) NOT NULL,
      `datefin` char(25) DEFAULT NULL,
      `COMMENTS` varchar(255) DEFAULT NULL,
      UNIQUE KEY `IMEI` (`IMEI`),
      KEY `VALEUR` (`VALEUR`),
      FULLTEXT KEY `MARQUE` (`MARQUE`),
      FULLTEXT KEY `MODELE` (`MARQUE`,`MODELE`,`SN`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `user`
    --
     
    CREATE TABLE IF NOT EXISTS `user` (
      `CODEAGENT` 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 (`CODEAGENT`),
      FULLTEXT KEY `EMAIL` (`EMAIL`),
      FULLTEXT KEY `SERVICE` (`SERVICE`),
      FULLTEXT KEY `PRENOM` (`PRENOM`),
      FULLTEXT KEY `NOM` (`NOM`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    Bon, côté boutons radio, ce que j'ai fini par comprendre c'est que quelque soit le nombre de boutons, un seul "INSERT" est nécessaire, normal vu que seul un bouton est selectionnable à la fois.
    Donc pour moi, trois boutons, mais un "INSERT" vers la variable "$remise".
    La ça fonctionne.
    Pour les boutons "de retour", j'ai changer pour un "select", comme cette information ne sera pas toujours renseigné.
    Par contre, je cherche toujours pour les "cases à cocher". cela parait pourtant simple, mais, soit tout est enregistrer, soit rien !!!.

    J'y retourne...

    Merci à vous tous.

    Jean-Michel.

  6. #26
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    l'un des problèmes vient de la récupération des valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $EQUIP = $_POST['EQUIPEMENTS'];
    Ici, ce sont des checkbox.
    Si rien n'est coché, rien n'est retourné, et $_POST['EQUIPEMENTS'] n'existe pas.
    D'où l'erreur "undefined index".

    Il faut être plus rigoureux, et vérifier l'existence des variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $EQUIP = ( isset($_POST['EQUIPEMENTS']) )? $_POST['EQUIPEMENTS'] : array(); // checkbox = plusieurs choix -> array
    Pour les autres variables simples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NOM = ( isset($_POST['NOM']) )? $_POST['NOM'] : '';

  7. #27
    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,

    Pour :
    Ici, ce sont des checkbox.
    Si rien n'est coché, rien n'est retourné, et $_POST['EQUIPEMENTS'] n'existe pas.
    D'où l'erreur "undefined index".
    Je me doutais bien que l'absence de coche provoquait l'erreur, mais je ne savais pas comment l'éviter !

    Il faut être plus rigoureux, et vérifier l'existence des variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $EQUIP = ( isset($_POST['EQUIPEMENTS']) )? $_POST['EQUIPEMENTS'] : array(); // checkbox = plusieurs choix -> array
    J'ai essayé ça, mais il me manquait le ": array();" forcément ça ne risquai pas de fonctionner...
    Mais tu m'as conseillé de mettre plutôt "!empty" à la place de "isset", bon l'essentiel c'est que ça vérifie la présence de données.
    Pour les variables simples je les vérifie en début de fichier et un message apparait si elles ne sont pas renseigné, ça fonctionne correctement.

    Bon je m'y remet...

    Bon plus d'erreur d'index indéfini, mais côté enregistrement des "checkbox" c'est tout ou rien...

    Merci beaucoup, tes explications sont clairement renseignées ça aide le débutant que je suis.

    Jean-Michel.

  8. #28
    Invité
    Invité(e)
    Par défaut
    Bnojour,
    regarde la différence (et les exemples) entre isset() et empty() pour savoir quand et comment les utiliser.
    isset()

    Détermine si une variable est définie et est différente de NULL.
    empty()

    Détermine si une variable est considérée comme vide. Une variable est considérée comme vide si elle n'existe pas, ou si sa valeur équivaut à FALSE. La fonction empty() ne génère pas d'alerte si la variable n'existe pas.

    Ce qui suit est considéré comme étant vide :
    • "" (une chaîne vide)
    • 0 (0 en tant qu'entier)
    • 0.0 (0 en tant que nombre à virgule flottante)
    • "0" (0 en tant que chaîne de caractères)
    • NULL
    • FALSE
    • array() (un tableau vide)
    • $var; (une variable déclarée, mais sans valeur)
    Quant à la formulation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = ( condition )? [valeur si vrai] : [valeur si faux];
    il s'agit de L'opérateur ternaire.
    Et équivaut à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( condition ){ $var = [valeur si vrai] } else { $var = [valeur si faux]; }

  9. #29
    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,

    Bien sur, j'ai bien compris la différence entre "isset" et "empty".

    Ma remarque ne concernait que ton choix dans un post précédent :
    if ( !empty($_POST['EQUIPEMENTS'])) { // (j'en profite pour emplacer isset par !empty, plus approprié)
    C'est tout.

    Sinon, le formulaire est presque fini. Il me reste juste sur les checkbox. A l'heure actuelle, si rien qu'une case est coché, elle sont toute insérer dans la base...Je cherche...

    Merci encore Jérôme.

  10. #30
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        if (!empty($EQUIP)) {
     
            $Chargeur = 'Chargeur';
            $CableUSB = 'CableUSB';
            $Casque = 'Casque';
            $Cartememoire = 'Cartememoire';
            $CoqueHouse = 'CoqueHouse';
     
            foreach ($EQUIP as $values)
     
                var_dump($EQUIP);{
     
                $requete = "INSERT INTO equipements  (Chargeur, CableUSB, Casque, Cartememoire, CoqueHouse) VALUES ('" .$Chargeur. "', '" .$CableUSB. "', '" .$Casque. "', '" .$Cartememoire. "', '" .$CoqueHouse. "')";
    Je dis : LOL !!

    Tu ne vois pas comme un défaut ?? (et quand je dis "un"... en fait, rien ne va)

    1/ tu définis des variables, sans tenir compte de ce que tu récupères,
    et le foreach va insérer autant de lignes que de cases cochées...
    => LOL !

    2/ La table "equipements" est mal conçue :
    aucun lien avec le reste du formulaire ? (récupération de l'id_user créé!)
    La ligne que tu inserts : comment tu la relies aux autres informations récoltées ?
    => re-LOL !!

    3/ Je pense que les autres tables ne sont pas bien conçues non plus.
    Elles n'ont pas de lien entre elles (un identifiant de client, par exemple => id_user : voilà une idée qu'elle est bonne !
    )

    Je crois que tu ne t'es pas encore posé ces questions :
    • "comment relier ces enregistrements entre eux ?" => id_user !
    • "comment récupérer tout ça pour l'afficher ensuite ?"


    Prends une feuille de papier, et note précisément ce que tu veux faire, ETAPE par ETAPE, avec LOGIQUE.
    Si tu ne comprends pas ce que tu fais, tu n'y arriveras jamais.
    Dernière modification par Invité ; 17/01/2015 à 03h55.

  11. #31
    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 ,

    Merci pour ta patiente.

    Je dis : LOL !!

    Tu ne vois pas comme un défaut ?? (et quand je dis "un"... en fait, rien ne va)

    1/ tu définis des variables, sans tenir compte de ce que tu récupères,
    et le foreach va insérer autant de lignes que de cases cochées...
    => LOL !
    Si-si je vois comme un défaut.... Je défini mes variable pour récupérer ce qui entre 'apostrophe' c'est cette valeur qui m’intéresse.
    Là il n'y à qu'une ligne d'insérée dans la base, quelque soit le nombre de cases cochées. Mais soit vide, soit pleine !!!

    / La table "equipements" est mal conçue :
    aucun lien avec le reste du formulaire ? (récupération de l'id_user créé!)
    La ligne que tu inserts : comment tu la relies aux autres informations récoltées ?
    => re-LOL !!

    3/ Je pense que les autres tables ne sont pas bien conçues non plus.
    Elles n'ont pas de lien entre elles (un identifiant de client, par exemple => id_user : voilà une idée qu'elle est bonne !)
    En fait je viens de voir que je n'ai pas mis le bon code sql ! Je ne comprenais pas vu qu'il y a un "CODEAGENT" comme ID de user
    et que toutes les table ont un ID !

    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
    -- phpMyAdmin SQL Dump
    -- version 4.1.14
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Sam 17 Janvier 2015 à 12:03
    -- 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";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `materiels`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `equipements`
    --
     
    CREATE TABLE IF NOT EXISTS `equipements` (
      `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,
      `idequipements` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idequipements`),
      KEY `CableUSB` (`CableUSB`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `etatderemise`
    --
     
    CREATE TABLE IF NOT EXISTS `etatderemise` (
      `Etat de Remise` char(25) NOT NULL,
      `idremise` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idremise`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `etatderetour`
    --
     
    CREATE TABLE IF NOT EXISTS `etatderetour` (
      `Etat de Retour` char(25) DEFAULT NULL,
      `idretour` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`idretour`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `ligne mobile`
    --
     
    CREATE TABLE IF NOT EXISTS `ligne mobile` (
      `SIM` bigint(30) NOT NULL,
      `NUMERO` bigint(12) NOT NULL,
      `COMPTE` varchar(100) NOT NULL,
      `IDligne` int(4) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`IDligne`),
      UNIQUE KEY `SIM` (`SIM`),
      UNIQUE KEY `NUMERO` (`NUMERO`),
      KEY `COMPTE` (`COMPTE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- 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` (
      `MARQUE` char(25) NOT NULL,
      `MODELE` char(25) NOT NULL,
      `IMEI` bigint(20) NOT NULL,
      `SN` varchar(26) NOT NULL,
      `VALEUR` varchar(6) NOT NULL,
      `datedebut` char(25) NOT NULL,
      `datefin` char(25) DEFAULT NULL,
      `COMMENTS` varchar(255) DEFAULT NULL,
      `IDmobile` int(4) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`IDmobile`),
      UNIQUE KEY `IMEI` (`IMEI`),
      KEY `VALEUR` (`VALEUR`),
      FULLTEXT KEY `MARQUE` (`MARQUE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `user`
    --
     
    CREATE TABLE IF NOT EXISTS `user` (
      `CODEAGENT` 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 (`CODEAGENT`),
      UNIQUE KEY `NOM` (`NOM`),
      FULLTEXT KEY `EMAIL` (`EMAIL`),
      FULLTEXT KEY `SERVICE` (`SERVICE`),
      FULLTEXT KEY `PRENOM` (`PRENOM`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `equipements`
    --
    ALTER TABLE `equipements`
      ADD CONSTRAINT `Equip` FOREIGN KEY (`idequipements`) REFERENCES `telephone-mobile` (`IDmobile`);
     
    --
    -- Contraintes pour la table `etatderemise`
    --
    ALTER TABLE `etatderemise`
      ADD CONSTRAINT `Coderemise` FOREIGN KEY (`idremise`) REFERENCES `equipements` (`idequipements`);
     
    --
    -- Contraintes pour la table `ligne mobile`
    --
    ALTER TABLE `ligne mobile`
      ADD CONSTRAINT `Codeligne` FOREIGN KEY (`IDligne`) REFERENCES `telephone-mobile` (`IDmobile`);
     
    --
    -- Contraintes pour la table `telephone-mobile`
    --
    ALTER TABLE `telephone-mobile`
      ADD CONSTRAINT `Codemobile` FOREIGN KEY (`IDmobile`) REFERENCES `user` (`CODEAGENT`);
     
    --
    -- Contraintes pour la table `user`
    --
    ALTER TABLE `user`
      ADD CONSTRAINT `CodeEquip` FOREIGN KEY (`CODEAGENT`) REFERENCES `equipements` (`idequipements`);

    Les relations je compte les faires dans la base via wamp

    "comment récupérer tout ça pour l'afficher ensuite ?"
    Ca je pensais le voir par la suite, une fois que l'enregistrement fonctionnera...

    Encore merci pour ton aide.

  12. #32
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Jean-Michel G Voir le message
    Ca je pensais le voir par la suite, une fois que l'enregistrement fonctionnera...
    Justement NON.
    Car c'est le plus important, et ça va déterminer ce que tu dois enregistrer, et surtout comment réaliser les RELATIONS entre les tables...
    Là, tu ne fais qu'enregistrer des lignes, dans plusieurs tables, sans relations entre elles.

    Question :
    comment récupérer les infos de "ligne mobile" d'un "user" particulier ?

    En pratique, ça se traduit par :
    quelle requête dois-je-faire pour... ?

  13. #33
    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,

    Bon si je comprend bien j'ai mis la charrue avant les bœufs...
    Aller je ne me démoralise pas et je rectifie le tir.

    Alors si je comprends bien, normalement, avant de construire un formulaire, on défini en premier l'architecture de la base de donnée (tables, lignes, relations).

    J'ai corrigé ma Base (ci-dessus) et y ai ajouté des relations.

    Par contre, j'ai une question, ou plutôt besoin d'un avis : Pour enregistrer les données que je possède déjà (user, IMEI,...) à ton avis, je les importe dans cette base, ou mieux vaut une base à part ?

    Je m'explique, par la suite je pense "appeler" un utilisateur depuis le formulaire, afin de lui assigner un mobile ou de modifier/consulter sa fiche(Je ne peux pas tous les inclure à mon html).
    Pour un pur débutant je me doute que j'ai pas fini de m'arracher les cheveux(pour ceux que j'ai encore).

    Merci encore Jérôme.

  14. #34
    Invité
    Invité(e)
    Par défaut
    Voilà le genre de réflexion qu'il faut faire AVANT d'écrire la moindre ligne de code :
    1/ Pourquoi faire ? Quel est l'objectif ?
    2/ De quoi j'ai besoin ? (pour atteindre l'objectif)
    3/ Comment faire ? (pour atteindre l'objectif)

    En simplifiant :
    1/ il te faut une table "user" -> pour enregistrer les infos PERSO de l'utilisateur
    -> table "user"
    • id_user (ou CODEAGENT, si tu préfères) (auto-incrément = UNIQUE !)
    • nom_user
    • prenom_user
    • telephone_user
    • ...

    QUE les infos PERSO "user" !

    2/ tu veux associer à cette "user" d'autres infos, concernant différentes catégories (mobile, équipements,...)
    - Comment s'y prendre ??
    - comment associer une info "mobile" à un user ?

    2a/ Pour le mobile, par exemple :
    -> une table "mobile", contenant les infos UNIQUEMENT en rapport avec le mobile
    • id_mobile (auto-incrément = UNIQUE !)
    • marque_mobile
    • nom_mobile
    • type_mobile
    • .....

    Ensuite, il faut associer/lier : on crée une table RELATIONNELLE :
    1 USER = 1 (ou plusieurs ?) MOBILE
    -> table "user_mobile"
    • id_user_mobile (auto-incrément) (facultatif ici)
    • id_user
    • id_mobile

    Ici, chaque ligne met en relation 1 user avec 1 mobile
    (autres champs, en rapport uniquement avec CETTE RELATION user-mobile)
    • date_achat
    • prix_achat
    • num_serie
    • imei
    • ...

    Concernant les équipements" :
    -> table "equipements_liste"
    • id_equipement
    • nom_equipement
    • ...

    L'intérêt : pouvoir ajouter dans cette table autant d'équipements qu'on veut.

    Ensuite, on associe autant d'équipements qu'on veut à 1 user dans une table RELATIONNELLE :
    -> table "user_equipements"
    • id_user_equipement (auto-incrément) (facultatif ici)
    • id_user
    • id_equipement

    Ici, chaque ligne met en relation 1 user avec 1 equipement
    => on crée autant de lignes que d'équipements COCHES.

    (...)

    PRENDS UN PAPIER ET UN CRAYON !!
    Sans bonne CONCEPTION, pas de bon code possible...

  15. #35
    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,

    Pour les tables, j'avais bien compris qu'il fallait séparer les différents groupes d'éléments.
    Mais je pensais que l'on établissait les relations directemement d'une table vers l'autre.
    Vu ce que tu me montres, si je comprends bien, une fois mes tables "standards" créées, je crée en plus des tables relationnelles
    et c'est entre celles-ci que les relations doivent être créées ?
    Bon , je me mets au papier et au crayon.

    Merci, je posterai dès que j'aurai fais le papier...

  16. #36
    Invité
    Invité(e)
    Par défaut
    1/ La table relationnelle est intéressante surtout :
    • 1a/ quand on a besoin d'enregistrer des infos particulières/spécifiques liées à la relation.
    • 1b/ quand on peut avoir des relation "one to many"

    1a/ Dans mon exemple : relation user -> mobile :
    date d'achat, num de série, IMEI,....... : sont des infos spécifiques à la relation.

    1b/ Ceci est aussi valable pour les "équipements" ! (revois ce que j'ai écrit à ce sujet dans mon précédent message).

    2/ Dans d'autres cas, enregistrer simplement l'id directement dans la table est suffisant.
    Exemple : une table des pays (id_pays)
    Dans la table "user", on peut enregistrer son pays (1 user -> 1 pays) : relation "one to one"
    • id_user (int auto-increment)
    • ...
    • id_pays (int)
    • ...



    Voila pourquoi il faut prendre un crayon et du papier : la CONCEPTION est essentielle !

  17. #37
    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,

    Merci pour cet éclaircissement.

    Je mets en pièce jointe le schéma que j'ai fait pour avoir ton avis.
    Il serait inutile que je reprenne toute ma BdD si ce n'est pas bon....

    BASE.pdf

    Bon j'ai remplacer le papier et le crayon par le tableur...

  18. #38
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ça semble OK, sauf pour les équipements.

    Là tu associe 1 user_mobile à 1 seul équipement.
    Or, il peut en avoir plusieurs !

    1/ Ta table équipement est mal conçue et non fonctionnelle (tu ne peux pas rajouter d'autres équipements de façon simple).
    Voilà à quoi elle doit ressembler :
    table "EQUIPEMENTS" :
    • ID_EQUIPEMENT
    • NOM_EQUIPEMENT

    C'est tout !

    Et elle contient les lignes :
    • 1 CHARGEUR
    • 2 CABLEUSB
    • 3 CASQUE
    • 4 CARTEMEMOIRE
    • 5 COQUE

    Tu veux ajouter un équipement ? Tu ajoutes simplement une ligne supplémentaire !

    2/ Il faut une autre table relationnelle, entre le user_mobile et LES équipements : "USER_MOBILE_EQUIPT"
    • ID_USER_MOBILE
    • ID_EQUIPEMENT


    Pour tel user et tel mobile (donc tel ID_USER_MOBILE !), on enregistre autant de lignes que d'équipements = que de CASES COCHEES (checkbox !).

    Exemple : tu coches "CABLEUSB" et "COQUE"
    Supposons que ID_USER_MOBILE = 123 (voir "last insert id" )
    1/ tu effaces d'abord les enregistrements pour cet ID_USER_MOBILE (efface la configuration précédemment enregistrée, si nécessaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $req ="DELETE FROM USER_MOBILE_EQUIPT WHERE ID_USER_MOBILE = 123;";
    2/ tu enregistres la nouvelle configuration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($equipement_coche_array as $equipement_coche) {
      $req = "INSERT INTO USER_MOBILE_EQUIPT ( ID_USER_MOBILE, ID_EQUIPEMENT ) VALUES ( ".$equipement_coche.", 123 ) ;";
    }
    • 123 2
    • 123 5


    Et voilà ton problème de départ résolu.
    Dernière modification par Invité ; 21/01/2015 à 03h05.

  19. #39
    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,

    Merci Jérôme.

    Le seul souci c'est que pour une question de lisibilité, je souhaite plutôt insérer les valeurs des équipements au lieu des ID !

    D'autre part j'ai besoin d'une petite précision, quand tu dis :

    Et elle contient les lignes :

    1 CHARGEUR
    2 CABLEUSB
    3 CASQUE
    4 CARTEMEMOIRE
    5 COQUE
    Qu'est-ce qui contient les lignes ?

    Holala pas doué le gars

  20. #40
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jean-Michel G Voir le message
    Qu'est-ce qui contient les lignes ?
    La table "EQUIPEMENTS". Que tu peux étoffer :
    • ID_EQUIPEMENT (INT, auto-incrément)
    • NOM_EQUIPEMENT (VARCHAR)
    • Description_EQUIPEMENT (VARCHAR)

    Contenu de la table "EQUIPEMENTS" :
    • 1, 'Chargeur', 'blablabla...'
    • 2, 'Câble USB', 'blablabla...'
    • 3, 'Casque', 'blablabla...'
    • 4, 'Carte Mémoire', 'blablabla...'
    • 5, 'Coque', 'blablabla...'
    Dernière modification par Invité ; 21/01/2015 à 22h18.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 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