problema script php mysql multi upload immagini

nobilebarabba

Nuovo Utente
29 Feb 2008
17
0
0
Salve a tutti, ho un problema con lo script qui sotto, serve per modificare un record nel db nel quale faccio anche l'upload di immagini; le immagini però non vengono salvate nella cartella ed inoltre se tento di modificare anche solo una immagine mi cancella completamente nel record tutti i nomi delle immagini (i permessi della cartella di destinazione sono 777)
Qualcuno può aiutarmi?
Ho sostituito i dati di connessione al db con xxx ;-)
Grazie in anticipo
PHP:
<?php

include 'header2.html';

foreach($_POST as $varname => $value)
$formVars[$varname]=$value;

$con = mysql_connect("localhost","xxx","xxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con);

if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
   $filename = $_FILES['filename']['name'];
   move_uploaded_file($_FILES['filename']['tmp_name'], "../imagesupused/$filename");
   $file = "../imagesupused/$filename";

	$save = "../imagesupused/$filename";
	list($width, $height) = getimagesize($file) ;
	$modwidth = 600;
	$modheight = round(($height / $width) * $modwidth);
	$tn = @imagecreatetruecolor($modwidth, $modheight) ;
	$image = @imagecreatefromjpeg($file) ;
	imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
	imagejpeg($tn, $save, 80);

	$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	 mysql_query($query);
} 
	else {
	$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	 mysql_query($query);
}

echo "<script src=\"coolRedirect.js\" type=\"text/javascript\"></script><body onload=\"coolRedirect('mod.php')\">
OK
<br /><br />
<div align=\"left\">
<div class=\"countdown\" id=\"COOL_REDIRECT\">5</div>...ritorno automatico alla pagina principale.
</div>";

mysql_close($con);

?>
</body>
</html>
 
Ultima modifica di un moderatore:
ciao
se non ho capito male quando inserisci un immagine ti cancella tutti i record precedenti e poi non ti salva l'immagine, giusto?
prova per i record a mettere dei var_dump alle query per vedere se risultano cone vorresti
poi togli le @ (silent) per vedere se ti da errore a @imagecreatetruecolor e/o @imagecreatefromjpeg (la @ nasconde gli errori)
in ultimo prova ad usare imagecopyresized al posto di imagecopyresampled

PHP:
<?php
//..........
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
   $filename = $_FILES['filename']['name'];
   move_uploaded_file($_FILES['filename']['tmp_name'], "../imagesupused/$filename");
   $file = "../imagesupused/$filename";
    $save = "../imagesupused/$filename";
    list($width, $height) = getimagesize($file) ;
    $modwidth = 600;
    $modheight = round(($height / $width) * $modwidth);
    $tn = imagecreatetruecolor($modwidth, $modheight) ;
    $image = imagecreatefromjpeg($file) ;
    //imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
	imagecopyresized($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
    imagejpeg($tn, $save, 80);
    $query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	var_dump($query);
}else{
    $query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	var_dump($query);
}
mysql_query($query);
//..........
?>

dimenticavo con dei var_dump verifica anche la larghezza altezza a cui riduci le immagini ($modheight lo forzerei ad intero)
 
ho provato lo script che mi hai gentilmente modificato ma pur non dando nessun errore non funziona...
qualche altro suggerimento?

grazie


ciao
se non ho capito male quando inserisci un immagine ti cancella tutti i record precedenti e poi non ti salva l'immagine, giusto?
prova per i record a mettere dei var_dump alle query per vedere se risultano cone vorresti
poi togli le @ (silent) per vedere se ti da errore a @imagecreatetruecolor e/o @imagecreatefromjpeg (la @ nasconde gli errori)
in ultimo prova ad usare imagecopyresized al posto di imagecopyresampled

