- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- problema inserimento in mysql
-
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
-
@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
-
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
-
Perché non usi
mysql_fetch_array() ?
Ti da un array dal quale puoi togliere molto più comodamente i valori...
-
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!!
-
nessuno mi sa aiutare?
help me!
-
se non ho capito male hai modificato il codice originario.
prova a postare il codice aggiornato
-
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
- <a href="catalogouni.php"><span class="Stile6">VISUALIZZA CATALOGO UNI</span></a><br>
-
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.
-
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!
-
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!!
-
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 50o forse ho capito male io...
in ogni caso ti stampa una query doppia?
(la prima con i campi vuoti?)
-
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
-
è 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!!
-
il problema potrebbe nascere dal "foreach()"
prova a spiegarmi meglio cosa hai nel campo normeuni proveniente dal form
-
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.5immagina però che sono 100 o 200 o addirittura 400 linee
con foreach ho voluto dividere le varie norme!
-
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.
-
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
-
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
-
@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