Non inserisce dati nel db

  • Creatore Discussione Creatore Discussione Kirsolo
  • Data di inizio Data di inizio
ciao
metti un paio di var_dump e dimmi cosa riportano

PHP:
<?php
$dir="pinco_pallo/";//qui hai messo la tua spero
$file_excess=glob($dir."*.jpg");
$file_excess=array_merge($file_excess,glob($dir."*.JPG"));//il difetto di glob è che è casesensitive
//e se le hai gli altri tipi di immagini
$file_excess=array_merge($file_excess,glob($dir."*.png"));
$file_excess=array_merge($file_excess,glob($dir."*.gif"));
//ricavo i nomi dei file senza percorso
$file_excess=array_map("basename",$file_excess);
//questa parte poi la togli ***
echo "<pre>";
var_dump($file_excess);//dovresti vedere l'elenco dei file
echo "<pre>";
//***
//qui i dati di connessione
foreach($file_excess as $ch => $excess){
    //se c'è puo essere in uno dei 4 campi riservati alle immagini
    $excess=$dir.$excess;
	$query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'";
    $ris=mysql_query($query);
    if(mysql_num_rows($ris)==0){//se 0 il nome non è in tabella
        var_dump(unlink($dir.$excess));//meittilo in un var dump poi lo riporti come prima
    }
}
?>
 
ciao
metti un paio di var_dump e dimmi cosa riportano

PHP:
<?php
$dir="pinco_pallo/";//qui hai messo la tua spero
$file_excess=glob($dir."*.jpg");
$file_excess=array_merge($file_excess,glob($dir."*.JPG"));//il difetto di glob è che è casesensitive
//e se le hai gli altri tipi di immagini
$file_excess=array_merge($file_excess,glob($dir."*.png"));
$file_excess=array_merge($file_excess,glob($dir."*.gif"));
//ricavo i nomi dei file senza percorso
$file_excess=array_map("basename",$file_excess);
//questa parte poi la togli ***
echo "<pre>";
var_dump($file_excess);//dovresti vedere l'elenco dei file
echo "<pre>";
//***
//qui i dati di connessione
foreach($file_excess as $ch => $excess){
    //se c'è puo essere in uno dei 4 campi riservati alle immagini
    $excess=$dir.$excess;
	$query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'";
    $ris=mysql_query($query);
    if(mysql_num_rows($ris)==0){//se 0 il nome non è in tabella
        var_dump(unlink($dir.$excess));//meittilo in un var dump poi lo riporti come prima
    }
}
?>

con 6 immagini:

array(6) {
[0]=>
string(8) "Birr.jpg"
[1]=>
string(14) "Desgriglia.jpg"
[2]=>
string(7) "b&w.jpg"
[3]=>
string(19) "bobo_vieri_370d.jpg"
[4]=>
string(9) "prova.jpg"
[5]=>
string(10) "tetto1.jpg"
}
 
ciao
allora non entra nell'if(mysql_num_rows($ris)==0)
devo capire il perchè poi spero di saperti dire

counque intanto mettimi un vardump alla query
PHP:
<?php
//...
$query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'"; 
var_dump($query);echo "<br />";
//...
?>
se come hai detto hai caricato sei immagini dovrebbe risultarti
string(xy) "SELECT * FROM prova WHERE immagine='Birr.jpg' OR img2='Birr.jpg' OR img3='Birr.jpg' OR img4='Birr.jpg'"
string(xy) "SELECT * FROM prova WHERE immagine='Desgriglia.jpg' OR img2='Desgriglia.jpg' OR img3='Desgriglia.jpg' OR img4='Desgriglia.jpg'"
string(xy) "SELECT * FROM prova WHERE immagine='b&w.jpg' OR img2='b&w.jpg' OR img3='b&w.jpg' OR img4='b&w.jpg'"
string(xy) "SELECT * FROM prova WHERE immagine='bobo_vieri_370d.jpg' OR img2='bobo_vieri_370d.jpg' OR img3='bobo_vieri_370d.jpg' OR img4='bobo_vieri_370d.jpg'"
string(xy) "SELECT * FROM prova WHERE immagine='prova.jpg' OR img2='prova.jpg' OR img3='prova.jpg' OR img4='prova.jpg'"
string(xy) "SELECT * FROM prova WHERE immagine='tetto1.jpg' OR img2='tetto1.jpg' OR img3='tetto1.jpg' OR img4='tetto1.jpg'"

