- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- problema inserimento in mysql
-
problema inserimento in mysql
Ciao a tutti,
ho un problema strano!!
ho generato uno script che da delle righe con explode genera variabili da inserire nel database mysql...e fino a qui tutto bene!
Il problema è quando le linee da inserire sono molte (con area ripetuta)
infatti fino a 50 tutto ok
se sono 100 me li duplica 2 volteoltre i 400 ne tralascia qualcuna ad esempio ne trovo 380
Qualcuno sa aiutarmi?
Grazie mille
Claudio
-
provo ad ipotizzare...
- lo script va in timeout?
- hai provato a fare un "echo" della tua query e provarla direttamente?
- magari non hai sforato il limite massimo di delay che consente il tuo hosting?
-
Perché non invii il codice della funzione? Magari vediamo un bug che a te sfugge..
-
- non so se va in timeout come lo capisco?
- l'ho fatto ne vedo una 50 e poi gli altri no... sembra che fa un refresh di pagina...... ma in realtà non sono mai quelli reali (esempio 400 diventano 380 ma anche 100 che raddoppiano)
- da dove lo capisco? uso Aruba con Linux
ecco il codice
<?php
mysql_select_db($database_normeonline, $normeonline);
$query_uni = "SELECT * FROM uni";
$uni = mysql_query($query_uni, $normeonline) or die(mysql_error());
$row_uni = mysql_fetch_assoc($uni);
$totalRows_uni = mysql_num_rows($uni);
?>
<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 ('', '$cod', '$anno', '$titolo')");
if (mysql_error()){ echo mysql_error();}
}?>
GRAZIE MILLE!!!!!
-
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...
-
ora lo alleggerisco
ma cosa mi consigli per il mio problema?
grazie
-
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!!