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 :

Copier - Insérer [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut Copier - Insérer
    Bien le bonjour à tout le monde

    je viens faire appel à vos talents de php - mysql..

    j'ai un catalogue et je souhaiterais créer une nouvelle entrée.
    Pour ne pas embêter la personne qui va utiliser ce catalogue je souhaiterais créer un bouton qui copie certaines données et en laisse d'autre libre pour y entrer les nouvelles données (jusqu'ici pas trop de soucis )

    la commande sql fonctionne à merveille si je le fais en test dans phpmyadmin.

    c'est la suivante : (fin sans les $post etc bien entendu... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete = "INSERT INTO `catalogue` (`id`,`ref`,`nom`,`famille`,`gamme`,`url`,`date`)
    	SELECT (SELECT MAX(`id`)+1), '".$_POST['ref']."', '".$_POST['nom']."', `famille`, `gamme`, 0, NOW()
    	FROM `catalogue` 
    	WHERE id = '".$_POST['id']."'";
    	$bdd->query($requete);
    malheureusement pour moi, ceci ne marche pas comme je le voudrais sur mon site. car une fois le tout enregistré, celà ne me prends en compte que les nouvelles données que j'ai rentré.

    autrement dit, famille et gamme ne s'insère pas dans la table

    avez-vous une idée du pourquoi du comment?

    je pense que ça vient de cette requête mais je ne suis pas sur non plus.

    pour informations, j'ai un bouton qui permet de modifier une ligne de la table et ceci fonctionne farpaitement

  2. #2
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    je pense que tu te complique la vie en essayant de faire tt en une seule requête, essaye de faire sa méthodiquement :
    1- sélection des données à copier (voir gamme et famille).
    2- récupération de ces données dans des variables.
    3- insertion d'une nouvelle entrée.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    oki, bon j'ai suivis tes conseils en le faisant étapes par étapes, mais ça ne fonctionne toujours pas, je dois me tromper quelque part dans la récupération des données je penses

    voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $recup_fam = "SELECT `famille`, `gamme` 
    	FROM `catalogue`
    	WHERE id = '".$_POST['id']."'";
    $result = $bdd->result_to_array($bdd->query($recup_fam));
    $produit_fam = $result[0][0];
    $produit_gam = $result[0][1];
    donc ça c'est pour la récupération des données déjà existante

    et voilà pour l'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = "INSERT INTO `catalogue` (`id`,`ref`,`nom`,`famille`,`gamme`,`url`,`date`)
    VALUES ('', '".$_POST['ref']."', '".$_POST['nom']."', '".$produit_fam."', '".$produit_gam."', 0, NOW())";
    $bdd->query($requete);
    je sais que je me goure quelque part, mais je n'arrive pas à trouver mon erreur

    si vous pouvez m'aider, ça serait avec un grand plaisir

  4. #4
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Bon essayant de faire sa étape par étape :
    tu dois savoir au début sa ne marche pas à quel niveau (niveau sélection ou niveau insertion), pour avoir le cœur net affiche les deux variable que ta récupérer et voie si c'est vraiment ce que tu cherche puis on verra autre chose.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    c'est niveau insertion que ça ne fonctionne pas. car quand je lance la requête, j'ai bien ma famille et ma gamme qui sont affichés dans mon formulaire.

    donc il arrive récupérer les données et à les lires, mais pas à les insérer dans une nouvelle ligne

  6. #6
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Alors je pense qu'il ya un conflit avec le type de variable entre les deux variable que tu récupère et les deux champ dans ta base de données, fais attention à ces chose la.

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    ba en fait c'est les mêmes car c'est sur la même table que je souhaite faire ça.

    en gros, pour que ce soit plus clair je vais expliciter.

    j'ai ma table catalogue.

    dedans j'ai une ligne avec un id, une référence, un nom, une famille, une gamme, une url et une date.

    on va dire que les données sont 03, MRE12, dadou, dadou familly, classique, fiche.php5?ref=MRE12 et la date de création.

    moi je veux faire une copie de cette ligne en ne gardant que dadou familly et classique.

    donc en fait ça ferait une nouvelle ligne dans la table et dans mon formulaire je me retrouve donc avec

    la ref à rentrer et le nom (l'url se fait automatiquement). j'ai bien dadou familly et classique qui s'affiche dans mon formulaire, mais lorsque je fais valider, ils ne se sont pas enregistrer dans la ligne, seules les nouvelles données se sont enregistrer.

    étant donnée que c'est la même table et donc les mêmes variables, ça ne devrait pas porter conflits non?

    fin je me trompe pitêtre hein..

    je sais pas si j'ai été super clair..

  8. #8
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    T'a été très claire même . Mais la vois où est le probleme,
    peut tu m'envoyer ton fichier et la structure de ta base de donnée pour faire les teste moi même et essayer de trouver le pb.
    je serais ravi de t'aider.

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    je prépare tout ça et je t'envoie le tout

    merci

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    bon alors pour information j'ai réussi à résoudre mon problème...

    en fait, petite boulette que je suis, j'appelais déjà ces données plus bas dans mon code et donc ma requête devais tout simplement être de cette forme là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete = "INSERT INTO `catalogue` (`id`,`ref`,`nom`,`famille`,`gamme`,`url`,`date`)
    				VALUES ('', '".$_POST['ref']."', '".$_POST['nom']."', '".$_POST['famille']."',
    				'".$_POST['gamme']."', 0, NOW())";
    				$bdd->query($requete);
    j'avais donc juste à rappeler le $_POST['famille'] et $_POST['gamme']

    appelé plus bas par cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "SELECT * FROM catalogue WHERE id='".$_GET['id']."'";
    	$info = $bdd->result_to_array($bdd->query($requete));
    et voilà, hop résolu



    par contre, à titre d'information, je ne me suis pas encore penchée dessus.

    mais donc, ce formulaire, lorsqu'il est validé, il est renvoyé vers un autre formulaire qui fait appelle à une autre table de ma base de donnée. il est validé en tenant compte de la nouvelle ref et du nouveau nom.

    pensez-vous qu'il est possible de récupérer les données lié à la ligne copiée précédemment sur cette nouvelle page ou pas? je vous avoue que je n'ai pas encore cherché, donc c'est vraiment à titre d'information

    en tout cas, encore merci à islyoung2. même si j'ai fini par trouver l'erreur de moi même, il m'a bien aidé

  11. #11
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    salut, heureux que tu a pu retrouver la solution à ton problème tous seul.
    Et en ce qui concerne ta deuxième question je pense que tu peux tous simplement récupérer tes données avec des $_POST.
    voila @+

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    le hic, c'est que la 'nouvelle' table a seulement la référence en commun avec la table d'avant.

    et que ma redirection vers l'autre formulaire, je la fais avec le nouveau nom et la nouvelle ref. je ne peux pas y insérer l'ancienne référence..

    pour être plus claire, une fois mon formulaire compléter et que je cliques sur valider, le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hydrus_utils_redirect("catcopy2.php5?ref=".$_POST['prod_ref']."&nom=".$_POST['prod_nom']."");
    la première table catalogue a pour donné : prod_id, prod_ref, prod_nom, prod_famille, prod_gamme, prod_url, prod_date

    la table concerné par le deuxième formulaire contient [table fichpdt]:
    ref,nom, age, img ...

    pour pouvoir avoir les données sur cette table de la fiche copier, il me faut sa référence, mais je redirige avec la nouvelle référence pour qu'il enregistre le tout avec la bonne référence et pas l'ancienne.

    donc voilà.. je suis pas sur que ce soit possible en fait ce que je veux faire..

  13. #13
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Citation Envoyé par rastacouaire Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hydrus_utils_redirect("catcopy2.php5?ref=".$_POST['prod_ref']."&nom=".$_POST['prod_nom']."");
    Sa ne marche pas si tu ajoute l'id voulu dans l'url?

  14. #14
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    ah voui, et faire une jointure avec la table catalogue pour qu'il sache que l'id correspond à une autre ref ...


    ouch, ça m'en fou un coup là, j'aurais du plus suivre quand j'étais en cours de sql à l'époque...

    bon ba à l'abordage, jva tester tout ça

  15. #15
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    N'oublie pas de répondre si ça marche, et clause cette discussion avec la balise RESOLU

  16. #16
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    yep, pas de soucis

    faut d'abord que je me remémorise comment faire tout ça. et dès que j'ai trouvé, je mets ce que j'ai trouvé

  17. #17
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    alors alors, j'ai résolu mon problème

    j'ai donc, comme me l'a préconisé islyoung2 j'ai rajouté l'id voulu dans la redirection, ce qui donne pour la ligne de redirection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hydrus_utils_redirect("catcopy2.php5?ref=".$_POST['prod_ref']."&nom=".$_POST['prod_nom']."&id=".$_GET['id']."");

    ensuite, en ce qui concerne ma page catcopy2.php5.
    tout d'abord, je vais expliquer ce que je souhaitais faire.

    ma page catcopy2 est également un formulaire avec des cases à coché, un menu déroulant.
    je souhaitais moi que les cases qui était cochés pour la ligne précédente le soit pour cette nouvelle ligne à rentrer. je voulais également que la valeur sélectionné dans le menu déroulant le soit aussi ici.

    j'ai donc simplement dans le contenu du formulaire modifier ma requête php

    voici un exemple :

    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
    <td height="30" valign="middle"><div align="left" >Age FR:</div></td>
        <td height="30" valign="middle"><label>
    <select name="age" size="1" >
    	<?
        $requete = "SELECT DISTINCT age FROM `fichpdt`, `catalogue` 
    	WHERE `fichpdt`.`ref` = `catalogue`.`prod_ref` AND `prod_id` = '".$_GET['id']."'";
        $result = $bdd->result_to_array($bdd->query($requete));
        for($i=0;$i<count($result);$i++)
        {
        if($_POST['age'] == $result[$i][0])
        {
        print("<option value='".$result[$i][0]."' selected>".$result[$i][0]."</option>");
        }
        else
        {
        print("<option value='".$result[$i][0]."' >".$result[$i][0]."</option>");
        }
        }
        ?>
    </select>
    et voilà, j'ai fait de même pour les cases cochés

    encore merci islyoung2, tu m'as bien aidé

    il me manque encore la logique pour programmer moi... mais bon, jvais y travailler

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

Discussions similaires

  1. [XL-2007] Copier/Insérer les cellules copiées malgré une protection
    Par atchoume50 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/04/2013, 10h49
  2. [VBA-E] Copier une cellule XL pour l'insérer dans un document Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/03/2009, 13h12
  3. Insérer une image dans un cellule par copier coller
    Par jalseth dans le forum VBA Word
    Réponses: 2
    Dernier message: 13/08/2008, 18h19
  4. Macro copier/coller colonne- insérer nouvelle colonne
    Par rembliec dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/11/2007, 16h32
  5. Copier une cellule XL pour l'insérer dans un document Word
    Par COCONUT2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 19/07/2007, 09h50

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