funzione php si ripete due volte

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve ragazzi ho un problemino su cui sto sbattendo la testa da ore, ho creato una funzione che estrae dei dati da un file txt confronta i vari array creati e crea delle tabelle bla bla ....la funzione è molto lunga ed articolata e dato che ho fatto varie prove sono arrivato a determinare cosa crea l'errore.

vi metto un esempio semplice così come l'ho testato che crea lo stesso errore:

mi sono creato questa funzione
PHP:
    $textfile = file($file);
    for($x=0;$x<count($textfile);$x++){
        $multi[]=explode("\t",$textfile[$x]);
    }
    $campi=$multi[0];////questa riga sono le intestazioni dei campi
    $prova=$multi[1];
///questa è la prima riga per trovare i valori numerici e definire se varchar o int, tutte le altre righe sono uguali

        $query.="CREATE TABLE  pippo(";

        foreach($campi as $key=>$value){
        foreach($prova as $k=>$v){
            if(($key==$k)){
                if(is_numeric($v)){
                    
                    $query.= $value. " mediumint(8) NULL, ";//la stringa è composta di soli numeri
                }else{
                    $query.= $value. " VARCHAR(255) NULL, ";
                }
            }
        }

    }
$query.="PRIMARY KEY (".$primary1."))";

    $db->query($query);
      if (!$db>query($query))  printf("ErrorCREATE: ".$query."%s\n", $db->error)."<br>";;

    return true;
}

la tabella viene creata però dà errore table is ready exist

stessa cosa quando vado a inserire tutto il resto, viene inserito tutto e poi partono gli errori di duplicate.

in pratica è come se dopo la prima creazione(o inserimento) ne tenta un altro e dà errore.

probabilmente è perchè si trova in un foreach ma non vedo altra soluzione.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ho fatto un ulteriore prova togliendo tutto dal foreach e dando dei nomi fittizzi. quando creo la tabella l'errore

PHP:
      if (!$db>query($query))  printf("ErrorCREATE: ".$query."%s\n", $db->error)."<br>";;

nu restiuisce

Table 'pippo' already exists

eppure è fuori dal ciclo e la tabella ovviamente non esisteva prima