PHP:
<?php
//..........
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
   $filename = $_FILES['filename']['name'];
   move_uploaded_file($_FILES['filename']['tmp_name'], "../imagesupused/$filename");
   $file = "../imagesupused/$filename";
    $save = "../imagesupused/$filename";
    list($width, $height) = getimagesize($file) ;
    $modwidth = 600;
    $modheight = round(($height / $width) * $modwidth);
    $tn = imagecreatetruecolor($modwidth, $modheight) ;
    $image = imagecreatefromjpeg($file) ;
    //imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
	imagecopyresized($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
    imagejpeg($tn, $save, 80);
    $query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	var_dump($query);
}else{
    $query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	var_dump($query);
}
mysql_query($query);
//..........
?>

dimenticavo con dei var_dump verifica anche la larghezza altezza a cui riduci le immagini ($modheight lo forzerei ad intero)
 
ciao
dovresti essere più preciso.
i var dump cosa ti hanno restituito?

p.s.
lo script per la parte di riduzioni delle immagini è quello (almeno molto simile) che uso anche io

edit
domani provo comunque a darci un occhio meglio
 
Ultima modifica:
in un record con in cui erano già presenti 3 immagini e aggiungendone 1

string(139) "UPDATE dati SET categoria='VEICOLI USATI',titolo='prova',sottotitolo='prova',descrizione='prova',pubblicato='NO',priorita='' WHERE id = 282" Veicolo usato aggiornato.



ciao
dovresti essere più preciso.
i var dump cosa ti hanno restituito?

p.s.
lo script per la parte di riduzioni delle immagini è quello (almeno molto simile) che uso anche io

edit
domani provo comunque a darci un occhio meglio
 