e per prova.jpg e tetto1.jpg dovrebbe darti mysql_num_rows($ris)==0
 
ciao
allora non entra nell'if(mysql_num_rows($ris)==0)
devo capire il perchè poi spero di saperti dire

counque intanto mettimi un vardump alla query
PHP:
<?php
//...
$query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'"; 
var_dump($query);echo "<br />";
//...
?>
se come hai detto hai caricato sei immagini dovrebbe risultarti


e per prova.jpg e tetto1.jpg dovrebbe darti mysql_num_rows($ris)==0

forse l'ordine delle immagini non è come il precendente ma lo capisci:
Codice:
array(6) {
  [0]=>
  string(8) "Birr.jpg"
  [1]=>
  string(14) "Desgriglia.jpg"
  [2]=>
  string(19) "bobo_vieri_370d.jpg"
  [3]=>
  string(9) "prova.jpg"
  [4]=>
  string(10) "tetto1.jpg"
  [5]=>
  string(13) "Immagine1.png"
}
string(102) "SELECT * FROM prova WHERE immagine='Birr.jpg' OR img2='Birr.jpg' OR img3='Birr.jpg' OR img4='Birr.jpg'"

string(126) "SELECT * FROM prova WHERE immagine='Desgriglia.jpg' OR img2='Desgriglia.jpg' OR img3='Desgriglia.jpg' OR img4='Desgriglia.jpg'"

string(146) "SELECT * FROM prova WHERE immagine='bobo_vieri_370d.jpg' OR img2='bobo_vieri_370d.jpg' OR img3='bobo_vieri_370d.jpg' OR img4='bobo_vieri_370d.jpg'"

string(106) "SELECT * FROM prova WHERE immagine='prova.jpg' OR img2='prova.jpg' OR img3='prova.jpg' OR img4='prova.jpg'"

string(110) "SELECT * FROM prova WHERE immagine='tetto1.jpg' OR img2='tetto1.jpg' OR img3='tetto1.jpg' OR img4='tetto1.jpg'"

string(122) "SELECT * FROM prova WHERE immagine='Immagine1.png' OR img2='Immagine1.png' OR img3='Immagine1.png' OR img4='Immagine1.png'"
 
ciao
sto cercando di capire perche non risulta 0 il numero visto che le query sono giuste, metti un altro var_dump
PHP:
<?php
//.....
//qui i dati di connessione
foreach($file_excess as $ch => $excess){
    //se c'è puo essere in uno dei 4 campi riservati alle immagini
    $excess=$dir.$excess;
    $query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'";
	var_dump($query);//allora QUI OK
    $ris=mysql_query($query);
	var_dump(mysql_num_rows($ris)); echo "<br />";//vediamo qui
    if(mysql_num_rows($ris)==0){//se 0 il nome non è in tabella
        var_dump(unlink($dir.$excess));//meittilo in un var dump poi lo riporti come prima
    }
}
?>
fai anche un'altra cosa con phpmyadmin verifica se per caso esistono i record che non ci dovrebbero essere in tal caso bisogna andare a rivedere l'inserimento
 
ciao
sto cercando di capire perche non risulta 0 il numero visto che le query sono giuste, metti un altro var_dump
PHP:
<?php
//.....
//qui i dati di connessione
foreach($file_excess as $ch => $excess){
    //se c'è puo essere in uno dei 4 campi riservati alle immagini
    $excess=$dir.$excess;
    $query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'";
	var_dump($query);//allora QUI OK
    $ris=mysql_query($query);
	var_dump(mysql_num_rows($ris)); echo "<br />";//vediamo qui
    if(mysql_num_rows($ris)==0){//se 0 il nome non è in tabella
        var_dump(unlink($dir.$excess));//meittilo in un var dump poi lo riporti come prima
    }
}
?>
fai anche un'altra cosa con phpmyadmin verifica se per caso esistono i record che non ci dovrebbero essere in tal caso bisogna andare a rivedere l'inserimento