boh mistero della fede
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
ciao
intanto non vedo come crei l'indice primario che generalmente è
id INT(9) NOT NULL AUTO_INCREMENT, (chiamato id o come preferisci)
... eccc....
PRIMARY KEY (id)) ENGINE = InnoDB;
poi metti la condizione che la tabella non esista, è meglio
CREATE TABLE IF NOT EXISTS tabella(
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
intanto non vedo come crei l'indice primario che generalmente è
id INT(9) NOT NULL AUTO_INCREMENT, (chiamato id o come preferisci)
... eccc....
PRIMARY KEY (id)) ENGINE = InnoDB;
poi metti la condizione che la tabella non esista, è meglio
CREATE TABLE IF NOT EXISTS tabella(
si bongo la consizione della tabella se esiste c'è già, ho estrapolato solo il pezzo inerente alla creazione della tabella
l'indice primario lo metto è qua
PHP:
$query.="PRIMARY KEY (".$primary1."))";
lo definisco con una variabile.
può essere che debba aggiungere un campo id con l'auto_increment?
è una cosa necessaria, perchè a me l'id in quelle tabelle non serve dato che ogni tabella ha già al suo interno un id che è al 100% univoco.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
niente da fare borgo ho risolto il problema degli insert nel senso che ora mi inserisce tutti i dati(evidentemente qualche campo uguale c'era nei file più grandi) però nel create continua a darmi quell'errore(ma solo se faccio $result->error) però la tabella viene creata perfettamente e l'errore non viene lasciato nemmeno nel file log. quindi potrei pure soprassedere e che mi sono impuntato
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
ciao
la parte
$query.="PRIMARY KEY (".$primary1."))";
da sola non basta per definire il campo chiave primaria, devi prima dfinire il campo
PHP:
<?php
//...........
        $query.="CREATE TABLE  pippo(";
        $query.="$primary1 VARCHAR(50) NOTNULL, ";//non so dove l'hai messa ma questa ci vuoile
        foreach($campi as $key=>$value){
        foreach($prova as $k=>$v){
            if(($key==$k)){
                if(is_numeric($v)){
                    $query.= $value. " mediumint(8) NULL, ";//la stringa è composta di soli numeri
                }else{
                    $query.= $value. " VARCHAR(255) NULL, ";
                }
            }
        }

    }
$query.="PRIMARY KEY (".$primary1."))";
//.......
?>
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ho fatto csì borgo

PHP:
 $query="CREATE TABLE  pippo (id int(9) NOT NULL AUTO_INCREMENT,";
    foreach($campi as $key=>$value){
        $query.= $value. " int(9) NULL, ";//la stringa è composta di soli numeri
    }
        $query.="PRIMARY KEY (id))";

ho inserito un campo in più con un paio di for me la sono cavata. ora fa tutto perfetto crea tabelle e fa l'inserimento. però ad esempio con questo codice crea la tabella perfettamente,sia i campi sia int o varchar però avendo messo questa riga

(!$db>query($query)) printf("ErrorCREATE: ".$query."%s\n", $db->error)."<br>";;

mi segnala-->subito dopo creata la tabella

Table 'pippo' already exists

stessa cosa l'insert, inserisce prima tutto e poi parte con gli errori duplicate.

E come se una volta creata la tabella ritenti la creazione, ma non riparte lo script,altrimenti mi darebbe l'avviso che la tabella esiste già ho usato una funzione di controllo all'inizio della funzione.
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Funzione jQuery Ajax invio file a php jQuery 1
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
D Come usare funzione php PHP 6
Shyson Modificare funzione php PHP 15
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
L Problema funzione mail() PHP PHP 3
maxnegri [PHP]Funzione di calcolo prezzo di una camera in un range di date PHP 62
L [PHP] problema count messo in una funzione. PHP 1
GiErre [PHP] [HTML] Disabilitare un link in funzione della piattaforma PHP 7
Monital Funzione php e campo database come variabile PHP 6
M PHP - Funzione non e scrive il risultato PHP 3
F [PHP] La funzione setcookie PHP 0
C [RISOLTO][PHP] Funzione ONclick PHP 14
A [PHP] Problema invio mail con funzione mail() PHP 3
C richiamare una funzione in un altro script php PHP 1
S [PHP] errore funzione sleep PHP 5
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
B [PHP]la pagina php non si carica se aggiungo funzione while PHP 10
A Chiamata funzione PHP con onclick PHP 8
alexbrasile PHP convertire la funzione fsockopen in curl PHP 0
Gaetano1991h [PHP] Chi mi sa spiegare la funzione di questo codice? PHP 1
M [PHP] Errore nell' assegnazione della variabile $this->id su una funzione PHP 1
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
S PHP: inviare via email contenuto di una funzione PHP 4
A Chiamare una specifica funzione in una pagina php PHP 1
G Problema php relativo a funzione di un pulsante PHP 8
D PHP:funzione che opera una query su argomento PHP 8
JackIlPazzo Chiamare una funzione specifica di php da una richiesta ajax? PHP 2
M Far partire una funzione/codice php con javascript Javascript 1
JackIlPazzo Eseguire funzione php senza ricaricare pagina? PHP 3
neo996sps [PHP e funzioni con PDO] Funzione per generare corpo tabella PHP 1
V Chiamata funzione php da javascript Ajax 3
X Conversione funzione php PHP 0
M Disabilitare alcune funzione php da scipt PHP 3
gandalf1959 funzione mail() e variabili su un link nel body in formato xxx.php?$a=$codicecontrollo PHP 2
C Limiti funzione mail() di php PHP 1
P Passare un valore, o arriare una funzione da pagina2.php in pagina1.php Javascript 2
M Applicare funzione php ad ogni elemto html Ajax 3
B AIUTO: come passare una variabile php ad una funzione javascript Javascript 2
F funzione javascript all'interno di un codice php PHP 38
G funzione include di php e paramentri variabili PHP 4
X NOW() funzione mysql eseguita da php PHP 6
I Richiamare funzione jquery all'invio del form php Javascript 6
S php problemi di funzione header usando la fuzione di jquery post PHP 4
S problema con funzione php PHP 3
A Funzione exec di php, errore 127 PHP 0
M PhP Problema funzione mssql PHP 5
H Funzione php non viene richiamata! PHP 41
C Funzione PHP non ottiene nomi da puntatori PHP 1
andre9004 richiamare funzione js da php PHP 2

Discussioni simili