mancato upload

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao borgo, ho corretto così ma non funziona ugualmente
<?php
header('Cache-Control: no-cache');
header('Pragma: no-cache');
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';
$connessione = mysql_connect("localhost", "admin_ec_beaty", "dbpassword") or die("Impossibile connettersi al server host");
mysql_select_db(beauyit1_ec, $connessione) or die ("Impossibile selezionare il database.");

$dialogo="risposta=".$dialogo;

$sql=mysql_query("SELECT immagine from prodotti");
while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}
$memoria=$n;
$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;
echo"$foto<br>";
$percorso="http://www.nomesito.it/prodotti/";
$percorso_temp=$_FILE["nome_file"]["tmp_name"];
$nome_file=$FILES["nome_file"]["name"];
rename($nome_file,$foto);
if(copy($percorso_temp,$percorso.$nome_file)){
echo"File inviato:$nomefile";
}else{
echo"errore";
}
mysql_close($connessione);
?>
 
Ultima modifica:

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
mi da questo errore nela rinomina oltre a non effettuare l'upload

Warning: rename(,4.jpg) [function.rename]: Permission denied in D:\inetpub\vhosts\beautyluxury.it\httpdocs\e.commerce\php\upload.php on line 28
errore
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Questo invece mi fa l'upload ma quando inserisco una seconda immagine mi elimina la prima e mi scrive la seconda e non riesco a capire dove è dichiarato il fatto che mi riscriva sempre e solo uan foto sola :( però almeno fa l'upload :(



<?php
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';
$connessione = mysql_connect("localhost", "admin_ec_beaty", "dbpassword") or die("Impossibile connettersi al server host");
mysql_select_db(beauyit1_ec, $connessione) or die ("Impossibile selezionare il database.");

$dialogo="risposta=".$dialogo;

$sql=mysql_query("SELECT immagine from prodotti");
while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}
$memoria=$n;
$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;

echo"$foto<br>";
$percorso= './';
$uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );
$success = move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
$nomefileimmagine=$storage.$foto;
if($success){
if (file_exists($nomefileimmagine)){
unlink($nomefileimmagine);
}
$nuovofile=''.$percorso.$_FILES['Filedata']['name'];
rename($nuovofile,$nomefileimmagine);
echo($nomefileimmagine);
}

mysql_close($connessione);
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ragazzi credo di aver capito qual'è il problema l'ultimo script che ho postato mi fa fare l'upload ma quando inserisco la seconda immagine mi rinomina la prima con il nome della seconda esempio:
se faccio l'upload di 1.jpg e poi carico 2.jpg mi carica 2.jpg al posto di 1.jpg ovvero mi rinomina non solo la foto presa dall'hd ma anche quella che c'è nella cartella e non so in quale punto dello script è stato dichiarato questo e quale metodo deve essere eliminato :(

<?php
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';
$connessione = mysql_connect("localhost", "admin_ec_beaty", "dbpassword") or die("Impossibile connettersi al server host");
mysql_select_db(beauyit1_ec, $connessione) or die ("Impossibile selezionare il database.");

$dialogo="risposta=".$dialogo;

$sql=mysql_query("SELECT immagine from prodotti");
while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}
$memoria=$n;
$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;

echo"$foto<br>";
$percorso= './';
$uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );
$success = move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
$nomefileimmagine=$storage.$foto;
if($success){
if (file_exists($nomefileimmagine)){
unlink($nomefileimmagine);
}
$nuovofile=''.$percorso.$_FILES['Filedata']['name'];
rename($nuovofile,$nomefileimmagine);
echo($nomefileimmagine);
}

mysql_close($connessione);
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao borgo,si infatti l'ho rinominato in percorso ma non è quello il problema mi rinomina la foto e la sostituisce :(

<?php
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';
$connessione = mysql_connect("localhost", "admin_ec_beaty", "dbpassword") or die("Impossibile connettersi al server host");
mysql_select_db(beauyit1_ec, $connessione) or die ("Impossibile selezionare il database.");

$dialogo="risposta=".$dialogo;

$sql=mysql_query("SELECT immagine from prodotti");
while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}
$memoria=$n;
$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;

