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

Langage PHP Discussion :

[Tableaux] Récupérer une autoincrémentation générée


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Tableaux] Récupérer une autoincrémentation générée
    Bonjour,

    je cherche à générer un fichier txt. à partir d'une bdd mysql. Je dois générer pour chaque ligne un numéro de ligne incrémentation de 1 à chaque ligne. Le soucis c'est que je dois récupérer le numéro auto-incrémenter à l'intérieur de ce même fichier pour une ligne d'enregistrement qui est une description plus préçise d'une autre ligne d'enregistrement. Pour avoir un visuel, voici le fichier que je génére en php à l'exception du champs ICI J'AIMERAI RECUPERER $nombre qui est la problématique de mon développement :

    "E";"36 ";" 10";"260207";"260207"
    "L";"36";"1";"1757";"4"
    "C";"36";"ICI J'AIMERAI RECUPERER 1";"commentaire 1 pour commande 36"
    "C";"36";"ICI J'AIMERAI RECUPERER 1";"commentaire 2 pour commande 36"
    "E";"37 ";" 10";"080207";"080207"
    "L";"37";"3";"1286";"1"
    "L";"37";"4";"1386";"1"
    "L";"37";"5";"1155";"1"
    "L";"37";"6";"7";"1"
    "C";"37";"ICI J'AIMERAI RECUPERER 5";"commentaire 1 pour commande 37"

    Est-ce que quelqu'un aurai une petite idée pour récupérer le numéro de ligne.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    problème tordu (ça c'est pas trop grave) + phrases pas trop en français (plus embêtant) = perso j'ai absolument rien compris

    Merci de prendre un minimum de recul avant de poster sinon ça va être tendu...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ok,

    Bon je vais essayer de synthétiser la problématique :

    Tous les champs sont des données récupérées d'une table, les seules données qui sont générées automatiquement c'est le numéro de ligne.

    Description des champs :
    "E";"36 ";" 10";"260207";"260207"
    "Lettre E";"id_commande";"id_client";"reference";"code_barre"

    "L";"36";"1";"1757";"4"
    "Lettre L";"id_commande";"num autoincrémenté débutant à 1";"id_produit";"qunatite_commande"

    "C";"36";"ICI J'AIMERAI RECUPERER 1";"commentaire 1 pour commande 36"
    "lettre C";"id_commande";"récupérer num autoincrémenté de la ligne L Précédente";"commentaire"

    Pour les ligne commençant par "L", le troisième champs est le numéro de la ligne générée automatiquement à partir de 1.

    Pour les lignes commençant par "C", le troisième champs devrait reprendre le numéro de la ligne "L" precedente.
    Dans l'exemple ci-dessous le 3ème champs de la 1ière ligne C devrait contenir le chiffre 1

    "E";"36 ";" 10";"260207";"260207"
    "L";"36";"1";"1757";"4"
    "C";"36";"ICI J'AIMERAI RECUPERER 1";"commentaire 1 pour commande 36"
    "C";"36";"ICI J'AIMERAI RECUPERER 1";"commentaire 2 pour commande 36"
    "E";"37 ";" 10";"080207";"080207"
    "L";"37";"3";"1286";"1"
    "L";"37";"4";"1386";"1"
    "L";"37";"5";"1155";"1"
    "L";"37";"6";"7";"1"
    "C";"37";"ICI J'AIMERAI RECUPERER 5";"commentaire 1 pour commande 37"

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est pas 6 dans ce cas pour la dernière ligne qu'il faudrait récupérer

    Sinon il va falloir mettre le code utilisé pour la génération du fichier pour qu'on regarde.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    ouais, ça peut être 3 4 5 ou 6.

    En fait les ligne commençant par C sont des lignes de commentaires qui sont associées aux lignes commençant par L. Et le lien entre ces lignes est le numéro de ligne autoincrémenté. Je sais c'est un peu compliqué, mais c'est pour permettre des mises à jour de tables à partir de fichier txt.

  6. #6
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Je ne comprends pas trop le problème, disons que ça me paraît être d'une évidence effroyable.
    Je plaisante ; )

    Bon, alors si j'ai à peu près compris, et en supposant que tu construits le fichier dans l'ordre de haut en bas, il suffirait que tu ais un tableau (lookup table) qui conserve et mette à jour la valeur du dernier auto_inc pour chaque combinaison de L:N. Donc les L:N seraient les keys

    Ensuite quand tu arrives sur un C:N, tu vas chercher la valeur du auto_inc grâce au L:N correspondant.

    Et le tour est joué

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon je mets le code, peut-être ça sera plus clair ;-)

    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
    $orders_query = tep_db_query("select 
    o.orders_id,
    o.customers_id,
    o.customers_group_id,
    o.customers_name,
    o.customers_company,
    o.customers_street_address,
    o.customers_suburb,
    o.customers_city,
    o.customers_postcode,
    o.customers_state,
    o.customers_country,
    o.customers_telephone,
    o.customers_email_address,
    o.customers_address_format_id,
    o.delivery_name,
    o.delivery_company,
    o.delivery_street_address,
    o.delivery_suburb,
    o.delivery_city,
    o.delivery_postcode,
    o.delivery_state,
    o.delivery_country,
    o.delivery_address_format_id,
    o.billing_name,
    o.billing_company,
    o.billing_street_address,
    o.billing_suburb,
    o.billing_city,
    o.billing_postcode,
    o.billing_state,
    o.billing_country,
    o.billing_address_format_id,
    o.payment_method,
    o.cc_type,
    o.cc_owner,
    o.cc_number,
    o.cc_expires,
    o.last_modified,
    o.date_purchased,
    o.orders_status,
    o.orders_date_finished,
    o.currency,
    o.currency_value,
    o.purchase_order_number
    from orders as o
    ");
     
    // increment pour donner un numéro d'offre, préférable à l'id
    $i = 0;
    $separator          = ';';
    $enclosed           = '"';
    $escaped            = '"';
     
    while($orders = tep_db_fetch_array($orders_query)){
    $orders_id = $orders['orders_id'];
    $orders_status = $orders['orders_status'];
     
      $i++;
     
     
    $orders_list .= $escaped."E".$enclosed.";".$escaped.str_pad($orders['orders_id'],8," ", STR_PAD_RIGHT) . $enclosed.";";
    $orders_list .= $escaped.str_pad($orders['customers_id'],6," ",STR_PAD_LEFT) . $enclosed.";";
    //date achat
    $date = clean_html_kelkoo($orders['date_purchased'],10);
    $date_format = str_replace("-","",$date);
    $date_finale_jj = substr($date_format, -6); 
    $date_finale_aa = substr($date_format, -6);
    $date_finale_mm = substr($date_format, -6);   
    $jj = substr($date_finale_jj,4);
    $mm = substr($date_finale_mm,2,-2);
    $aa = substr($date_finale_aa,0,-4);
     
    $orders_list .= $escaped.$jj.$mm.$aa.$enclosed.";";
     
    //date livraison
    $orders_list .= $escaped.$jj.$mm.$aa.$enclosed."\n";
     
    $orders_products = tep_db_query("select orders_products_id, orders_id, products_id, products_model, products_name, products_price, final_price, products_tax, products_quantity, products_ecotax, ecotax_rates_id  from orders_products
    where orders_id = " . $orders_id);
     
    // While loop to list the item
    while($row_orders_products = mysql_fetch_array($orders_products)) 
     
    {
    $nb_enreg = mysql_num_rows($orders_products);
    $orders_list .= $escaped."L".$enclosed.";".$escaped.$row_orders_products[1] . $enclosed.";";
    $orders_list .= $escaped."<input type='hidden' name='" . $row_orders_products[2] . "' value='" . $i++ . "'>". $enclosed.";";
    $orders_list .= $escaped.$nb_enreg. $enclosed.";";
    $orders_list .= $escaped.$row_orders_products[2] . $enclosed.";";
    $orders_list .= $escaped.$row_orders_products[8] . $enclosed."\n";
    } // end while loop 
     
    $orders_products_comment = tep_db_query("select orders_status_history_id, orders_id, orders_status_id, date_added, customer_notified, comments from orders_status_history
    where orders_id = " . $orders_id );
    while($row_orders_products_comment = mysql_fetch_array($orders_products_comment)){
    if ($row_orders_products_comment[5]!=""){
    $orders_list .= $escaped."C".$enclosed.";".$escaped.$row_orders_products_comment[1] . $enclosed.";";
    $orders_list .= $escaped."<input type='hidden' name='" . $row_orders_products_comment[2] . "' value='" . $i++ . "'>". $enclosed.";";
    $orders_list .= $escaped.$row_orders_products_comment[5] . $enclosed."\n";
    }else{}
     
    }
    }

  8. #8
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 31
    Points
    31
    Par défaut
    http://fr.php.net/function.mysql-insert-id

    Et si ça n'est pas au moment de l'insert, alors tu le select.

    Ou alors j'ai rien compris, ce qui vu la question ne m'étonnerait que moyennement.

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Ouah le code est trop long et j'ai la flemme aujourd'hui.

    Juste une question, sûrement contenue dans la code : que veux-tu afficher ?

    Parce que s'il ne s'agit que des données synthétiques (ou agrégées, au choix), une requête à base COUNT et de GROUP BY pourrait être utile...

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/02/2007, 22h00
  2. Réponses: 7
    Dernier message: 11/01/2007, 18h54
  3. [Tableaux] Récupérer une partie d'une variable
    Par griese dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2006, 17h20
  4. [Tableaux] récupérer une valeur de l'url
    Par vasilov dans le forum Langage
    Réponses: 2
    Dernier message: 20/01/2006, 18h49
  5. Réponses: 4
    Dernier message: 05/10/2005, 18h19

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