ciao
quindi da quello che capisco nonostante dal form tu mette l'immagine questa no viene caricata, cioè ti fa l'else questo perce non vedo nel var_dump
la parte relativa a filename='$filename'
per prima cosa prova a modificare l'if da
PHP:
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
a
PHP:
if (trim($_FILES['filename']['tmp_name']) !="") {

poi una domanda
gli altri campi
filename2='$filename2',filename3='$filename3',filename4='$filename4'
sono immagini? e se si da dove saltano fuori?
 
il risultato è lo stesso anche con la tua modifica

string(139) "UPDATE dati SET categoria='VEICOLI USATI',titolo='prova',sottotitolo='prova',descrizione='prova',pubblicato='NO',priorita='' WHERE id = 282" Veicolo usato aggiornato.

filename2 ecc. sono i nomi delle immagini caricate nel db con un precedente form di inserimento
in pratica con un primo form carico il nuovo record con le immagini e scrivo nei campi filename il nome dell'immagine e questo funziona
poi con l'altro script modifico il record ma come oramai hai capito non funziona
c'è da dire che se cambio la prima immagine funziona ma cancella tulle le altre e questo anche se cambio la prima e la seconda mi cambia sempre e solo la prima


string(203) "UPDATE dati SET categoria='VEICOLI USATI',titolo='prova',sottotitolo='prova',descrizione='prova',filename='newsdafxf.jpg',filename2='',filename3='',filename4='',pubblicato='NO',priorita='' WHERE id = 282" Veicolo usato aggiornato.



ciao
quindi da quello che capisco nonostante dal form tu mette l'immagine questa no viene caricata, cioè ti fa l'else questo perce non vedo nel var_dump
la parte relativa a filename='$filename'
per prima cosa prova a modificare l'if da
PHP:
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
a
PHP:
if (trim($_FILES['filename']['tmp_name']) !="") {

poi una domanda
gli altri campi
filename2='$filename2',filename3='$filename3',filename4='$filename4'
sono immagini? e se si da dove saltano fuori?
 
ciao
prova cosi, ho messo varie verifiche per riuscire a capire dove si ingrippa, eventualmente posta cosa riportano.
provalo e fammi sapere (poi i vari var_dump li toglierai)
PHP:
<?php
$con = mysql_connect("localhost","xxx","xxx");
if (!$con){
	die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con);
foreach($_POST as $varname => $value){
$formVars[$varname]=$value;
}
if (trim($_FILES['filename']['tmp_name']) !="") {
	var_dump($_FILES['filename']['tmp_name']);echo " verifica nome temp<br>";//poi quando funzia tutte le righe con var_dump le togli
	var_dump($_FILES['filename']['name']);echo " ver nome file<br>";
	$filename = $_FILES['filename']['name'];
	if(file_exists("../imagesupused/$filename")){
		echo "il file esiste, cambiare nome";
	}else{
		if(move_uploaded_file($_FILES['filename']['tmp_name'], "../imagesupused/$filename")){
			$file = "../imagesupused/$filename";
    		$save = "../imagesupused/$filename";//questo a che ti serve se è uguale al precedente
    		list($width, $height) = getimagesize($file) ;
    		$modwidth = 600;
    		$modheight = (int)(($height / $width) * $modwidth);
			var_dump($modheight);echo " verifica altezza<br>";
    		$tn = imagecreatetruecolor($modwidth, $modheight);
			var_dump($tn);echo " verifica imagecreatetruecolor<br>";//verifica che non dia FALSE
    		$image = imagecreatefromjpeg($file);
			var_dump($image);echo " ver imagecreatefromjpeg<br>";//verifica che non dia FALSE
    		$verifica_1=imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
			var_dump($verifica_1);echo " ver imagecopyresampled<br>";//verifica che non dia FALSE
    		$verifica_2=imagejpeg($tn, $file, 80);//vedi prima
			var_dump($verifica_2);echo " ver imagejpeg<br>";//verifica che non dia FALSE
    		$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
			mysql_query($query);
		}else{
			echo "errore nel caricamento del file";
		}
	}
}else{
	$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	mysql_query($query);
}
echo "<script src=\"coolRedirect.js\" type=\"text/javascript\"></script><body onload=\"coolRedirect('mod.php')\">
OK
<br /><br />
<div align=\"left\">
<div class=\"countdown\" id=\"COOL_REDIRECT\">5</div>...ritorno automatico alla pagina principale.
</div>";
//mysql_close($con);
?>
 
mi da solo OK e nessun errore ma non funziona

ciao
prova cosi, ho messo varie verifiche per riuscire a capire dove si ingrippa, eventualmente posta cosa riportano.
provalo e fammi sapere (poi i vari var_dump li toglierai)
PHP:
<?php
$con = mysql_connect("localhost","xxx","xxx");
if (!$con){
	die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con);
foreach($_POST as $varname => $value){
$formVars[$varname]=$value;
}
if (trim($_FILES['filename']['tmp_name']) !="") {
	var_dump($_FILES['filename']['tmp_name']);echo " verifica nome temp<br>";//poi quando funzia tutte le righe con var_dump le togli
	var_dump($_FILES['filename']['name']);echo " ver nome file<br>";
	$filename = $_FILES['filename']['name'];
	if(file_exists("../imagesupused/$filename")){
		echo "il file esiste, cambiare nome";
	}else{
		if(move_uploaded_file($_FILES['filename']['tmp_name'], "../imagesupused/$filename")){
			$file = "../imagesupused/$filename";
    		$save = "../imagesupused/$filename";//questo a che ti serve se è uguale al precedente
    		list($width, $height) = getimagesize($file) ;
    		$modwidth = 600;
    		$modheight = (int)(($height / $width) * $modwidth);
			var_dump($modheight);echo " verifica altezza<br>";
    		$tn = imagecreatetruecolor($modwidth, $modheight);
			var_dump($tn);echo " verifica imagecreatetruecolor<br>";//verifica che non dia FALSE
    		$image = imagecreatefromjpeg($file);
			var_dump($image);echo " ver imagecreatefromjpeg<br>";//verifica che non dia FALSE
    		$verifica_1=imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
			var_dump($verifica_1);echo " ver imagecopyresampled<br>";//verifica che non dia FALSE
    		$verifica_2=imagejpeg($tn, $file, 80);//vedi prima
			var_dump($verifica_2);echo " ver imagejpeg<br>";//verifica che non dia FALSE
    		$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
			mysql_query($query);
		}else{
			echo "errore nel caricamento del file";
		}
	}
}else{
	$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
	mysql_query($query);
}
echo "<script src=\"coolRedirect.js\" type=\"text/javascript\"></script><body onload=\"coolRedirect('mod.php')\">
OK
<br /><br />
<div align=\"left\">
<div class=\"countdown\" id=\"COOL_REDIRECT\">5</div>...ritorno automatico alla pagina principale.
</div>";
//mysql_close($con);
?>
 
ciao
ho fatto la prova dello script (eliminando il db perche non ho le tue tabelle) e modificando solo i percorsi di dove caricare l'immagine e la grandezza di riduzione per mia comodità
lo script funziona, riduce e carica nella cartella (nel mio caso immagini) senza alcun problema
PHP:
<?php
if(isset($_POST['invia'])){
        if (trim($_FILES['filename']['tmp_name']) !="") {
            var_dump($_FILES['filename']['tmp_name']);echo " verifica nome temp<br>";//poi quando funzia tutte le righe con var_dump le togli
            var_dump($_FILES['filename']['name']);echo " ver nome file<br>";
            $filename = $_FILES['filename']['name'];
            if(file_exists("immagini/$filename")){
                echo "il file esiste, cambiare nome";
            }else{
                if(move_uploaded_file($_FILES['filename']['tmp_name'], "immagini/$filename")){
                    $file = "immagini/$filename";
                    $save = "immagini/$filename";//questo a che ti serve se è uguale al precedente
                    list($width, $height) = getimagesize($file) ;
                    $modwidth = 400;
                    $modheight = (int)(($height / $width) * $modwidth);
                    var_dump($modheight);echo " verifica altezza<br>";
                    $tn = imagecreatetruecolor($modwidth, $modheight);
                    var_dump($tn);echo " verifica imagecreatetruecolor<br>";//verifica che non dia FALSE
                    $image = imagecreatefromjpeg($file);
                    var_dump($image);echo " ver imagecreatefromjpeg<br>";//verifica che non dia FALSE
                    $verifica_1=imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
                    var_dump($verifica_1);echo " ver imagecopyresampled<br>";//verifica che non dia FALSE
                    $verifica_2=imagejpeg($tn, $file, 80);//vedi prima
                    var_dump($verifica_2);echo " ver imagejpeg<br>";//verifica che non dia FALSE
                }else{
                    echo "errore nel caricamento del file";
                }
            }
        }else{
            echo "sono senza file<br>";
        }
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
  <input  type="file" name="filename"><br>
  <input name="invia" type="submit" id="invia" value="invia">
</form>
provolo a parte.
due dubbi:
verifica il percorso dove carichi le immagini
le librerie GD sono attive?
 
ciao
prova lo script e prima di adattarlo al db guarda se funziona (non l'ho testato).
ti ho messo un paio di commenti per poi (se funzia) di come collegarlo al db snza dover fare qull'ambaradan di due query
PHP:
<?php
//visto che devi usare diverse volte le stesse cose ti conviene fare delle funzioni
function esiste($cart,$nome_file){
	if(file_exists($cart.$nome_file)){
		return FALSE;
	}else{
		return TRUE;
	}
}// fine function esiste
function move_up($cart,$nome_temp, $nome_file){
	if(move_uploaded_file($nome_temp,$cart.$nome_file)){
		return TRUE;
	}else{
		return FALSE;
	}
}//fine function move_up
function riduci_carica($cart, $nome_file){
	list($width, $height) = getimagesize($cart.$nome_file) ;
	$modwidth = 600;
	$modheight = (int)(($height / $width) * $modwidth);
	$tn = imagecreatetruecolor($modwidth, $modheight);
	$image = imagecreatefromjpeg($cart.$nome_file);
	imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
	imagejpeg($tn, $cart.$nome_file, 80);
}//fine function riduci_ricarica
//*************************************************
if(isset($_POST['invia'])){
		//qui metterai il foreach dei $_POST
		//qui definisci la cartella
		$cartella="../imagesupused/";
		//questa sotto per scrivere la query una sola volta se dai lo stesso nome ai campi di input FILE = ai nomi campi tabella delle immagini
		//indipendentemente se carichi o meno le immagini
		$aggiungi_immagini="";
        foreach($_FILES as $chiave => $valore){
			if(esiste($cartella,$valore['name'])){//se vuoi sovrascrivere togli questa riga e tutte quelle indicate con **1**
				if(move_up($cartella,$valore['tmp_name'], $valore['name'])){
					riduci_carica($cartella, $valore['name']);
					$aggiungi_immagini .= " ".$chiave."='".$valore['name']."', ";//crea se esistono i valori immagini da uppare
				}else{
					echo "errore nel caricare ".$valore['name']."<br>";
				}
			}else{// **1**
				echo "il file ".$valore['name']." esiste, cambiare nome<br>";// **1**
				//e qui eventualmente deciderai cosa fare se esiste
			}// **1**
		}
		//esempio della query, poi dovi mettere a posto gi altri campi
		//$query="UPDATE dati SET categoria='".$formVars['categoria']."',..,descrizione='".$formVars['descrizione']."',".$aggiungi_immagini.",pubblicato='".$formVars['pubblicato']."'....";
		//mysql_query($query);
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
  <input  type="file" name="filename"><br>
  <input  type="file" name="filename2"><br>
  <input  type="file" name="filename3"><br>
  <input  type="file" name="filename4"><br>
  <input name="invia" type="submit" id="invia" value="invia">
</form>

p.s.
verifica che non mi sia dimenticato qualche ; o simile
 
grazie mille
scusa la mia ignoranza ma non saprei da dove cominciare per completarlo...
ho visto i commenti ma...



ciao
prova lo script e prima di adattarlo al db guarda se funziona (non l'ho testato).
ti ho messo un paio di commenti per poi (se funzia) di come collegarlo al db snza dover fare qull'ambaradan di due query
PHP:
<?php
//visto che devi usare diverse volte le stesse cose ti conviene fare delle funzioni
function esiste($cart,$nome_file){
	if(file_exists($cart.$nome_file)){
		return FALSE;
	}else{
		return TRUE;
	}
}// fine function esiste
function move_up($cart,$nome_temp, $nome_file){
	if(move_uploaded_file($nome_temp,$cart.$nome_file)){
		return TRUE;
	}else{
		return FALSE;
	}
}//fine function move_up
function riduci_carica($cart, $nome_file){
	list($width, $height) = getimagesize($cart.$nome_file) ;
	$modwidth = 600;
	$modheight = (int)(($height / $width) * $modwidth);
	$tn = imagecreatetruecolor($modwidth, $modheight);
	$image = imagecreatefromjpeg($cart.$nome_file);
	imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
	imagejpeg($tn, $cart.$nome_file, 80);
}//fine function riduci_ricarica
//*************************************************
if(isset($_POST['invia'])){
		//qui metterai il foreach dei $_POST
		//qui definisci la cartella
		$cartella="../imagesupused/";
		//questa sotto per scrivere la query una sola volta se dai lo stesso nome ai campi di input FILE = ai nomi campi tabella delle immagini
		//indipendentemente se carichi o meno le immagini
		$aggiungi_immagini="";
        foreach($_FILES as $chiave => $valore){
			if(esiste($cartella,$valore['name'])){//se vuoi sovrascrivere togli questa riga e tutte quelle indicate con **1**
				if(move_up($cartella,$valore['tmp_name'], $valore['name'])){
					riduci_carica($cartella, $valore['name']);
					$aggiungi_immagini .= " ".$chiave."='".$valore['name']."', ";//crea se esistono i valori immagini da uppare
				}else{
					echo "errore nel caricare ".$valore['name']."<br>";
				}
			}else{// **1**
				echo "il file ".$valore['name']." esiste, cambiare nome<br>";// **1**
				//e qui eventualmente deciderai cosa fare se esiste
			}// **1**
		}
		//esempio della query, poi dovi mettere a posto gi altri campi
		//$query="UPDATE dati SET categoria='".$formVars['categoria']."',..,descrizione='".$formVars['descrizione']."',".$aggiungi_immagini.",pubblicato='".$formVars['pubblicato']."'....";
		//mysql_query($query);
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
  <input  type="file" name="filename"><br>
  <input  type="file" name="filename2"><br>
  <input  type="file" name="filename3"><br>
  <input  type="file" name="filename4"><br>
  <input name="invia" type="submit" id="invia" value="invia">
</form>

p.s.
verifica che non mi sia dimenticato qualche ; o simile
 
ciao
prima dovresti provarlo e dirmi se riduce e carica le immagini
poi dovresti dirmi se vuoi sovrascivere l'immahine e cosa fare se ci sono errori nel caricamento
poi domani (se funzia) lo completiamo
 
allora
le immagini le carica e le riduce (tutto bene)

direi che sovrascrivere le immagini va benissimo

però volevo chiederti se è il caso di tenere questo unico file per le modifiche o se fare il passaggio che faccio adesso in cui prima si vedono i campi da modificare e poi col secondo script si passano le modifiche

quindi la situazione attuale è che mod1.php visualizza i campi popolati e ha anche gli input per modificare poi li passa a mod2.php che fa il resto
per me è indifferente 1 o 2 passaggi


grazie




ciao
prima dovresti provarlo e dirmi se riduce e carica le immagini
poi dovresti dirmi se vuoi sovrascivere l'immahine e cosa fare se ci sono errori nel caricamento
poi domani (se funzia) lo completiamo
 
ciao
intanto ok, poi io farei come stai facendo, cioè vedi come è e poi modifichi, tra l'altro tornando alla pagina vedi le modifiche fatte
 
ho provato a completare il tuo script ma non mi scrive nel db...
<?php

include 'header2.html';

foreach($_POST as $varname => $value)
$formVars[$varname]=$value;

$con = mysql_connect("localhost","XXX","XXX"); //Replace with your actual MySQL DB Username and Password
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("XXX", $con); //Replace with your MySQL DB Name



//visto che devi usare diverse volte le stesse cose ti conviene fare delle funzioni
function esiste($cart,$nome_file){
if(file_exists($cart.$nome_file)){
return FALSE;
}else{
return TRUE;
}
}// fine function esiste
function move_up($cart,$nome_temp, $nome_file){
if(move_uploaded_file($nome_temp,$cart.$nome_file)){
return TRUE;
}else{
return FALSE;
}
}//fine function move_up
function riduci_carica($cart, $nome_file){
list($width, $height) = getimagesize($cart.$nome_file) ;
$modwidth = 600;
$modheight = (int)(($height / $width) * $modwidth);
$tn = imagecreatetruecolor($modwidth, $modheight);
$image = imagecreatefromjpeg($cart.$nome_file);
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
imagejpeg($tn, $cart.$nome_file, 80);
}//fine function riduci_ricarica
//*************************************************
if(isset($_POST['invia'])){
//qui metterai il foreach dei $_POST
foreach($_POST as $varname => $value)
$formVars[$varname]=$value;

//qui definisci la cartella
$cartella="../imagesupused/";
//questa sotto per scrivere la query una sola volta se dai lo stesso nome ai campi di input FILE = ai nomi campi tabella delle immagini
//indipendentemente se carichi o meno le immagini
$aggiungi_immagini="";
foreach($_FILES as $chiave => $valore){
if(esiste($cartella,$valore['name'])){//se vuoi sovrascrivere togli questa riga e tutte quelle indicate con **1**
if(move_up($cartella,$valore['tmp_name'], $valore['name'])){
riduci_carica($cartella, $valore['name']);
$aggiungi_immagini .= " ".$chiave."='".$valore['name']."', ";//crea se esistono i valori immagini da uppare
}else{
echo "errore nel caricare ".$valore['name']."<br>";
}
}else{// **1**
echo "il file ".$valore['name']." esiste, cambiare nome<br>";// **1**
//e qui eventualmente deciderai cosa fare se esiste
}// **1**
}
//esempio della query, poi dovi mettere a posto gi altri campi
$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
//mysql_query($query);
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="file" name="filename2"><br>
<input type="file" name="filename3"><br>
<input type="file" name="filename4"><br>
<input name="invia" type="submit" id="invia" value="invia">
</form>

</body>
</html>

ciao
intanto ok, poi io farei come stai facendo, cioè vedi come è e poi modifichi, tra l'altro tornando alla pagina vedi le modifiche fatte
 
ciao
questa è la pagina corrispondente allo script del tuo primo post
provala perche posso aver fatto qualche erroretto/errorone
PHP:
<?php
//visto che devi usare diverse volte le stesse cose ti conviene fare delle funzioni
function esiste($cart,$nome_file){
    if(file_exists($cart.$nome_file)){
        return FALSE;
    }else{
        return TRUE;
    }
}// fine function esiste
function move_up($cart,$nome_temp, $nome_file){
    if(move_uploaded_file($nome_temp,$cart.$nome_file)){
        return TRUE;
    }else{
        return FALSE;
    }
}//fine function move_up
function riduci_carica($cart, $nome_file){
    list($width, $height) = getimagesize($cart.$nome_file) ;
    $modwidth = 600;
    $modheight = (int)(($height / $width) * $modwidth);
    $tn = imagecreatetruecolor($modwidth, $modheight);
    $image = imagecreatefromjpeg($cart.$nome_file);
    imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
    imagejpeg($tn, $cart.$nome_file, 80);
}//fine function riduci_ricarica
//*************************************************
$con = mysql_connect("localhost","xxx","xxx");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con);
include 'header2.html';

foreach($_POST as $varname => $value){
	$formVars[$varname]=$value;
}
//qui definisci la cartella
$cartella="../imagesupused/";
//questa sotto per scrivere la query una sola volta se dai lo stesso nome ai campi di input FILE = ai nomi campi tabella delle immagini
//indipendentemente se carichi o meno le immagini
$aggiungi_immagini="";//rimane vuota se non carichi le immagini
foreach($_FILES as $chiave => $valore){
	if(move_up($cartella,$valore['tmp_name'], $valore['name'])){
		riduci_carica($cartella, $valore['name']);
		$aggiungi_immagini .= " ".$chiave."='".$valore['name']."', ";//crea se esistono i valori immagini da uppare
		//in pratica diventa, se ci sono immagini, filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',
		//in funzione se carichi la prima, la seconda ....
	}else{
		 echo "errore nel caricare ".$valore['name']."<br>";
	}
}
//la query si modifica in funzione delle immagini che carichi
//la variabile $aggiungi_immagini rimane vuota se non aggiungi immagini
$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',".$aggiungi_immagini." pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
mysql_query($query);
		
echo "<script src=\"coolRedirect.js\" type=\"text/javascript\"></script><body onload=\"coolRedirect('mod.php')\">
OK
<br /><br />
<div align=\"left\">
<div class=\"countdown\" id=\"COOL_REDIRECT\">5</div>...ritorno automatico alla pagina principale.
</div>";
?>
sappimi dire
eventualmente posta gli errori
 
questo lo uso come mod2.php?
scusa ma se gli passo i dati da mod1.php mi rimanda a una pagina con la scelta delle immagini da caricare...
non capisco
e poi da quella pagina comunque non carica le immagini
vuoi provare tu così capisci cosa intendo?





ciao
questa è la pagina corrispondente allo script del tuo primo post
provala perche posso aver fatto qualche erroretto/errorone
PHP:
<?php
//visto che devi usare diverse volte le stesse cose ti conviene fare delle funzioni
function esiste($cart,$nome_file){
    if(file_exists($cart.$nome_file)){
        return FALSE;
    }else{
        return TRUE;
    }
}// fine function esiste
function move_up($cart,$nome_temp, $nome_file){
    if(move_uploaded_file($nome_temp,$cart.$nome_file)){
        return TRUE;
    }else{
        return FALSE;
    }
}//fine function move_up
function riduci_carica($cart, $nome_file){
    list($width, $height) = getimagesize($cart.$nome_file) ;
    $modwidth = 600;
    $modheight = (int)(($height / $width) * $modwidth);
    $tn = imagecreatetruecolor($modwidth, $modheight);
    $image = imagecreatefromjpeg($cart.$nome_file);
    imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
    imagejpeg($tn, $cart.$nome_file, 80);
}//fine function riduci_ricarica
//*************************************************
$con = mysql_connect("localhost","xxx","xxx");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con);
include 'header2.html';

foreach($_POST as $varname => $value){
	$formVars[$varname]=$value;
}
//qui definisci la cartella
$cartella="../imagesupused/";
//questa sotto per scrivere la query una sola volta se dai lo stesso nome ai campi di input FILE = ai nomi campi tabella delle immagini
//indipendentemente se carichi o meno le immagini
$aggiungi_immagini="";//rimane vuota se non carichi le immagini
foreach($_FILES as $chiave => $valore){
	if(move_up($cartella,$valore['tmp_name'], $valore['name'])){
		riduci_carica($cartella, $valore['name']);
		$aggiungi_immagini .= " ".$chiave."='".$valore['name']."', ";//crea se esistono i valori immagini da uppare
		//in pratica diventa, se ci sono immagini, filename='$filename',filename2='$filename2',filename3='$filename3',filename4='$filename4',
		//in funzione se carichi la prima, la seconda ....
	}else{
		 echo "errore nel caricare ".$valore['name']."<br>";
	}
}
//la query si modifica in funzione delle immagini che carichi
//la variabile $aggiungi_immagini rimane vuota se non aggiungi immagini
$query="UPDATE dati SET categoria='".$formVars['categoria']."',titolo='".$formVars['titolo']."',sottotitolo='".$formVars['sottotitolo']."',descrizione='".$formVars['descrizione']."',".$aggiungi_immagini." pubblicato='".$formVars['pubblicato']."',priorita='".$formVars['priorita']."' WHERE id = ".$formVars['id']."";
mysql_query($query);
		
echo "<script src=\"coolRedirect.js\" type=\"text/javascript\"></script><body onload=\"coolRedirect('mod.php')\">
OK
<br /><br />
<div align=\"left\">
<div class=\"countdown\" id=\"COOL_REDIRECT\">5</div>...ritorno automatico alla pagina principale.
</div>";
?>
sappimi dire
eventualmente posta gli errori
 
ciao
se non ricordo male (eventualmente posta il link che mi avemi mandato per mp)
si vede una pagina con i vari record da modificare e per ogni record quali immagini ci sono
cliccando su modifica si apre una pagina col form dove tra l'altro ci sono 4 input file e altri campi di input
giusto sin qui?
ora il form a cosa punta (action = ???) a se stesso o a altra pagina?
se punta a se stesso quella parte deve andare sulla stessa pag del form, altrimenti devi dargli il nome a cui il form punta.
per fare le prove rinomina il tuo vecchio file (o salvalo da qualche altra parte) per non perderlo e quello che ti ho mandato gli dai il nome del vecchio
 

Discussioni simili