Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    moltiplicazione di righe

    ho un problema che non riesco proprio a risolvere.
    devo inserire delle righe di una tabella(attuale) in un altra (storica) che sono simili. la seconda ha due campi in piu uno è un identificativo e l'altro è uno stato, questi inserimenti
    vengono fatti se sono verificate alcune condizioni.
    vi descrivo come ho implementato la cosa: ho creato(con dreamwever) due recordset rispettivamente per le due tabelle attuale e storica.
    poi con due while annidati e usando la funzione mysql_fetch_array estraggo gli elementi dei
    recordset e effettuo i confronti e nel caso proseguo con gli inserimenti aggiornando la chiave (trovo il max della colonna e lo aumento di 1) e inserendo lo stato.
    dopo la chiusura del primo while mi riposiziono con mysql_data_seek all'inizio del recorset storico.
    Spero di essere stato chiaro.
    Il problema è questo: perche alla prima esecuzione della pagina tutto è perfetto metre se uso il tasto di explorer per ricaricarla le chiavi vengono duplicate? se uso una chiave autonicremenale la chiave non si duplica ma la le righe si moltiplicano e gli elementi vengono duplicati n volte!
    dove sta il problema ?
    nn so piu dove sbattere la testa!

  2. #2
    se posti il codice e piu semplice aiutarti..
    La programmazione...
    che passione!!..

  3. #3
    eccolo: è un po lungo....


    while(($array2= mysql_fetch_array($Recordset2))){
    while (($array1= mysql_fetch_array($Recordset1))){
    if(($array2['dt_nbr_serie']) != ($array1['dt_nbr_serie']) && ( empty($array2['dt_data_add']))) { $query_max=(" SELECT MAX(Rep_id) FROM storica");
    $id=mysql_query($query_max, $miaconnessione) or die(mysql_error());
    $id=($id+1);

    $query_inser2=( "INSERT INTO storica(Rep_id,dt_nbr_bam,dt_data_bam,dt_provenien za,dt_reg_mnemo,dtmagazzino,dt_sett_in,dt_bolla_ca r,dt_data_bolla,dt_nbr_voce,dt_codice_art,dt_descr iz,dt_nome_cent,dt_nbr_serie,dt_nbr_ril_guas,dt_ce ntrale,dt_data_add,dt_con_rimpiazzo,stato) VALUES('$id','$array2[dt_nbr_bam]','$array2[dt_data_bam]','$array2[dt_provenienza]','$array2[dt_reg_mnemo]','$array2[dtmagazzino]','$array2[dt_reg_mnemo]','$array2[dt_sett_in]','$array2[dt_bolla_car]','$array2[dt_nbr_voce]','$array2[dt_codice_art]','$array2[dt_descriz]','$array2[dt_nome_cent]','$array2[dt_nbr_serie]','$array2[dt_nbr_ril_guas]','$array2[dt_centrale]','$array2[dt_data_add]','$array2[dt_con_rimpiazzo]','A')");
    $inser1= mysql_query($query_inser2,$miaconnessione) or die(mysql_error());}
    else if (($array2['dt_nbr_serie']) != ($array1['dt_nbr_serie']) || ( !empty($array2['dt_data_add']))){ $query_max=(" SELECT MAX(Rep_id) FROM storica");
    $id=mysql_query($query_max, $miaconnessione) or die(mysql_error());
    $id=($id+1);


    $query_inser2=( "INSERT INTO storica(Rep_id,dt_nbr_bam,dt_data_bam,dt_provenien za,dt_reg_mnemo,dtmagazzino,dt_sett_in,dt_bolla_ca r,dt_data_bolla,dt_nbr_voce,dt_codice_art,dt_descr iz,dt_nome_cent,dt_nbr_serie,dt_nbr_ril_guas,dt_ce ntrale,dt_data_add,dt_con_rimpiazzo,stato) VALUES('$id','$array2[dt_nbr_bam]','$array2[dt_data_bam]','$array2[dt_provenienza]','$array2[dt_reg_mnemo]','$array2[dtmagazzino]','$array2[dt_reg_mnemo]','$array2[dt_sett_in]','$array2[dt_bolla_car]','$array2[dt_nbr_voce]','$array2[dt_codice_art]','$array2[dt_descriz]','$array2[dt_nome_cent]','$array2[dt_nbr_serie]','$array2[dt_nbr_ril_guas]','$array2[dt_centrale]','$array2[dt_data_add]','$array2[dt_con_rimpiazzo]','U')");

    $inser1= mysql_query($query_inser2,$miaconnessione) or die(mysql_error());}

    else if.........

    }
    mysql_data_seek($Recordset1,0);

    }
    mysql_data_seek($Recordset2,0);
    mysql_data_seek($Recordset1,1);

    ?>

  4. #4
    :master: :master: :master: ...credo di aver individuato il tuo problema..

    Codice PHP:
    if(($array2['dt_nbr_serie']) != ($array1['dt_nbr_serie']) && ( empty($array2['dt_data_add']))) { $query_max=(" SELECT MAX(Rep_id) FROM storica");
    // qui 
    $id=mysql_query($query_max$miaconnessione) or die(mysql_error());
    $id=($id+1); 
    la mysql_query nn restituisce un valore..ma true o false..http://www.php.net/manual/it/function.mysql-query.php...

    da quell'istruzione cosa vuoi ottenere? il valore massimo di Rep_id??
    La programmazione...
    che passione!!..

  5. #5
    si per incrementarlo ogni volta
    se scrivo la query in phpmyadmin funge

  6. #6
    certo certo...la query è ok...e quel'istruzione che nn va bene..

    se io asseggno ad $id il risultato di una qualunque query sql, in $id nn avro alvun valore ma semplicemente true se va a buon fine e false altrimenti.

    per ottenere il tuo id devi fare cosi :

    Codice PHP:
    // esegui la query
    $id=mysql_query($query_max$miaconnessione) or die(mysql_error());
    // ricavi dal risultato della query il tuo valore
    $id mysql_result $id); 
    se vuoi capire meglio come funziona la mysql_result vai qui :
    http://www.php.net/manual/it/function.mysql-result.php

    cmq tornando a noi...li devi ricavarti il valore..quindi o usi quella funzione, oppure fai una mysql_fetch_array()...capito?
    La programmazione...
    che passione!!..

  7. #7
    capito... ma il problema piu grave non e questo... messo che uso rep_id come autoincremet
    quindi non calcolo il massimo perche se ricarico la pagina le righe vengono ripetute
    n volte....?

  8. #8
    :master: :master: ...scusa..nn ho capito..
    La programmazione...
    che passione!!..

  9. #9
    se eseguo la pagina la prima volta le righe vengono inserite correttamente
    se ricarico la pagina e viene rieseguita i record vengono inseriti di nuovo a dispetto delle condizioni che ho messo.

  10. #10
    evidentemente xke la rugha che ti ho fatto correggere prima è presente piu volte nel codice..allora la prima volta va xke parte da 0, la seconda invece replica le righe..se nn è x quello sbagli i controlli...fammi sapere
    La programmazione...
    che passione!!..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.