Ok, ieri sera mi sa chero un po' fuso, il problema c'è ma è leggermente diverso.
Non è che prende sempre i dati della prima tabella, prende i dati della prima e ci aggiunge quelli della seconda, nella terza prende i primi, i secondi e ci aggiunge i terzi dati... va a concatenare il testo dopo ogni ciclo in pratica:
codice:
Query creata1:
INSERT INTO... VALUES (dai prima tabella)
Query creata2:
INSERT INTO... VALUES (dai prima tabella),(dati seconda tabella)
Query creata3:
INSERT INTO... VALUES (dai prima tabella),(dati seconda tabella),(dati terza tabella)
Capito il problema?
dato che è in un array ecc ho provato a resettare tutte le variabili alla fine di ogni ciclo, ma il problema rimane. Vi riposto il codice con il reset delle varie variabili... aiutatemiiiiii
Codice PHP:
include_once('includes/config.inc.php');
///////////prendiamo tutte le tabelle e teniamo quelle dei forum///////////////
$tbls = mysql_list_tables($dbname);
$num_rows = mysql_num_rows($tbls);
$arrtbl=array();
for ($i = 0; $i < $num_rows; $i++){
$tblname=mysql_tablename($tbls, $i);
//visualizziamo i nomi e creiamo array con nomi delle tabelle forum
if(substr($tblname,0,3)=="for"){
echo "Tabella: ".$tblname."
";
$arrtbl[]=$tblname;
}
}
mysql_free_result($tbls);
//////////////inizio lavoro per ogni tabella!!!!!!///////////////////////
$tottext="";
for($z=0;$z<=count($arrtbl)-1;$z++){
$tblatt=$arrtbl[$z];
$sqlfields="";
//estrapoliamo i nomi delle colonne della tabella
$docols = mysql_query("SHOW COLUMNS FROM ".$tblatt);
$arrcols=array();
if (mysql_num_rows($docols) > 0) {
//mettiamo tutte le collone in un array
while ($row=mysql_fetch_assoc($docols)) {
$arrcols[]=$row;
}
}//fine if
mysql_free_result($docols);
//mettiamo tutti i campi in una variabile che metteremo poi nella query
for($t=0;$t<=count($arrcols)-1;$t++){
$sqlfields.=$arrcols[$t]['Field'];
if($t!=count($arrcols)-1){//mettiamo la virgola tranne se è l'ultimo
$sqlfields.=",";
}
}//fine secondo for
///////prendiamo i dati dalla tabella attuale
$sqldati="SELECT * FROM ".$tblatt;
$dodati=mysql_query($sqldati,$conn);
//dobbiamo mettere tutte le righe in un array, come facciamo?
while ($datu = mysql_fetch_row($dodati)) {
$arrvals[]=$datu;
}
mysql_free_result($dodati);
$vals="";
$testovals="";
for($g=0;$g<=count($arrvals)-1;$g++){//per ogni riga trovata
$testovals="(";//apro parentesi che va dopo VALUES
for($s=0;$s<=count($arrcols)-1;$s++){//per ogni campo
$testovals.="'".$arrvals[$g][$s]."',";
}
$testovals=substr($testovals,0,-1)."),";//chiudo ) e metto , per la prossima riga
$vals.=$testovals;//riga completa
$testovals="";
}
//creiamo il testo che va all'inizio con l'insert ecc
$testofile="#\n#Dumb della tabella ".$tblatt."\n#\nINSERT INTO ".$tblatt." (".$sqlfields.") VALUES ";
//tolgo l'ultima virgola
$tottext.=htmlentities($testofile.substr($vals,0,-1)).";\n\n\n
";
$vals="";
reset($arrvals);
}//fine primo for
echo $tottext;