con
PHP:
..
$file_excess=array_map("basename",$file_excess); 
//
echo "<pre>"; 
var_dump($file_excess);//dovresti vedere l'elenco dei file 
echo "<pre>"; 
//qui i dati di connessione
$sql = mysql_connect("localhost","root","");
			mysql_selectdb("my_luca",$sql); 
foreach($file_excess as $ch => $excess){ 
	//se c'è puo essere in uno dei 4 campi riservati alle immagini 
	$excess=$dir.$excess; 
    $query="SELECT * FROM prova WHERE immagine='$excess' OR img2='$excess' OR img3='$excess' OR img4='$excess'"; 
    var_dump($query); 
	$ris= mysql_query($query); 
	var_dump(mysql_num_rows($ris)); echo "<br />";//
    if(mysql_num_rows($ris)==0){//se 0 il nome non è in tabella 
		var_dump(unlink($dir.$excess));//quindi lo cancello 
....

Codice:
array(6) {
  [0]=>
  string(8) "Birr.jpg"
  [1]=>
  string(14) "Desgriglia.jpg"
  [2]=>
  string(19) "bobo_vieri_370d.jpg"
  [3]=>
  string(9) "prova.jpg"
  [4]=>
  string(10) "tetto1.jpg"
  [5]=>
  string(13) "Immagine1.png"
}
string(126) "SELECT * FROM prova WHERE immagine='Fotop/Birr.jpg' OR img2='Fotop/Birr.jpg' OR img3='Fotop/Birr.jpg' OR img4='Fotop/Birr.jpg'"
int(1)

string(150) "SELECT * FROM prova WHERE immagine='Fotop/Desgriglia.jpg' OR img2='Fotop/Desgriglia.jpg' OR img3='Fotop/Desgriglia.jpg' OR img4='Fotop/Desgriglia.jpg'"
int(1)

string(170) "SELECT * FROM prova WHERE immagine='Fotop/bobo_vieri_370d.jpg' OR img2='Fotop/bobo_vieri_370d.jpg' OR img3='Fotop/bobo_vieri_370d.jpg' OR img4='Fotop/bobo_vieri_370d.jpg'"
int(1)

string(130) "SELECT * FROM prova WHERE immagine='Fotop/prova.jpg' OR img2='Fotop/prova.jpg' OR img3='Fotop/prova.jpg' OR img4='Fotop/prova.jpg'"
int(1)

string(134) "SELECT * FROM prova WHERE immagine='Fotop/tetto1.jpg' OR img2='Fotop/tetto1.jpg' OR img3='Fotop/tetto1.jpg' OR img4='Fotop/tetto1.jpg'"
int(1)

string(146) "SELECT * FROM prova WHERE immagine='Fotop/Immagine1.png' OR img2='Fotop/Immagine1.png' OR img3='Fotop/Immagine1.png' OR img4='Fotop/Immagine1.png'"
int(1)

nella cartella sempre 6 immagini

nella tabella sql ho 4 record per l'immagine, e ne inserisce solo 4, in quest'ordine:
Fotop/Birr.jpg
Fotop/bobo_vieri_370d.jpg
Fotop/Desgriglia.jpg
Fotop/Immagine1.png
 
ciao
fai una prova con un file a parte con un nome che di sicuro NON hai nella tabella

<?php
// dati di connessione
$query="SELECT * FROM prova WHERE immagine='Fotop/pinco_pallo.jpg' OR img2='Fotop/pinco_pallo.jpg' OR img3='Fotop/pinco_pallo.jpg' OR img4='Fotop/pinco_pallo.jpg'";
$ris=mysql($query);
var_dump(mysql_num_rows($ris));
?>
poi prova a mettere il nome di un file che hai in cartella ma sempre NON in tabella
in questi due casi il var dump dovrebbe darti 0
prova poi col nome di un file caricato e che sia in tabella
in questo caso dovrebbe darti 1

oppure prova direttamente le query in phpmyadmin
 

Discussioni simili