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 :

Récupération de l'id de la dernière insertion


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut Récupération de l'id de la dernière insertion
    Bonjour,

    J'essaie de récupérer l'id auto-incrémenté du dernier tuple inséré pour l'insérer à son tour dans une autre table, mais j'ai diverses erreurs.

    Ici mon code, si vous voulez bien regarder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = "INSERT INTO dot_perso_theme (libelle, url,cat_id) 
        VALUES('$libelle','$url','$cat_id')" ;
        // on insère les informations du formulaire dans la table
        mysql_query($req)  ;
        $dernierTheme=mysql("select last_insert_id()");
    Et ici l'erreur que j'obtiens :
    Warning: Wrong parameter count for mysql() in /home/site/public_html/tableau/scripts/themes/haut.php on line 41
    La ligne 41 correspond à $dernierTheme=mysql("select last_insert_id()");

    Notez que la requête suivante est exécutée, mais l'identifiant correspondant à last_insert_id() n'est pas inséré.

    Merci d'avance !

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    C'est quoi la fonction mysql() ?

    Ce serait pas mysql_query() plutôt ?

    Attention, ces fonctions sont devenues désuètes.

    Passage à mysqli ou pdo recommandé.

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    dire que tu as déjà cette fonctionnalité
    http://us2.php.net/manual/fr/functio...-insert-id.php

    "mysql" tout court comme fonction je suis étonné que ça existe.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut
    Je ne retrouve pas la bonne syntaxe.
    Ca fait deux ans que j'ai pas programmé. On a discuté ailleurs de ces histoires de mysqli mais je n'ai pas le temps d'approfondir maintenant.

    Et c'est supposé ne plus être opérationnel dans quelques temps comme fonction ? Je sens que je vais changer de projet...

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    c'est pas que c'est plus opérationnel au 1er janv 2014. C'est qu'un jour une version amont de php ne sera plus livré avec le support natif de ce pilote, ça passera en extension optionnelle puis ça ne sera plus du tout supporté.

    C'est obsolete dans php 5.3 et 5.4 je dis que "ça" chauffe. On verra ce que l'avenir nous réserve.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    pour la syntaxe, le manuel dont j'ai fourni l'adresse, dispose d'un exemple.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par gene69 Voir le message
    c'est pas que c'est plus opérationnel au 1er janv 2014. C'est qu'un jour une version amont de php ne sera plus livré avec le support natif de ce pilote, ça passera en extension optionnelle puis ça ne sera plus du tout supporté.

    C'est obsolete dans php 5.3 et 5.4 je dis que "ça" chauffe. On verra ce que l'avenir nous réserve.
    Salut,

    Bon je fais remonter ce sujet après un an, vu que je re-recommence à ré-réapprendre à programmer.

    Alors... mots-clefs : "support natif", "pilote", "extension optionnelle"... Je ne connais point ce vocabulaire pour l'heure. Ca fait partie de l'administration de serveur ? Il faut savoir installer PHP sur un serveur pour connaitre ça ?

  8. #8
    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
    En clair : dans PHP 5.5, les fonctions mysql_xxxx sont obsolètes. Les utiliser provoque une erreur "Deprecated". ça n'empêche pas le code actuel de fonctionner, à condition de masquer les erreurs de E_DEPRECATED.

    Ce que ça implique, c'est que dans une version future de PHP, les fonction mysql_xxxx seront purement et simplement supprimées et donc que le code ne fonctionnera plus. Pour le faire fonctionner, il faudra remettre manuellement la librairie des fonctions mysql_xxxx au niveau du serveur (c'est que gene voulait dire par "extension optionnelle")
    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]

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut
    Ok... Donc il est urgent ou presque de transformer mes vieux scripts mysql en mysqli.
    Alors commençons tout de suite, si vous le voulez bien.

    Je sais pas si vous aurez la patience de tout lire, mais le cas échéant ça permettrait d'avoir une vue d'ensemble, avec des requêtes SQL, de l'affichage while, du $_GET, du $_POST, du filtrage, etc...
    Si ça ne bouge pas, vous n'avez qu'à le surligner en bleu et zou.

    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
    <?php  
     
    if(isset($_GET['lettre']))
    {$lettre=$_GET['lettre'];};
    if(isset($_POST['lettre']))
    {$lettre=$_POST['lettre'];};
     
    //si c'est une des 26 lettres de l'alphabet, on se connecte et on affiche.
    if(
    $lettre=='a'
    OR
    $lettre=='b'
    OR
    $lettre=='c'
    OR
    $lettre=='d'
    OR
    $lettre=='e'
    OR
    $lettre=='f'
    OR
    $lettre=='g'
    OR
    $lettre=='h'
    OR
    $lettre=='i'
    OR
    $lettre=='j'
    OR
    $lettre=='k'
    OR
    $lettre=='l'
    OR
    $lettre=='m'
    OR
    $lettre=='n'
    OR
    $lettre=='o'
    OR
    $lettre=='p'
    OR
    $lettre=='q'
    OR
    $lettre=='r'
    OR
    $lettre=='s'
    OR
    $lettre=='t'
    OR
    $lettre=='u'
    OR
    $lettre=='v'
    OR
    $lettre=='w'
    OR
    $lettre=='x'
    OR
    $lettre=='y'
    OR
    $lettre=='z'
    )
    {
    //si c'est ok on se connect
    define('host', 'localhost'); // voir hébergeur  
    define ('user' , 'wiki'); // vide ou "root" en local
    define('pass' , 'A)0c_2K-).'); // vide en local
    define('bdd' , 'wiki'); // nom de la BD
     //connexion
    @mysql_connect(host,user,pass,bdd) or die("Trop de visiteurs : Impossible de se connecter.");
    mysql_select_db("wiki")   ;
    //or die (mysql_error());
    //on affiche le titre; puis on continue plus bas dans la page
    $lettre=mysql_real_escape_string(htmlentities(htmlspecialchars($lettre)));
    ;}//ferme conditions if sur existence de la lettre
    else{$avertissement="L'administrateur est pr&eacute;venu de cette erreur d'affichage, votre adresse IP est enregistr&eacute;e.";}
     
     
     
    ?>
     
     
     
             <?php
    if(!isset($avertissement))
    {
    $lettre=mysql_real_escape_string(htmlentities(htmlspecialchars($lettre)));
    $verif="
    SELECT
    wiki_post.post_url AS post_url,
    wiki_post.post_title AS post_title
    FROM 
    wiki_post
    WHERE 
    wiki_post.post_url like '$lettre%'
    AND wiki_post.post_status=1
    ORDER BY wiki_post.post_url";
    $resultat = mysql_query("$verif");
    echo'          
    ';
    $i=0;
    while($R=mysql_fetch_array($resultat))
    {
    $post_url=$R['post_url'] ;
    $post_title=$R['post_title'] ;	                          
    echo'
    <a href=" http://www.siteinternet.com/index.php?post/'.$post_url.'">'. ucfirst($R['post_title']).'</a>
    ';
    $i++;
    }//ferme while
     
    ';
    
    
    $verif2="SELECT IPB_ccs_custom_database_3.field_14 AS field_14,
    IPB_ccs_custom_database_3.field_20 AS field_20,
    IPB_ccs_custom_database_3.record_static_furl AS record_static_furl,IPB_ccs_database_categories.category_furl_name AS category_furl_name 
    FROM IPB_ccs_custom_database_3,IPB_ccs_database_categories 
    WHERE 
    IPB_ccs_custom_database_3.field_20 like '$lettre%' AND 
    IPB_ccs_custom_database_3.category_id=IPB_ccs_database_categories.category_id 
    ORDER BY 
    IPB_ccs_custom_database_3.field_20 ";
    $resultat2 = 
    mysql_query("$verif2") ;
    
    $i=0;while($R=mysql_fetch_array($resultat2)){
     $defTome1=$R['field_14'];
    echo'<tr';
    // if($i % 2 == 0)
     //{echo 'class="row1"';} else {echo'class="row2"';}
    echo'>
    <td class="ligne"><a href="http://www.siteinternet.fr/wiki.php/_/'.$R['category_furl_name'].'/'.$R['record_static_furl'].'">'.$defTome1.'</a>
    '; $i++;}//ferme while 
    
    
    ;}//fermer $avertissement
    else
    {echo''.$avertissement.'';}
    ?>

    Merci d'avance

Discussions similaires

  1. [mySql & Java] Dernière insertion
    Par delma dans le forum JDBC
    Réponses: 10
    Dernier message: 17/04/2008, 17h18
  2. Réponses: 4
    Dernier message: 14/01/2008, 13h50
  3. Récupération message d'erreur lors d'une insertion dans une BDD
    Par LoDev dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 22/12/2007, 19h11
  4. obtenir la clé primaire de la dernière insertion
    Par Schwarzencarter dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/10/2007, 10h41
  5. MySQL: obtenir les résultats de la dernière insertion
    Par TNorth dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/05/2006, 17h44

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