• Super User

    E' un pò incasinato sto codice... Molte parti inutili, variabili riallocate e non utilizzate... vedi ( $norma = $norma1 -> spreco di memoria ) e la query iniziale, che non sfrutti...


  • User

    ora lo alleggerisco 😞

    ma cosa mi consigli per il mio problema?

    grazie


  • User

    ho tolto la query iniziale

    ho provato con 100 linee alla volta e sembra funzionare

    con 200 linee me ne ritrovo circa 360 (quindi 160 in più) ma perchè????

    quando carica lo script è come se fa il refresh di pagina un paio di volte!!!

    aiuto!!!

    THANKS


  • 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