echo"$foto<br>";
$percorso= './';
$uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );
$success = move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
$nomefileimmagine=$percorso.$foto;
if($success){
if (file_exists($nomefileimmagine)){
unlink($nomefileimmagine);
}
$nuovofile=''.$percorso.$_FILES['Filedata']['name'];
rename($nuovofile,$nomefileimmagine);
echo($nomefileimmagine);
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, anche se è vero che "gallina vecchia fa buon brodo"quasto non è il caso degli script.
arriavato a quasto punto, secondo me, conviene azzerare, prendere matita e carta e ripensare il tutto.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Per una volta sono d'accordo con quel vecchio bavoso... ehm, con borgo italia :D
A parte gli scherzi, ormai hai le idee troppo confuse ed iniziano ad esserci troppi script "volanti" che non funzionano. Sai che cosa faccio io in questi casi? Cancello tutto quello che ho scritto e ricomincio da capo. Funziona sempre, garantito!
Come altro consiglio ti posso dire di scrivere codice più ordinato, mi si incrociano gli occhi a leggere quello che scrivi. L'ordine aiuta ad evitare molti errori.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
ok ecco qua ragazzi ho riscritto tutto.
Tenterò di essere il più chiaro possibile e di farvi capire cosa devo fare e cosa non funziona nel sistema che ho creato.
Praticamente sto creando un upload di immagini prodotto che devono essere prelevate opportunamente e per farlo ho bisogno di associare loro un nome predefinito.
Dato che non so di preciso quanti prodotti saranno ho deciso di assegnare loro un numero crescente ad ogni upload.
Esempio: 0.jpg, 1.jpg, 2.jpg etc etc.
Per fare questo ho creato uno script che si occupa di scrivere il numero nel recordeset del db e quello funziona benissimo, però poi per poter inserire in una cartella del mio web server le immagini con l'esatto nome assegnatoli ovvero il numero esatto ho creato lo script che ho riportato sotto.
Tale script si occupa per prima cosa di intercettare il numero con una query di select, di seguito creo un ciclo whyle dove creo una variabile chiamata $n e la inserisco in un array chiamato memoria che contiene l'id autoincrement del database poi conto il contenuto dell'array con il metodo count.
A questo punto ho creato un array sensibile all'incremnto e al decremento di un immagine, quindi con il primo script scrivo 1.jpg e dopo con il secondo prendo il numero 1 creo la tipologia concatenando la variabile $foto e la variabile $tipologia e passo il nome esatto all'upload.
Il problema è che l'upload ogni tanto fa scherzi e delle volte sovrascrive per esempio la foto chiamata 1.jpg e la rinomina in 4.jpg
e non ho capito proprio perchè e sto diventando pazzo. :(

<?php

////////////////// PARAMETRI DB //////////////////

$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';

/////////////////// CONNESSIONE DB ////////////

$connessione = mysql_connect("localhost", "admin_ec_beaty", "dbpassword") or die("Impossibile connettersi al server host");
mysql_select_db(beauyit1_ec, $connessione) or die ("Impossibile selezionare il database.");

////////////////////////// QUERY SELECT ////////////////

$sql=mysql_query("SELECT immagine from prodotti");

////////////////////////////////////////////////////////////

//////////////////// CICLO WHYLE //////////////////////

// il ciclo whyle mi serve per prelevare un numero all'interno del recordeset del db tale numero è ricavato dall'id autoincrement del db e l'ho raggruppato in un array chiamato $memoria che mi servirà
per evidenziare il tracciato del nome di ogni singola immagini con un numero crescente ovvero: 0.jpg , 1.jpg, 2.jpg etc etc.... ///////

while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}

/////////////////////////////////////////////////////////////////

///// VARIABILE N + ARRAY MEMORIA + TIPOLOGIA "JPG" + CONCATENAMENTO

// queste variabili mi servono per creare il nome della foto da passare all'upload///

$memoria=$n;
$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;

//////////////////////////////// UPLOAD ///////////////////////

/// mia analisi dello script preso dalla rete + mie perplessità: ///

$percorso= './'; // indica il percorso dove immettere la foto

$uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] ); // concatenamento di percorso più memorizzazione dell' immagine presa dall'hd///

