mancato upload

  • Creatore Discussione Creatore Discussione helpdesk
  • Data di inizio Data di inizio
ciao alessandro.
Allora per prima cosa grazie per la risposta.
I commenti della riga del ciclo while avrebbero dato problemi o ne darebbero se usassi lo script con i commenti ma non amo farlo e quelli li ho messi solo per tentare di spiegarmi meglio comunque chiedo venia per l'errore :).
Per quanto riguarda la connessione mi funziona benissimo e non ho capito dove sia l'errore comunque lo guarderò attentamente comparandolo con il tuo script.

Citando le tue parole:

"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."

nel ciclo while non dichiaro un array che dovrà contenere una riga del database o nella fattispecie $mn "variabile" poichè è un mio errore è semplicemente una variabile al volo che contiene l'array dell'id preso dal database infatti avrei potuto dichiarare anche:

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

sempre citando le tue parole:

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.

Infatti l'array contiene seplicemente il conteggio di un numero progressivo di immagini scritte nel database a partire da 1 e ricavate dall'id, non contiene e non deve contenere l'id, altrimenti come ha giustamente fatto notare borgo italia, non sarebbe stato un array sensibile di incremento e decremento ma un valore numerico statico capace di dare tre all'immissione di 3 immagini ma quando si elimina una sola, restituirà non 2 ma 4 poichè autoincrementa.

Inoltre per restituire il tuo prezioso zelo ribadisco che borgo italia ha dichiarato e mi ha insegnato che unlink elimina un file.

Comunque ora funziona tutto benissimo faccio altre prove e vi faccio sapare grazie ad entrambi :)
 
ciao alessandro
non mettertici anche tu
sarò gnocco, ma dovete spiegarmi che differenza c'è tra il valore restituito da
count($n)

e dal valore che mi darebbe (senza bisogno di tanti array e cicli while) l'istruzione

mysql_num_rows($sql)

1. la query (così come è) seleziona tutti i record o no?
2. $n[] nel ciclo while non si riempe di tutti gli id_prodotto
(da $n[0]=>primo_id a $n[nun_rec - 1] => ultimo_id) o no?
3. il numero di elementi dell'array $n non è uguale a quanti record ho estratto o no?
4. la funzione count() non restituisce il numero di elementi di un array o no?
5. quindi il valore retituito da count($n) non è uguale al valore restituito da mysql_num_rows($sql) o no?

simuliamo (non ho voglia di costruirmi db e tabella) una query simile

$dati_tabella=array(1,3,5,7,8,9);//simulo i record presenti in tabella, dove 1,3,5,7,8,9 sono gli id_prodotto presenti

$n=array();

foreach($dati_tabella as $valore){//simulo il ciclo while
$n[]=$valore;//simulo l'estrazione di $n[] = $mn['id_prodotto'];
}
$tipologia = '.jpg';
$foto = count($n) . $tipologia;

//ora simulo l'istruzione mysql_num_rows

$num_di_record=count($dati_tabella);
$foto_conNumRows=$num_di_record.$tipologia;

echo "il nome della foto usando while+array è $foto<br>";
echo "il nome della foto usando mysql_num_rows è $foto_conNumRows<br>";
echo "qualcuno vede la differenza?????";

provate questo stupidissimo script
 
Ciao Borgo hai pienamente ragione ma il mio ragionamento è diverso tento di spiegarlo il meglio possibile tenendo presente che ogniuno di noi è un mondo a se e che ovviamente chi tenta di aiutarti non può prevedere i meccanismi della tua mente :).

Allora per gradi:

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

sarò gnocco, ma dovete spiegarmi che differenza c'è tra il valore restituito da
count($n)

e dal valore che mi darebbe (senza bisogno di tanti array e cicli while) l'istruzione

mysql_num_rows($sql)

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

Questo giustissimo calcolo servirebbe se volessi dare all'immagine il nome esatto dell'id ovvero il numero esatto dell'id giusto?

Ma se lo facessi come tu stessi mi hai fatto notare poi quando elimino una foto esempio: id_prodotto: 1,2,3 eliminando la terza poi mi restituisce 4 e non due giusto?

Per questo motivo ho creato un array che contiene tutti gli id e poi gli ho contati e ho assegnato come nome della foto il numero pari agli elementi dell'array derivato dall'id.

