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 :

Construction base de données


Sujet :

PHP & Base de données

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il y a une erreur dans ta requete, vérifie la dans phpmyadmin
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Ouais, j'ai un message d'erreur :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option' at line 1

    Là je comprends pas !
    J'ai recréé ma BBD, et j'ai tjs la même erreur dans PHPMyAdmin et dans mon formulaire !

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    OPTION est un mot reservé Mysql, renomme ta table.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    OK, la table renommée, les pictos s'affichent !!!

    Bien, maintenant je dois récupérer l'enregistrement de ces pictos et les attribuer à l'établissement qui vient de s'inscrire.
    D'où la création de la troisième table (appelée : liaison, qui j'espère n'est pa réservée à MySQL)
    Pour la première partie du formulaire, c'est bon ça fonctionne, mon établissement s'enregistre dans la table "etab" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php 
    // On commence par récupérer les champs 
    if(isset($_POST['nom_etab']))      $etab=$_POST['nom_etab'];
    else      $etab="";
     
    if(isset($_POST['texte_etab']))      $texte=$_POST['texte_etab'];
    else      $texte="";
    Pour la récupération de 'id_picto je pédale dans la semoule

  5. #25
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En resumé moi je procède ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // on efface tout
    $sql = "DELETE FROM liaison WHERE etablissement_id =" . $etablissement_id;
     
    // on ré-ecrit
    if (isset($_POST['option'])) {
       foreach ($_POST['option'] as $option_id) {
           $sql = "INSERT INTO liaison (etablissement_id, option_id) VALUES ($etablissement_id, intval($option_id))";
           ....
       }
    }
    On peut se demande pourquoi j'efface tout au départ.
    Une case a cocher ne renvoit un valeur que si elle a été cochée, on ne peut donc pas savoir si une case a été decochée.
    La manière la plus simple est donc de supprimer toutes les options déjà dans la base puis d'ajouter celle qui ont été cochées.

    Pour ne pas incrémenter les ids a toute vitesse on peut n'effacer que celles qui n'ont pas été cochées puis faire un INSERT IGNORE basée sur un INDEX UNIQUE ...
    mais bon ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Là c'est pas clair du tout du tout !!!
    Je comprends pas pourquoi tu effaces alors qu rien n'est enregistré.
    Je pensais qu'il fallait enregistrer dans la table "liaison", "l'id_etab" et récupérer la valeur "id_picto" des pictogrammes cochés dans le formulaire.
    Parce que j'ai essayé ta solution, a priori adaptée à mon cas :
    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
    <?php 
    // On commence par récupérer les champs 
    if(isset($_POST['nom_etab']))      $etab=$_POST['nom_etab'];
    else      $etab="";
     
    if(isset($_POST['texte_etab']))      $texte=$_POST['texte_etab'];
    else      $texte="";
     
    // on efface tout
    $sql = "DELETE FROM liaison id_etab =" . $id_etab;
     
    // on ré-ecrit
    if (isset($_POST['picto'])) {
       foreach ($_POST['picto'] as $id_picto) {
           $sql = "INSERT INTO liaison (id_etab, id_picto) VALUES (id_etab, intval($id_picto))";
       }
    }
     
     
    // Aucun champ n'est vide, on peut enregistrer dans la table 
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
    mysql_select_db('test_picto',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO etab(id_etab,etab,texte) VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string($etab)."','".mysql_real_escape_string($texte)."')";
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
        // on affiche le résultat pour le visiteur 
    	echo "<br />";
    	echo 'Votre Etablissement a été enregistré avec succés !';
    	echo "<br />"; 
     
        mysql_close();  // on ferme la connexion 
    ?>
    ais sur cette ligne y a erreur : $sql = "DELETE FROM liaison id_etab =" . $id_etab;
    J'ai essayé de mettre .", rien tjs même message

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    J'essaye un autre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $picto = (isset($_POST['picto']))?$_POST['picto']:null; 
     
    echo "Pictos cochés :<br>";  
    if (!empty($picto)) { 
        foreach($picto as $cle => $valeur) { 
            echo $cle.' : '.$valeur.'<br>'; 
        } 
    }
    En cochant le premier voilà le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pictos cochés :
    0 : 1

  8. #28
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par GWBCLT Voir le message
    Là c'est pas clair du tout du tout !!!
    Je comprends pas pourquoi tu effaces alors qu rien n'est enregistré.
    Il n'y a pas de pb ici.

    ais sur cette ligne y a erreur : $sql = "DELETE FROM liaison id_etab =" . $id_etab;
    J'ai essayé de mettre .", rien tjs même message
    1. Manque un WHERE
    2. Donner le msg d'erreur fourni par MySQL avec mysql_error( ) peut aider

  9. #29
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je comprends pas pourquoi tu effaces alors qu rien n'est enregistré.
    Actuellement rien n'est encore enregistré ; mais quand des options auront été ajoutées et que tu reviendras sur le fiche, il faudra effacer et réecrire pour la raison que j'ai indiqué.

    Il manquait par contre effectivement le WHERE dans ma requete DELETE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Rebonjour,
    Me revoilà donc avec ces satanés pictos :
    Tu m'as dit qu'il manquait un WHERE, que j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "DELETE FROM liaison id_etab WHERE=" . $id_etab;
    mais ça fonctionne pas !

  11. #31
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    On reste concentré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "DELETE FROM liaison WHERE id_etab =" . $id_etab;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Je vais me concentrer !!
    Donc j'ai corrigé le code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "DELETE FROM liaison id_etab WHERE id_etab =" . $id_etab;
    Mais j'ai tjs cette erreur qui s'affiche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: id_etab in D:\Romuald\Travail\wamp\www\test_picto\recup_donnee.php on line 11

  13. #33
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as pas du donner de valeur à $id_etab
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #34
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Juste une question certainement stupide, où tu mets la valeur $id_etab dans le code ?

  15. #35
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    N'importe ou avant d'en avoir besoin
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Dans le formulaire o u dans mon doc oùj j récupère ls données ?

  17. #37
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut fusion
    En cherchant des tutaux, jai trouvé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $picto = (isset($_POST['picto']))?$_POST['picto']:null; 
     
    echo "Pictos cochés :<br>";  
    if (!empty($picto)) { 
        foreach($picto as $cle => $valeur) { 
            echo $cle.' : '.$valeur.'<br>';
        } 
    }
    Bon ça affiche bien les pictos que j'ai cochés dans mon formulaire.
    Maintenant il faut l'enregistrer dans la BDD

    Sinon je continue à chercher :
    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
    <?php 
    // On commence par récupérer les champs 
    if(isset($_POST['nom_etab']))      $etab=$_POST['nom_etab'];
    else      $etab="";
     
    if(isset($_POST['texte_etab']))      $texte=$_POST['texte_etab'];
    else      $texte="";
     
    // On efface tout
    $sql = "DELETE FROM liaison id_etab WHERE id_etab =" . $id_etab;
     
    // on ré-ecrit
    if (isset($_POST['picto'])) {
       foreach ($_POST['picto'] as $id_picto) {
           $sql = "INSERT INTO liaison (id_etab, id_picto) VALUES (id_etab, intval($id_picto))";
       }
    }
     
    // Aucun champ n'est vide, on peut enregistrer dans la table 
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
    mysql_select_db('test_picto',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO etab(id_etab,etab,texte) VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string($etab)."','".mysql_real_escape_string($texte)."')";
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    // On récupère l'id_etab qui vient d'être généré 
    $id_etab = mysql_insert_id(); 
     
    // Ci-dessous on insère les infos dans liaison 
    $sql = "INSERT INTO liaison(id_liaison, id_etab, id_picto) VALUES('','$id_etab','$id_picto')"; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    // On insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    // On affiche le résultat pour le visiteur 
    	echo "<br />";
    	echo 'Votre Etablissement a été enregistré avec succés !';
    	echo "<br />"; 
     
        mysql_close();  // on ferme la connexion 
    ?>
    Toujours la même ligne qui me pose problème !!!

    Voilà l'erreur ue j'ai etje galère depuisde jours dessus :
    Notice: Undefined variable: id_etab in D:\Romuald\Travail\wamp\www\test_picto\recup_donnee.php on line 16

  18. #38
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as toujours pas donné de valeur à $id_etab
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #39
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Est-ce que je peux remplace mon "nom_etab" par "id_etab" ?

  20. #40
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le champ "nom" ne devrait pas être l'id de ta table : que se passerait-il si deux etablissements avaient le meme nom ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [AC-2007] Problème construction de base de données Access
    Par Doken dans le forum Modélisation
    Réponses: 12
    Dernier message: 05/08/2013, 19h28
  2. [1.x] construction schema.xml depuis base de données
    Par megaloplex dans le forum Symfony
    Réponses: 3
    Dernier message: 12/05/2010, 14h56
  3. [AC-2003] Construction d'une base de données
    Par lunixienne dans le forum Modélisation
    Réponses: 10
    Dernier message: 01/09/2009, 16h40
  4. Réponses: 4
    Dernier message: 12/08/2006, 13h07
  5. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27

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