$sposto=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile ); // metodo move_uploaded_file per spostare la foto nella cartella //

$nomefileimmagine=$percorso.$foto; //contenitore che raggruppa percorso più foto//

if($sposto){ // perprlessità perchè questa if ?

if (file_exists($nomefileimmagine)){ // questo verifica se l'immagine esiste già //

unlink($nomefileimmagine); // metodo unlink a cosa serve? //

}

$nuovofile=''.$percorso.$_FILES['Filedata']['name']; // Perchè questa variabile ? è lei la disgraziata che rinomina la foto esistente con l'ultimo upload effettuato?//

rename($nuovofile,$nomefileimmagine); // metodo rename per rinominare//

echo($nomefileimmagine); // echo verifica //

}

/////////////////// CONNESSIONE ELIMINATA

mysql_close($connessione);
?>

HELP ME PLEASE :(
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti rinvio lo script con alcune note (sperando che alessandro sia d'accordo con me)

PHP:
<?php 
////////////////// PARAMETRI DB ////////////////// 
//TOLTA PERCHE VA BENE E PORTA VIA SPAZIO
//////////////////// CICLO WHYLE //////////////////////
 
/*il ciclo whyle mi serve per prelevare un numero all'interno del recordeset del db tale numero è ricavato dall'id autoincrement del db e l'ho raggruppato in un array chiamato $memoria che mi servirà 
per evidenziare il tracciato del nome di ogni singola immagini con un numero crescente ovvero: 0.jpg , 1.jpg, 2.jpg  etc etc.... ///////
QUESTO SUCCEDE (PER CASO), COL METODO CHE USI, SOLO SE GLI id SONO CONSECUTIVI 1, 2, 3, ECC...
SE ELIMINI UNA FOTO (ES. QUELLA CON id==2) E VAI AD INSERIRE UNA NUOVA FOTO, IL SUO id DIVENTA 4, PER CUI NELLA tabella
NON AVRAI id CONSECUTIVI MA 1, 3, 4 ECC... RIBADISCO QUELLO CHE FAI, ALLA FIN FINE, E' SOLO CONTARE IL NUMERO DEI RECORD
PER CUI NON OTTERAI 4.jpg MA 3.jpg
AL CONTRARIO SE VUOI CHE LA FOTO ABBIA UN NOME SUCCESSIVO DEVI
FARE UNA SELECT CHE TI ESTRAE IL MAX(id) E NOMINI LA LA NUOVA FOTO CON
$id_successivo=$massimo_id_nella_tabella + 1;
$foto=$id_successivo.".jpg";
*/
while ($mn=mysql_fetch_array($sql)){
 $n[]=$memoria['id_prodotto'];
 }
/////////////////////////////////////////////////////////////////
/////  VARIABILE N + ARRAY MEMORIA + TIPOLOGIA "JPG" + CONCATENAMENTO 
// queste variabili mi servono per creare il nome della foto da passare all'upload///
//CONTINUO A NON CAPIRE PERCHE TU NON FACCIO IL SEMPLICE mysql_num_rows SECONDO ME, PROVA
//$quanti=mysql_num_rows($sql);//riga che conta i record
 $memoria=$n;
 $memoria=count($memoria);// guarda http://www.php.net/manual/en/function.count.php
 $tipologia=".jpg"; 
 $foto=$memoria.$tipologia; //?? E' QUESTO IL NOME CON CUI L'IMMAGINE SARA' ARCHIVIATA??
/* E QUESTO
if($memoria==$quanti){
echo "vedi che i due numeri sono gli stessi?";
}else{
echo "HAI RAGIONE TU, sono diversi";
}
*/
//////////////////////////////// UPLOAD /////////////////////// 
/// mia analisi dello script preso dalla rete + mie perplessità: ///
$percorso= '../';    // indica il percorso dove immettere la foto IO METTEREI UN PUNTO IN PIU' NON SI SA MAI
// A CHE TI SERVE IL CONCATENAMENTO ''.  NELLA RIGA SOTTO ??
$uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );  // concatenamento di percorso più memorizzazione dell' immagine presa dall'hd///
$sposto=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );   // metodo move_uploaded_file per spostare la foto nella cartella //
$nomefileimmagine=$storage.$foto;  //contenitore che raggruppa percorso più foto//NON DOVEVAESSERE $percorso?
if($sposto){  // perprlessità perchè questa if ? VERIFICA L'AVVENUTO move (TRUE o FALSE)
if (file_exists($nomefileimmagine)){  // questo verifica se l'immagine esiste già //
unlink($nomefileimmagine); // metodo unlink a cosa serve? // CANCELLA L'IMMAGINE CON NOME $nomefileimmagine SE ESISTE DI GIA
}//fine if file_exists
//IO METTEREI basename ANCHE QUI
$nuovofile=''.$percorso.basename($_FILES['Filedata']['name']); // Perchè questa variabile ? è lei la disgraziata che rinomina la foto esistente con l'ultimo upload effettuato?//
rename($nuovofile,$nomefileimmagine);  // metodo rename per rinominare//
echo($nomefileimmagine);  // echo verifica //
}//fine if $sposto
/////////////////// CONNESSIONE ELIMINATA, puoi anche non scriverlo, si chiude autonomamente alla chiusura della pagina
  mysql_close($connessione);
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao borgo, grazie della risposta.
Unica cosa che non ho capito è perchè credi che il numero della foto possa via via essere differente in base all'id? se facessi il confronto del numero in base all'id autoincrement si perchè se ne tolgo una poi dice esempio ci sono 3 foto ne tolgo una e ne metto un altra dice 4 e ne ho 3 ma io ho messo l'id in un array e ho contato l'array e il numero lo do in base al numero di valori che ci sono nell'array e non in base all'id quindi se l'array contiene 4 valori mi chiama l'ultima foto 4 se la tolgo l'array dichiara 3 valori e poi immettendola ancora mi parte sempre da 4 perchè ho immesso comunque un quarto valore nell'array così facendo ottengo un array dall'id autoincrement sensibile appunto all'incremento e decremento grazie al metodo count