Così facendo se sono 3 gli id sono 3 i valori dell'array ma se ne tolgo uno l'id diventa 4 ma il numero del contenuto dell'array è invece due e quindi mi restituisce due etc etc.

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

1. la query (così come è) seleziona tutti i record o no?

Si i record immagine

2. $n[] nel ciclo while non si riempe di tutti gli id_prodotto
(da $n[0]=>primo_id a $n[nun_rec - 1] => ultimo_id) o no?

Si e diventa un array degli id ma non elimina nulla.

3. il numero di elementi dell'array $n non è uguale a quanti record ho estratto o no?

Si esattamente ed è quel numero che do alle immagini.

4. la funzione count() non restituisce il numero di elementi di un array o no?

Si esattamente e mi serve per dare il suo numero alle immagini

5. quindi il valore retituito da count($n) non è uguale al valore restituito da mysql_num_rows($sql) o no?

Molto probabilmente si ma non ne sono sicuro pertanto ho creato un array fisicamente che magari ha contribuito a farvi impazzire.

Warning: rename(./,./1.jpg) [function.rename]: Permission denied in D:\inetpub\vhosts\beautyluxury.it\httpdocs\prodotti\upload.php on line 31
./1.jpg
 
Ultima modifica:
Ragazzi ho risolto ho sistemato lo script come segue è funziona perfettamente grazie a tutti per il prezioso aiuto e per la gentilezza.

<?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'] );
$sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
$nomefileimmagine=$percorso.$foto;
if($sposta){
if (file_exists($nomefileimmagine)){
unlink($nomefileimmagine);
}
$nuovofile=''.$percorso.$_FILES['Filedata']['name'];
rename($nuovofile,$nomefileimmagine);
echo($nomefileimmagine);
}
mysql_close($connessione);
?>
 
C'è un altra piccolissima sventura che credo possa risolversi con un altra if di controllo anche se è rarissimo ma se prelevo nell'hd una foto che puta caso si chiama come il numero che deve essere dato all'immagine allora il sistema si impalla esempio se inserisco la prima foto e la foto che ho nell'hd si chiama esattamente 1.jpg come il numero che starà per essere dato alla foto il sistema si blocca e non carica nulla ci vorrebbe una if del tipo credo sia così ma se sbaglio correggetemi:

$nome_reset="a.jpg";

if($uploadfile==$memoria){
rename($nuovofile,$nome_reset)
}

così dovrebbe chiamare la foto a.jpg e poi procedere tranquillamente con il calcolo di upload rinominandola in 1.jpg sbaglio?
 
Questo giustissimo calcolo servirebbe se volessi dare all'immagine il nome esatto dell'id ovvero il numero esatto dell'id giusto?
no
sti sto dicendo che se fai come dici tu o tu faccia con mysql_num_rows ottineino sempre e comunque lo stesso risultato INDIPENDENTEMNTE quale che sia l'id che potereebe essere anche "abracadabra"
 
si vero scusa ma è l'inesperienza lo modificherò come dici tu è che poi non so associare il metodo mysql_num_rows($sql)
per dargli il nome e non so estrapolare i dati da quell'array :)
 
ciao
si vero scusa ma è l'inesperienza lo modificherò come dici tu è che poi non so associare il metodo mysql_num_rows($sql)
per dargli il nome e non so estrapolare i dati da quell'array
ma a che ti serve l'array????

visto che stai facendo delle prove in locale, slava la pagina che stai facendo con un altro nome, poi la richiami e la risalvi (per poterla utilizzare) col nome che gli avevi dato in modo da poterla utilizzare
togli tutta la parte

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

ed al posto ci metti

$sql=mysql_query("SELECT immagine from prodotti");
$memoria=mysql_num_rows($sql);
$tipologia=".jpg";
$foto=$memoria.$tipologia;

vedrai che il rusalto è lo stesso medesimo
 
Si, borgo hai ragione funziona benissimo anche così.
Ho provato e funziona benissimo grazie mille, c'è solo il problema del fatto che se prendo una foto nell'hd che si chiama con il numero che devo dargli non mi carica nulla la if che ho scritto è sbagliata?

nome_reset="a.jpg";

if($uploadfile==$memoria){
rename($nuovofile,$nome_reset)
}
 

Discussioni simili