- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- problema inserimento in mysql
-
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
-
@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.
-
ok perfetto
quindi mi consigli di mettere un limite di 50 sul ciclo!
anche se poi ho il problema di come faccio a farlo riprendere dal 51
GRAZIE AGAIN