infatti faccio il vuole e muto $n in memoria che ha i numeri id ma è poi un array poi conto memoria e mando all'upload il numero del conteggio di memoria e non l'id del db.

Quindi dovrebbe funzionare tutto bene ora che l'ho riscritto?
non ci trovi nessuna anomalia? :(

/////////////////////////////////////////

while ($mn=mysql_fetch_array($sql)){
$n[]=$memoria['id_prodotto'];
}

/////////////////////////////////////////////////////////////////

///// VARIABILE N + ARRAY MEMORIA + TIPOLOGIA "JPG" + CONCATENAMENTO

// queste variabili mi servono per creare il nome della foto da passare all'upload///

$memoria=$n;
$memoria=count($memoria);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai letto il link sul manuale di php?

$memoria=$n;
in memoria ora hai l'array

$memoria=count($memoria);
ora in memoria hai il numero degli array indipendentemente dal contenuto di ogni singolo $n[]
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
dimenticavo
a prima vista non ci sono anomalie

comunque prova a decommentare (poi le togli) le righe

$quanti=mysql_num_rows($sql);//riga che conta i record

e

if($memoria==$quanti){
echo "vedi che i due numeri sono gli stessi?";
}else{
echo "HAI RAGIONE TU, sono diversi";
}

e guarda cosa ti restituisce
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Sinceramente ho qualche perplessità, ad esempio perché definisci i parametri di connessione al database se poi con mysql_connect usi gli stessi ma come stringhe e non variabili.

Poi non capisco come faccia a funzionare se nella connessione al database non definisci il nome del database che devi selezionare tra apici singoli o doppi, quindi trattandolo come una costante.

Ti vorrei far anche notare che nei commenti del ciclo while non hai messo le due slash all'inizio della seconda riga, quindi l'interprete PHP ti dovrebbe restituire un errore. Non è forse così?

Sempre nel ciclo while definisci come array che ogni volta dovrà contenere la riga del database $mn, ma quando si tratta di assegnare il valore ad $n ti riferisci a $memoria.

Ancora una volta nel ciclo while, quando selezioni i dati dal database specifichi che deve essere selezionato solamente il campo immagine, quindi nell'array non sarà contenuto il valore id_prodotto.

La mia versione, non testata:
PHP:
<?php
/* PARAMETRI DEL DATABASE */
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';

/* CONNESSIONE AL DATABASE */
$connessione = mysql_connect($dbhost, $dbuser, $dbpass) or die('Impossibile connettersi al server host');
mysql_select_db($dbname, $connessione) or die ('Impossibile selezionare il database.');

/* QUERY DI SELEZIONE */
$sql = mysql_query("SELECT immagine from prodotti");

/* CICLO WHILE */
$n = array();
while($mn = mysql_fetch_array($sql))
	$n[] = $memoria['id_prodotto'];

/* CONCATENAMENTO E DEFINIZIONE TIPOLOGIA */
$tipologia = '.jpg';
$foto = count($n) . $tipologia;

/* UPLOAD DELL'IMMAGINE NELLA CARTELLA */
$percorso= './';
$uploadfile = $percorso . basename($_FILES['Filedata']['name']);
$nomefileimmagine = $percorso . $foto;

if(move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile))
{
	if(file_exists($nomefileimmagine))
		unlink($nomefileimmagine);

	/* RINOMINA DEL FILE DI IMMAGINE */
	$nuovofile = $percorso . $_FILES['Filedata']['name'];
	rename($nuovofile, $nomefileimmagine);
	echo($nomefileimmagine);
}

