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

Installation MySQL Discussion :

[SGBD] [Problème insertion variable php/mysql]


Sujet :

Installation MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut [SGBD] [Problème insertion variable php/mysql]
    Bonjour ,

    MOn soucis c'est qu'avec l'upload de fichiers, j'enregistre donc le num de fichier, le nom de ce fichier ( $dest_fichier ) et un numéro de fiche auquel il est lié. Car pour expliquer avec 1 fiche de renseignement on peu attacher plusieurs fichiers.

    Donc dans ma base j ai 1 TABLE fichierjoint avec les CHAMPS numFichierj nomFichierj numFiche

    Erreur: seulement le numFiche ne s'insérer pas
    voici ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql3 = "INSERT INTO fichiersj (numFichierj, nomFichierj, numFiche) VALUES ( '".$numfichierj."', '".$dest_fichier."', '".$numfiche."')"; 
    	$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error());
    la variable $numfiche est la clé primaire d'une autre TABLE fiche

    Je ne sais pas comment récupérer la valeur de $numfiche

    Quand je créer ma fiche cela fonctionne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT INTO fiches (numFiche, nomFiche, datecreaFiche, loginF, descriptifFiche, resolutionFiche, nomProjet, nbhresolution, enseigne, privee, emailF) VALUES ( '".$numfiche."' ,'".$nomfiche."' , NOW(), '".$_SESSION['loginL']."', '".$textarea."', '".$textarea2."', '".$projet."','".$nbh."', '".$enseigne."', '".$privee."', '".$_SESSION['emailL']."' )"; 
    $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error());
    J'ai l impression que la variable ne se prend pas dans ma 2eme table fichierjoint

    je suis perdu

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Enlevez les simples quotes autour de ".$numfiche." si il s'agit d'une colonne numérique.

    Sinon, peut on voir les structures des tables ?

    Si vous avez numFiche en auto_increment dans fiches ne faites pas apparaitre ce nom: ni dans la parenthese apres le nom de la table fiches ni dans les values... Ensuite une requete (MySQL) last_insert_id(); devrait donner la valeur insérée pour la clé primaire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Alors j'ai la TABLE fiches que je rempli lorsque je valide mon formulaire avec les fichiers joints ou sans.

    TABLE fiches
    numFiche int (4)auto_increment
    nomFiche varchar (30) ...
    ..
    ..

    TABLE fichiersj
    numFichierj int(5)auto_increment
    nomFichierj (varchar 50)
    numFiche int(4)

    Donc j'aimerai lorsque je valide mon formulaire, que à ce fichier joint soit attribuer le numéro de la fiche ( non saisie ) inscrémenté auto dans la table fiches.

    D'autres renseignements ?

    j ai essayer d'enlever les ' ' mais => erreur sql.

    J ai plutot l impression que la valeur peu etre prise automatiquement dans la table fiches, puisqu'elle est incrémentée, mais dans la table fichiersj c'est en integer.

    Mais dans ce cas je ne vois pas comment faire ? vous me suivez ?

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    ok:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$nomfichierj."', ".$numfiche."')";
       $result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error());
     
     
    $sql_id = "select last_inserted_id()";
    $pk =  mysql_query($sql_id) or die ("Erreur <br />'. mysql_error());
    $numFichierj = $pk[0];
    8)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur : select last_inserted_id()
    FUNCTION rbdc.last_inserted_id does not exist
    et meme la variable qui me pose problème c'est numFiche, les autres variables s'insére normalement or la tu as mi $numFichierj qui lui s'insére normalement, je ne comprend pu la

    ton code modifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$nomfichierj."', '".$numfiche."')"; 
    	$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error()); 
    $sql_id = "select last_inserted_id()"; 
    $pk =  mysql_query($sql_id) or die ("Erreur : ". $sql_id .'<br />'. mysql_error()); 
    $numFichierj = $pk[0];

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    J'ai mis nomfichierj, pas numficherj !
    Les colonnes auto_increment ne doivent pas figurées dans le insert, sinon ce serait pas des auto_increment.... ca porte bien son nom quoi.

    pour le last_inserted_id je me suis trompé:

    c'était last_insert_id la fonction.
    Vous utilisez bien MySQL ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    oui mysql

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Et du coup c'est bon non ?
    tout fonctionne, vos champs pas auto_increment s'insère Et vous recuperez (si vous en avez besoin) la valeur des colonnes auto_increment avec last_insert_id ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur : select last_insert_id ()
    FUNCTION rbdc.last_insert_id does not exist

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    A la vue du message d'erreur... vous n'avez pas mi d'ESPACE entre last_insert_id et () ?
    Parcqu'il faut que les parenthèses soient collées au nom de la fonction... sinon MySQL va croire qu'on cherche une table !

    Et donc je devine que vous travaillez sur une base qui 's'apelle rdbc
    N'est-ce pas ? 8)

    EDIT: Ah NON, le message di bien FUNCTION
    Quelle version de MySQL ?

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Ah, sinon vous avez une fonction depuis PHP3 et +

    int mysql_insert_id ( [resource link_identifier] )

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    j'ai pu de message d'erreur

    par contre il m'insére toujours pas le numFiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(isset($_FILES['fichiers']))
    	{  
    	$dest_fichier = basename($_FILES['fichiers']['name']);
    	nomfichiers ();
    	move_uploaded_file($_FILES['fichiers']['tmp_name'], $dest_dossier . $dest_fichier);
    	$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche."')"; 
    	$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error()); 
    	$sql_id = "select last_insert_id()"; 
    	$pk =  mysql_query($sql_id) or die ("Erreur : ". $sql_id .'<br />'. mysql_error()); 
    	$numFichierj = $pk[0]; 
    	}
    merci de votre courage

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par chat hotplug
    Quelle version de MySQL ?
    la derniere je l ai installer y a 2 semaines

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    je cherche je cherche je suis bloqué, il faut plus de renseignement ?

  15. #15
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Normalement Non: c'est le même problème que tout a l'heure pour le champs auto_increment de ficherj:

    il suffit de ne pas mettre numFiche dans le insert into fiches et le tour est joué...

    a moins que vous parliez toujours du numFiche de fichiersj ?

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    je ré explique

    les fiches s'insére correctement
    les numéros de fichiers aussi
    et le nom des fichiers aussi $dest_fichier

    Mais je voudrai associer le numéro de la fiche, a chaque fichier joint
    dans numFiche de la table fichier joint ( pour me permettre de retrouver les fichiers pour de chaque fiche 8)

    Seulement lors de l'insertion je n'ai pas d'erreur, mais tout s'insérer sauf le champ numFiche dans la table fichiersjoint

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche."')"; 
    	$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error()); 
    	$sql_id = "select last_insert_id()"; 
    	$pk =  mysql_query($sql_id) or die ("Erreur : ". $sql_id .'<br />'. mysql_error()); 
    	$numfiche = $pk[0];
    c'est bien dans ce sens qu'on pensez tout les 2 ?

  17. #17
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Maintenant oui

    Donc:

    laissez bien le numFiche dans l'insertion pour fichierj MAIS enlever l'attribut auto_increment de la définition de la table fichiersj !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    je dois enlever l'auto increment de ou ?
    car dans la TABLE fichiersjoint
    numFiche int(4)

    et dans la TABLE fiche
    numFiche int(4) auto increment


  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Car la, la variable numFiche de la table fichierjoint est entier donc ne s'incrémente pas, mais comment fait elle pour prendre la valeur du numFiche de la TABLE fiche ?

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    j ai essayer 1 truc lors de la requete de création de la fiche, récupérer ce numéro de fiche dans la variable $numfiche2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql4 = "SELECT numFiche FROM fiches WHERE nomFiche = '".$nomfiche."'";
    $req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error()); 
    $data4 = mysql_fetch_array($req4);  
    $numfiche2 = $data4['numFiche.fiches'];
    pour ensuite; effectuer la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    	$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error());
    Mais ca marche, pas probleme d idée ? de code ? je dois absolument faire ce lien numFiche pour retrouver mes fichiers joints

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/06/2010, 16h08
  2. Insertion variable PHP dans fonction javascript
    Par hisin dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/06/2010, 16h58
  3. [SGBD] PHP/mysql additioner des variables
    Par picsoun dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 20/03/2006, 03h49
  4. [SGBD] [php/mySql] Récuperation numéro de l'erreur
    Par fab22montpellier dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/09/2005, 11h46
  5. Types de variables entre mysql/php et flash
    Par ramses83 dans le forum Flash
    Réponses: 2
    Dernier message: 06/10/2003, 18h35

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