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 :

Insérer de nouvelles données php myadmin


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Par défaut Insérer de nouvelles données php myadmin
    Bonjour à toutes et à tous,

    J'aimerais ajouter de nouvelles données à une table déjà existante. Je vous explique : il s'agit d'un futur site pour enseignants, une fois qu'ils ont créé leur compte, j'aimerais qu'ils puissent ajouter de nouvelles classes à leur profil. Pour cela, j'ai codé comme ci-dessous :
    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
    <?php
    session_start();
    require_once 'config.php'; // On inclu la connexion à la bdd
     
    if (!isset($_SESSION['user'])) {
        header('Location:index.php');
        die();
    }
    if (!empty($_POST['nom_classe']) && !empty($_POST['niveau_classe'])) {
     
        $classe_1 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_1 = htmlspecialchars($_POST['niveau_classe']);
        $classe_2 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_2 = htmlspecialchars($_POST['niveau_classe']);
        $classe_3 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_3 = htmlspecialchars($_POST['niveau_classe']);
        $classe_4 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_4 = htmlspecialchars($_POST['niveau_classe']);
        $classe_5 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_5 = htmlspecialchars($_POST['niveau_classe']);
        $classe_6 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_6 = htmlspecialchars($_POST['niveau_classe']);
        $classe_7 = htmlspecialchars($_POST['nom_classe']);
        $niveau_classe_7 = htmlspecialchars($_POST['niveau_classe']);
     
        $check = $bdd->prepare('SELECT classe_1, classe_2, classe_3, classe_4, classe_5, classe_6, classe_7, niveau_classe_1, niveau_classe_2,niveau_classe_3,niveau_classe_4,niveau_classe_5,niveau_classe_6,niveau_classe_7 FROM lcc.inscr_ens WHERE token= :token');
     
        if (!empty($classe_1)) {
            if (!empty($classe_2)) {
                if (!empty($classe_3)) {
                    if (!empty($classe_4)) {
                        if (!empty($classe_5)) {
                            if (!empty($classe_6)) {
                                $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_7, niveau_classe_7 ) VALUES(:nom_classe,:niveau_classe)');
                                $insert->execute(array(
                                    'nom_classe' => $classe_7,
                                    'niveau_classe' => $niveau_classe_7,
                                    header('Location: esp_ens.php')
                                ));
                                die();
                            } else {
                                $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_6, niveau_classe_6) VALUES(:nom_classe,:niveau_classe)');
                                $insert->execute(array(
                                    'nom_classe' => $classe_6,
                                    'niveau_classe' => $niveau_classe_6,
                                    header('Location: esp_ens.php')
                                ));
                                die();
                            }
                        } else {
                            $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_5, niveau_classe_5) VALUES(:nom_classe,:niveau_classe)');
                            $insert->execute(array(
                                'nom_classe' => $classe_5,
                                'niveau_classe' => $niveau_classe_5,
                                header('Location: esp_ens.php')
                            ));
                            die();
                        }
                    } else {
                        $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_4, niveau_classe_4) VALUES(:nom_classe,:niveau_classe)');
                        $insert->execute(array(
                            'nom_classe' => $classe_4,
                            'niveau_classe' => $niveau_classe_4,
                            header('Location: esp_ens.php')
                        ));
                        die();
                    }
                } else {
                    $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_3, niveau_classe_3) VALUES(:nom_classe,:niveau_classe)');
                    $insert->execute(array(
                        'nom_classe' => $classe_3,
                        'niveau_classe' => $niveau_classe_3,
                        header('Location: esp_ens.php')
                    ));
                    die();
                }
            } else {
                $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_2, niveau_classe_2) VALUES(:nom_classe,:niveau_classe)');
                $insert->execute(array(
                    'nom_classe' => $classe_2,
                    'niveau_classe' => $niveau_classe_2,
                    header('Location: esp_ens.php')
                ));
                die();
            }
        } else {
            $insert = $bdd->prepare('INSERT INTO lcc.inscr_ens(classe_1, niveau_classe_1) VALUES(:nom_classe,:niveau_classe)');
            $insert->execute(array(
                'nom_classe' => $classe_1,
                'niveau_classe' => $niveau_classe_1,
                header('Location: esp_ens.php')
            ));
            die();
        }
    } else {
        header('location: index.php');
        die();
    }
    Ma table est déjà construite est les valeurs 'nom_classe' et 'niveau_classe' sont prêtes dans mon html :
    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
      <form action="crea_classe.php" method="post" id="crea_classe">
        <h2>Création d'une nouvelle classe</h2>
        <label for="select_classe">
          <h3>Choisissez le niveau de la classe :</h3>
        </label>
        <select name="niveau_classe" id="classe_niveau">
          <option value="sixième">Sixième</option>
          <option value="cinquième">Cinquième</option>
          <option value="quatrième">Quatrième</option>
          <option value="troisième">Troisième</option>
        </select>
        <input id="classe_nom" type="text" placeholder="Entrez le nom de la classe" name="nom_classe" class="form-control" />
        <input type="submit" id="crea_classe_valid" value="VALIDER" onclick="close_crea_classe()" />
      </form>
    Mais rien à faire, j'ai beau modifier mes informations, les données n'arrivent pas dans ma table...
    Je suis novice en PHP, donc je me suis probablement trompé dans l'organisation des donné mais je ne sais pas où...

    Help please !!
    Merci !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    avant de voir le code, il faut déjà bien organiser la structure de la base données. je trouve ça bizarre d'avoir des champs qui se répètent classe_1, classe_2, etc.
    montrez nous d'abord la structure de la base de données.

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Par défaut
    Pour la base de données, elle est constitué de 2 tables pour les inscriptions (élèves ou enseignants) et la table enseignants est construite ainsi :
    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
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
     
    SET AUTOCOMMIT = 0;
     
    START TRANSACTION;
     
    SET time_zone = "+00:00";
     
    DROP TABLE IF EXISTS `inscr_ens`;
     
    CREATE TABLE
        IF NOT EXISTS `inscr_ens` (
            `inscr_ens_nom` varchar(50) NOT NULL,
            `inscr_ens_prenom` varchar(50) NOT NULL,
            `inscr_ens_mail` varchar(150) NOT NULL,
            `inscr_ens_mdp` text NOT NULL,
            `classe_1` text NOT NULL,
            `niveau_classe_1` text NOT NULL,
            `classe_2` text NOT NULL,
            `niveau_classe_2` text NOT NULL,
            `classe_3` text NOT NULL,
            `niveau_classe_3` text NOT NULL,
            `classe_4` text NOT NULL,
            `niveau_classe_4` text NOT NULL,
            `classe_5` text NOT NULL,
            `niveau_classe_5` text NOT NULL,
            `classe_6` text NOT NULL,
            `niveau_classe_6` text NOT NULL,
            `classe_7` text NOT NULL,
            `niveau_classe_7` text NOT NULL,
            `token` text NOT NULL,
            PRIMARY KEY (`inscr_ens_num`)
        ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci;
     
    COMMIT;

    je l'ai (apparemment mal) organisé comme ça. De façon à ce que les enseignants puissent créer plusieurs classes (généralement, ils en ont 5 ou 6)

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Par défaut
    C'est bon, j'ai réussi, ta remarque m'a bien aidé !

    J'ai simplement créé une nouvelle table nommée 'classes' dans laquelle j'ai les données 'nom_classe' et 'niveau_classe'.

    J'ai pu y enregistrer les données comme je le souhaitais
    Maintenant, il faut que j'arrive à lier mes 2 tables pour que chaque utilisateur puisse avoir accès à ses propres classes (et pas à celle d'un autre )

    Merci !

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    en effet, il est plus efficace de faire une table séparée pour les classes.
    cela permet à la table de stocker de 0 à une infinité de classe par personne. et ensuite c'est dans le code que vous pouvez par exemple limiter le nombre de classes à 6 maximum.

    si une classe est associée à une seule personne, la tables "classe" aura les colonnes suivantes :
    • id_classe : clé primaire
    • inscr_ens_num : clé étrangère vers la table des enseignants
    • nom
    • niveau


    au sujet de la clé primaire, le code sql de votre 2e message a un souci puisqu'il n'y a pas de colonne inscr_ens_num dans la table.

    et pour les clés primaires, je vous conseille de mettre un type entier non signé et de rajouter l'option "autp_increment".

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Par défaut
    Merci pour la réponse,

    J'ai fait les modifications, je rajouterai juste la colonne inscr_ens_num pour pouvoir lier mes tables !

    Merci encore !

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 09/12/2022, 20h36
  2. Insérer une donnée dans une base de donnée php.my admin
    Par lackam88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/11/2020, 13h28
  3. Réponses: 4
    Dernier message: 13/02/2020, 08h59
  4. Erreur sous PHP MyAdmin (PMA database?)
    Par Matlight dans le forum Installation
    Réponses: 5
    Dernier message: 28/10/2010, 19h38
  5. echange de données php/flash
    Par ramses83 dans le forum Flash
    Réponses: 8
    Dernier message: 18/08/2003, 23h50

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