• Super User

    @solocla said:

    ora lo alleggerisco 😞

    ma cosa mi consigli per il mio problema?

    grazie
    mysql_query("INSERT INTO uni VALUES ('', '$cod', '$anno', '$titolo')");
    if (mysql_error()){ echo mysql_error();}
    }

    sostituiscilo con

    mysql_query("INSERT INTO uni VALUES ('', '$cod', '$anno', '$titolo')") or die(mysql_error());


    Per quanto riguarda il tuo problema... Ti consiglio di evitare tutti questi explode se non sono strettamente importanti, idem per i list.. E di dare una ripulita generale al codice... Non conosco il progettoquindi non posso dirti altro


  • User

    l'ho sostituito!
    ora quello che fa
    è raddoppiare perfettamente le linee inserite!!!

    prima era casuale ora sembra che inserisca due volte le stesse linee!!

    per quanto riguarda i list ed explode purtroppo mi sono necessari per separare le variabili....

    help me 😞


  • User Attivo

    Perché non usi

    mysql_fetch_array() ?

    Ti da un array dal quale puoi togliere molto più comodamente i valori...


  • User

    Grazie
    ci proverò

    ma il mio problema non è tanto l'estrarre i dati

    ma il fatto che mi si duplicano nel database!!

    Non capisco!!

    AIUTOOOO!!


  • User

    nessuno mi sa aiutare?

    help me!


  • User

    se non ho capito male hai modificato il codice originario.

    prova a postare il codice aggiornato 😉


  • User

    eccolo.....

    <?php require_once('../Connections/normeonline.php'); ?>
    <?php
    mysql_select_db($database_normeonline, $normeonline);
    ?>
    <style type="text/css">
    <!--
    .Stile6 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    }
    -->
    </style>
    <div align="center"><a href="formuni.php" class="Stile6">Torna all'inserimento</a>

    • <a href="catalogouni.php"><span class="Stile6">VISUALIZZA CATALOGO UNI</span></a><br>
      <a href="cpanel.php"><span class="Stile6">TORNA AL PANNELLO DI CONTROLLO</span></a>
      <?php
      $data1=$_POST['normeuni'];
      $data=$data1;
      ?>
      <?php
      $norma = explode ("? ", $data);
      foreach ($norma as $norma1) {
      ?>
      <?php
      list($a1, $a2) = explode("

    ", $norma1);
    //a2 titolo sporco
    list ($titolo) = explode ("UNI", $a2);
    list($uni, $codiceanno) = explode(" ", $norma1);
    ?>
    <style type="text/css">
    <!--
    .Stile5 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 10px; }
    -->
    </style>

    </div>
    <p></p>
    <?php
    $divcodice =$codiceanno;
    list($cod, $anno) = explode(":", $divcodice);
    ?>
    <p></p>
    <p> </p>
    <?php
    mysql_query("INSERT INTO uni VALUES ('', '$uni', '$cod', '$anno', '$titolo')") or die(mysql_error());
    }
    ?>

    grazie


  • User

    fai una cosa:

    modifica

    [php]
    mysql_query("INSERT INTO uni VALUES ('', '$uni', '$cod', '$anno', '$titolo')") or die(mysql_error());
    [/php]

    con:

    [php]
    $prova = "INSERT INTO uni VALUES ('', '$uni', '$cod', '$anno', '$titolo')";
    echo $prova;
    mysql_query($prova) or die(mysql_error());
    [/php]

    e posta qui la stampa della variabile $prova (ovvero la query)

    così cerchiamo di capire da dove proviene l'errore.


  • User

    eccolo

    INSERT INTO uni VALUES ('', '', '', '', '')

    INSERT INTO uni VALUES ('', 'UNI', '11170-1', '2005', 'Veicoli ferrotranviari - Linee guida per la protezione al fuoco dei veicoli ferrotranviari ed a via guidata - Principi generali ')

    ma il problema non è con poche righe!
    ma quando ne metto tante in ciclo!
    ad esempio se ne metto 200 o 400 impazzisce ridando il doppio delle righe o qualche volta meno righe!


  • User

    quella che ho messo è a 1 riga...

    ora ho provato con 400
    e succede che carica più volte la stessa pagina... come se senza refresh della pagina non riesca a inserire tutte le righe!!


  • User

    quindi è come se lo script ripartisse da solo?
    quindi se in ciclo riuscisse a inserirne, che so, 50
    in teoria, ripartendo, dovrebbe riscriverti le stesse 50

    o forse ho capito male io...

    in ogni caso ti stampa una query doppia?

    (la prima con i campi vuoti?)


  • User

    ti faccio un esempio:

    se ne inserisco solo 50 me ne da 50 giuste (e la pagina si carica una sola volta)

    se ne inserisco 100, 200 , 400 sembra fare un refresh di pagina e continuare a caricare la pagina.... il risultato è che spesso rimangono tutte doppie altre volte qualcuno di meno del doppio!

    HELP MEEEE


  • User

    è talmente rapido che non riesco a fermarlo sul secondo o terzo refresh!

    ma sembra che faccia i primi ammettiamo 100 e poi riparte ancora!!

    poi la terza pagina rimane vuota!!


  • User

    il problema potrebbe nascere dal "foreach()"

    prova a spiegarmi meglio cosa hai nel campo normeuni proveniente dal form


  • User

    normeuni è una variabile che arriva da un form

    nel form inserisco tutte le linee che mi servono e tramite lo script voglio che mi divida le linee in variabili per inserirle in un database

    nel form inserisco linee tipo queste:

    ? UNI 1001-1004:1939

    Ricerca del carattere tintorio della materia colorante impiegata nella tintura delle fibre tessili animali e artificiali proteiche.
    UNI 1001-1004:1939 versione elettronica; lingua italiano EUR 17.5
    UNI 1001-1004:1939 versione su carta; lingua italiano EUR 17.5

    ? UNI 1005-1006:1939

    Equivalenza delle torsioni dei filati per metro e per pollice.
    UNI 1005-1006:1939 versione elettronica; lingua italiano EUR 12.5
    UNI 1005-1006:1939 versione su carta; lingua italiano EUR 12.5

    ? UNI 1008-1009:1939

    Filati di canapa, di lino, di iuta. Tavola di ragguaglio dei pesi e delle lunghezze nei sistemi metrico e inglese.
    UNI 1008-1009:1939 versione elettronica; lingua italiano EUR 12.5
    UNI 1008-1009:1939 versione su carta; lingua italiano EUR 12.5

    ? UNI 10101:1992

    Prodotti vernicianti. Determinazione dello spessore della pellicola secca di un prodotto verniciante o di un ciclo da applicare su legno e supporti legnosi.
    UNI 10101:1992 versione elettronica; lingua italiano EUR 17.5
    UNI 10101:1992 versione su carta; lingua italiano EUR 17.5

    immagina però che sono 100 o 200 o addirittura 400 linee

    con foreach ho voluto dividere le varie norme!


  • User

    allora ho fatto un test in locale e con un veloce copia e incolla dei risultati ho provato a fingere l'inserimento di 4971 elementi (credo bastino 😄 )

    occhio che lo script ti fa anche un inserimento vuoto all'inizio.

    non mi ha dato nessun errore e non mi ha stampato doppioni (piuttosto che inserire in db facevo stampare ogni volta la query)

    è probabile che l'errore che hai dipenda da un timeout o dalle tue impostazioni php e mysql (sui quali non ti saprei dire molto)

    in questo caso ti conviene risolvere il problema alla radice ripensandone il funzionamento magari impostando dei contatori e dividendo le operazioni di inserimento a gruppi da 50 ciascuno.

    è evidente che con numeri a 3 cifre di elementi va in palla e il problema deriverà quasi sicuramente da lì.

    mi dispiace non saperti aiutare oltre.


  • User

    sei un grande!!

    io lavoro su Aruba e non so se loro hanno un timeout!

    ora proverò in locale.....
    mi dici solo due cose...

    che versione php hai?

    e secondo cosa intendi per contatori?

    Grazie mille

    Ciao


  • User

    ma hai provato con 4000 record tutti che partono dal form?

    o un certo numero (sotto i 100) fatto più volte?
    (arrivando ai 4000)

    ciao


  • User

    @solocla said:

    sei un grande!!

    io lavoro su Aruba e non so se loro hanno un timeout!

    ora proverò in locale.....
    mi dici solo due cose...

    che versione php hai?

    e secondo cosa intendi per contatori?

    Grazie mille

    Ciao

    grazie per il grande ma non ho proprio fatto niente. 😄

    in locale => PHP Version 4.3.11

    per contatori intendo controllare il numero degli elementi inseriti e poi ricominciare dal successivo.

    es. da 1 a 50 e poi da 51 a 100, etc...

    adesso stacco,
    buona fortuna


  • User

    @solocla said:

    ma hai provato con 4000 record tutti che partono dal form?

    o un certo numero (sotto i 100) fatto più volte?
    (arrivando ai 4000)

    ciao

    io il form non ce l'ho così ho inserito all'interno della variabile manualmente il contenuto di esempio che mi avevi dato ripetuto per più di 4000 volte.