/* CHIUSURA CONNESSIONE */
mysql_close($connessione);
?>
Per borgo italia: la funzione unlink cancella un file.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
V Mancato riconoscimento HD esterno USB Hardware 0
leagvc Mancato accesso a ripristino configurazione Sicurezza e Virus 2
leagvc Mancato avvio installazione su XP Windows e Software 1
M Mancato aggiornamento BIOS Hardware 1
M Upload immagine con javascript problemi con FormData() Javascript 1
Z Upload protetto e sicuro PHP 1
L Modifica file upload in ASP Classic ASP 2
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
Cosina Upload multiplo con invio allegati per email PHP 0
Cosina Upload multiplo con archiviazione in cartella PHP 16
P Script upload immagini jQuery 0
L upload image tramite url e cache PHP 10
W Non fa l'upload PHP 0
L Upload di un'immagine all'interno di un database usando php PHP 6
S Upload file senza doverlo selezionare PHP 2
P Upload foto cover e profilo jQuery 0
G Upload file error Apache 0
R Modifica codice per l'upload di più file PHP 1
S Problemi con modulo upload video php (help!) PHP 0
S [PHP] Upload stesso file PHP 14
max1974 [Javascript] dropzone upload to server Javascript 0
S [ASP.Net] [ASP] Upload Image ASP.NET 6
F [PHP] Informazioni upload PHP 11
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
M [ASP] Upload file da form controllo Classic ASP 5
D [PHP] Upload intera cartella PHP 2
felino [PHP] Uploadify: upload immagini PHP 0
M [PHP] Nome file, upload e rinominare PHP 2
R Configurazione upload ftp su dvr IP Cam e Videosorveglianza 3
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
L [PHP] upload con errore PHP 2
V [PHP] Upload Excel in db PHP 0
jailbait [PHP] Upload immagine e stampa a schermo PHP 0
G PHP upload dati ed immagine PHP 7
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
D [PHP] Upload encrypt image PHP 0
C [PHP] Problema upload file (multiplo) PHP 1
P [PHP] Upload multiplo PHP 4
N [PHP] Problema upload immagini wordpress PHP 2
S [PHP] Upload file... PHP 6
michelangelopaone IPCAM Szinocam e upload FTP IP Cam e Videosorveglianza 0
razzor1994 Remote Upload Server Dedicati e VPS 0
P Barra upload file jQuery 1
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
MarcoGrazia [PHP] Upload e successiva visualizzazione immagini in DB PHP 3

Discussioni simili