upload immagini

So che propongo un argomento trattato tantissimo...ma le ho provate tutte e proprio non mi riesce.

Dopo varie ricerche in rete, ho deciso di optare per l'esempio troveto nella guida ufficiale (http://it2.php.net/manual/it/features.file-upload.php)...e neanche questa volta funziona.

Posto i codici

form

<FORM METHOD="POST" ACTION="fotografie_aeree_verticali_include.php" enctype="multipart/form-data" name="form1">
<tr height="38">
<td width="400" align="left" height="38" valign="middle">
<br><h5><b>Anno Ripresa:</b><br>
<INPUT name="AnnoRipresa" TYPE="Text"id="AnnoRipresa"></h5>
</td><td><br><h5><b>Foto:</b></h5>
<input type="file" name="Foto" id="Foto"><br><br>
</td>
</tr>
<tr height="38">
<td width="400" align="left" height="38">
<h5><b>Sensore:</b><br>
<INPUT name="Sensore" TYPE="Text"id="Sensore"></h5>
</td>
</tr>
<tr height="53">
<td width="400" align="left" height="53">
<h5><b>Regione:</b><br>
<INPUT name="Regione" TYPE="Text" id="Regione"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Provincia:</b><br>
<INPUT name="Provincia" TYPE="Text"id="Provincia"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Comprensorio:<br></b>
<INPUT name="Comprensorio" TYPE="Text"id="Comprensorio"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Comune:</b><br>
<INPUT name="comune" TYPE="Text"id="comune"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Toponimo:</b><br>
<INPUT name="Toponimo" TYPE="Text"id="Toponimo"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Tipo Evidenza:</b><br>
<INPUT name="TipoEvidenza" TYPE="Text"id="TipoEvidenza"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Attestazione Documentaria:</b><br>
<INPUT name="AttestazioneDocumentaria" TYPE="Text"id="AttestazioneDocumentaria"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Interpretazione:</b><br>
<INPUT name="Interpretazione" TYPE="Text"id="Interpretazione"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Affidabilità:</b><br>
<INPUT name="Affidabilità" TYPE="Text"id="Affidabilità"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Definizione:</b><br>
<INPUT name="Definizione" TYPE="Text"id="Definizione"></h5>
</td>
</tr>
<tr>
<td width="400" align="left">
<h5><b>Cronologia:</b><br>
<INPUT name="Cronologia" TYPE="Text"id="Cronologia"></h5>
</td>
</tr>
<tr>
<td width="400" align="left"><br><h5><INPUT TYPE="SUBMIT" VALUE="Insert"></h5></td>
</tr>
</form>

fotografie_aeree_verticali_include.php

<?php 
$db_host="";
$db_user="";
$db_password="";
$db_database="";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "Possibile attacco tramite file upload!\n"; 
}
echo 'Alcune infromazioni di debug:';
print_r($_FILES); 

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES
 ('.$_POST['AnnoRipresa'].', '.$_POST['Sensore'].', '.$_POST['Regione'].', '.$_POST['Provincia'].', '.$_POST['Comprensorio'].', '.$_POST['Comune'].', '.$_POST['Toponimo'].', '.$_POST['TipoEvidenza'].', '.$_POST['AttestazioneDocumentaria'].', '.$_POST['Interpretazione'].', '.$_POST['Affidabilità'].', '.$_POST['Definizione'].', '.$_POST['Cronologia'].', '.$_FILES['image'] ['name'].'"; 
 
$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 
echo "Record inserito con successo";
?>

il campo in cui va inserita l'immagine si chiama Foto ed è di tipo Varchar (50), la cartella in cui l'immagine deve essere fotografata si chiama fotografie...

Tutto ciò mi da questo errore

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/mhd-01/www.space2place.org/htdocs/fotografie_aeree_verticali_include.php on line 38

la linea 38 è questa parte della query VALUES

 ('.$_POST['AnnoRipresa'].',.....................................')";

Forse l'errore è nel valore che io attribuisco al campo Foto (.$_FILES['image'] ['name'].') ?

Qualcuno mi può aiutare?

inviato 10 anni fa
alice1
X 0 X

Devo aver postato male il codice....scusate<FORM METHOD="POST" ACTION="fotografie_aeree_verticali_include.php" enctype="multipart/form-data" name="form1"><tr height="38"> <td width="400" align="left" height="38" valign="middle"> <br><h5><b>Anno Ripresa:</b><br> <INPUT name="AnnoRipresa" TYPE="Text"id="AnnoRipresa"></h5> </td><td><br><h5><b>Foto:</b></h5> <input type="file" name="Foto" id="Foto"><br><br> </td> </tr> <tr height="38"> <td width="400" align="left" height="38"> <h5><b>Sensore:</b><br> <INPUT name="Sensore" TYPE="Text"id="Sensore"></h5> </td> </tr> <tr height="53"> <td width="400" align="left" height="53"> <h5><b>Regione:</b><br> <INPUT name="Regione" TYPE="Text" id="Regione"></h5> </td> </tr> <td width="400" align="left"> <h5><b>Provincia:</b><br> <INPUT name="Provincia" TYPE="Text"id="Provincia"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Comprensorio:<br></b> <INPUT name="Comprensorio" TYPE="Text"id="Comprensorio"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Comune:</b><br> <INPUT name="comune" TYPE="Text"id="comune"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Toponimo:</b><br> <INPUT name="Toponimo" TYPE="Text"id="Toponimo"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Tipo Evidenza:</b><br> <INPUT name="TipoEvidenza" TYPE="Text"id="TipoEvidenza"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Attestazione Documentaria:</b><br> <INPUT name="AttestazioneDocumentaria" TYPE="Text"id="AttestazioneDocumentaria"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Interpretazione:</b><br> <INPUT name="Interpretazione" TYPE="Text"id="Interpretazione"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Affidabilità:</b><br> <INPUT name="Affidabilità" TYPE="Text"id="Affidabilità"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Definizione:</b><br> <INPUT name="Definizione" TYPE="Text"id="Definizione"></h5> </td> </tr> <tr> <td width="400" align="left"> <h5><b>Cronologia:</b><br> <INPUT name="Cronologia" TYPE="Text"id="Cronologia"></h5> </td> </tr> <tr> <td width="400" align="left"><br><h5><INPUT TYPE="SUBMIT" VALUE="Insert"></h5></td </tr> </form>

fotografie_aeree_verticali_include.php

<?php 
$db_host="";
$db_user="";
$db_password="";
$db_database="";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die 
("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die 
"Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "Possibile attacco tramite file upload!\n"; 
}
echo 'Alcune infromazioni di debug:';
print_r($_FILES); 

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, 
Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, 
AttestazioneDocumentaria, Interpretazione, 
Affidabilità, Definizione, Cronologia, Foto) VALUES ('.$_POST['AnnoRipresa'].', 
'.$_POST['Sensore'].', '.$_POST['Regione'].', '.$_POST['Provincia'].', 
'.$_POST['Comprensorio'].', '.$_POST['Comune'].', '.$_POST['Toponimo'].',
 '.$_POST['TipoEvidenza'].', '.$_POST['AttestazioneDocumentaria'].', 
'.$_POST['Interpretazione'].', '.$_POST['Affidabilità'].', '.$_POST['Definizione'].', 
'.$_POST['Cronologia'].', '.$_FILES['image'] ['name'].')"; 
 
$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 
echo "Record inserito con successo";
?>

Errore

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, 
expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/mhd-01/www.space2place.org/htdocs/fotografie_aeree_verticali_include.php on line 38
risposto 10 anni fa
alice1
X 0 X

Nel codice c'erano alcuni errori di sintassi che ho corretto:

<?php 
$db_host="";
$db_user="";
$db_password="";
$db_database="";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die 
("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die 
("Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "Possibile attacco tramite file upload!\n"; 
}
echo 'Alcune infromazioni di debug:';
print_r($_FILES); 

$query = 'INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, 
Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, 
AttestazioneDocumentaria, Interpretazione, 
Affidabilità, Definizione, Cronologia, Foto) VALUES ('.$_POST['AnnoRipresa'].', 
'.$_POST['Sensore'].', '.$_POST['Regione'].', '.$_POST['Provincia'].', 
'.$_POST['Comprensorio'].', '.$_POST['Comune'].', '.$_POST['Toponimo'].',
 '.$_POST['TipoEvidenza'].', '.$_POST['AttestazioneDocumentaria'].', 
'.$_POST['Interpretazione'].', '.$_POST['Affidabilità'].', '.$_POST['Definizione'].', 
'.$_POST['Cronologia'].', '.$_FILES['image'] ['name'].')'; 
 
$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 
echo "Record inserito con successo";
?>
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Scusami....probabilmente è a causa dell'ora...sembrerà impossibile...ma io non riesco a vedere nessuna differenza tra il codice che ho postato io e quello corretto da te.

risposto 10 anni fa
alice1
X 0 X

Comunque anch'io ho provato a fare delle correzioni...e qualcosa deve essere cambiato visto che ora mi da quasto messaggio di errore

File is invalid. !Array ( [Foto] => Array ( [name] => edicola.gif [type] => image/gif [tmp_name] => /tmp/php6TdqUx [error] 
=> 0 [size] => 1185 ) ) Record inserito con successo

Posto il nuovo codice

<?php 
$db_host="...";
$db_user="...";
$db_password="...";
$db_database="...";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie';
//fotografie corrisponde alla cartella dove vorrei fossero salvate le immagini
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "File is invalid.\n!"; 
}
print_r($_FILES); 

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, 
TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, 
Cronologia, Foto) VALUES ('".$_POST['AnnoRipresa']."', 
'".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', 
'".$_POST['Comprensorio']."', '".$_POST['Comune']."', 
'".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."', 
'".$_POST['AttestazioneDocumentaria']."', 
'".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', '
".$_POST['Definizione']."', '".$_POST['Cronologia']."', 
'".$_FILES['upfile'] ['name']."')"; 
 
$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 
echo "Record inserito con successo";
?>
risposto 10 anni fa
alice1
X 0 X

Ho risolto, e se a qualcuno può essere di aiuto posto il codice funzionante

<?php 

$db_host="...";

$db_user="...";

$db_password="...";

$db_database="...";

$connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());

mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie/';

$uploadfile = $uploaddir .$_FILES['Foto']['name'];

if (move_uploaded_file($_FILES['Foto']['tmp_name'], $uploadfile)) {

   echo "File is valid, and was successfully uploaded.\n";

} else {

   echo "File is invalid.\n!"; 

}

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES

 ('".$_POST['AnnoRipresa']."', '".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', '".$_POST['Comprensorio']."', '".$_POST['Comune']."', '".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."', '".$_POST['AttestazioneDocumentaria']."', '".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', '".$_POST['Definizione']."', '".$_POST['Cronologia']."', '".$_FILES['Foto'] ['name']."')"; 

 

$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 

echo "Record inserito con successo";

echo mysql_error();

?>
risposto 10 anni fa
alice1
X 0 X

Ho recuperato il mio vecchio post perchè l'argomento che propongo si ricollega al precedente. Utilizzando il codice per l'upload delle immagini riesco a salvarle nella cartella (fotografie)e ad inserirle nel Db....c'è però un problema....sto lavorando su un Db precompilato nel cui campo Foto è registrato il percorso della stessa in questo modo:\fotografie\nome_immagine

quando io faccio l'upload, invece, mi viene salvato solo il nome_immagine e se provo a compiere query di ricerca sullo stesso DB la foto non viene visualizzata ....

Esiste un modo attraverso il quale durante la fase di upload dell'immagine questa venga inserita nel DB preceduta dal nome della cartella in cui viene salvata (così come è per le immagini già presenti nel DB)?

Spero di non essere stata troppo confusionaria...

risposto 10 anni fa
alice1
X 0 X

E' sufficiente aggiungere alla query:

$uploaddir.$_FILES['Foto'] ['name']

per avere percorso+nome del file.

risposto 10 anni fa
LonelyWolf
X 0 X

Grazie mille

risposto 10 anni fa
alice1
X 0 X

No, scusa...ma io nel mio codice già ce l'ho, eppure nel Db viene inserito solo il nome dell'immagine

<?php 
$db_host="...";
$db_user="...";
$db_password="...";
$db_database="...";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());

$uploaddir = './fotografie/';
$uploadfile = $uploaddir .$_FILES['Foto']['name'];

if (move_uploaded_file($_FILES['Foto']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "File is invalid.\n!"; 
}
$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES
 ('".$_POST['AnnoRipresa']."', '".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', '".$_POST['Comprensorio']."', '".$_POST['Comune']."', '".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."', '".$_POST['AttestazioneDocumentaria']."', '".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', '".$_POST['Definizione']."', '".$_POST['Cronologia']."', '".$_FILES['Foto'] ['name']."')"; 
 
$Result=mysql_query($query) or die ("Errore nella query:" . mysql_error()); 
echo "Record inserito con successo";
echo mysql_error();

?>
risposto 10 anni fa
alice1
X 0 X

Nel tuo script hai:

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES
 ('".$_POST['AnnoRipresa']."', '".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', '".$_POST['Comprensorio']."', '".$_POST['Comune']."', '".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."', '".$_POST['AttestazioneDocumentaria']."', '".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', '".$_POST['Definizione']."', '".$_POST['Cronologia']."', '".$_FILES['Foto'] ['name']."')";

Come vedi nella query di inserimento del db mandi solo ilnome del file.

Così:

$query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES
 ('".$_POST['AnnoRipresa']."', '".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', '".$_POST['Comprensorio']."', '".$_POST['Comune']."', '".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."', '".$_POST['AttestazioneDocumentaria']."', '".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', '".$_POST['Definizione']."', '".$_POST['Cronologia']."', '".$uploaddir.$_FILES['Foto'] ['name']."')";

Aggiungi il percorso di upload e concateni il nome del file.

risposto 10 anni fa
LonelyWolf
X 0 X

ho provato a fare come hai suggerito, quindi ho modificato la query in questo modo

query = "INSERT INTO fotoaereeverticali (AnnoRipresa, Sensore, Regione, Provincia, Comprensorio, Comune, Toponimo, 
TipoEvidenza, AttestazioneDocumentaria, Interpretazione, Affidabilità, Definizione, Cronologia, Foto) VALUES
 ('".$_POST['AnnoRipresa']."', '".$_POST['Sensore']."', '".$_POST['Regione']."', '".$_POST['Provincia']."', 
'".$_POST['Comprensorio']."', '".$_POST['Comune']."', '".$_POST['Toponimo']."', '".$_POST['TipoEvidenza']."',
 '".$_POST['AttestazioneDocumentaria']."', '".$_POST['Interpretazione']."', '".$_POST['Affidabilità']."', 
'".$_POST['Definizione']."', '".$_POST['Cronologia']."', '".$uploaddir.$_FILES['Foto']['name']."')"; 
 

ora però nel campo del DB mi appare

.\fotografie\nome_foto

e la ricerca non funziona lo stesso.

Ho provato a togliere il punto nella riga

$uploaddir = '.\fotografie\';

o a modificare l'orientamento degli slash ....ma mi da in ogni caso errore

risposto 10 anni fa
alice1
X 0 X

Allora spiega meglio:

non funziona la query di ricerca?

non si visualizzano le immagini?

Esattamente cosa non funziona?

risposto 10 anni fa
LonelyWolf
X 0 X

Ora funziona....grazie mille

risposto 10 anni fa
alice1
X 0 X

Ciao a tutti,questo topic è utilissimo,però ancora non riesco a far funzionare il codice che avete proposto.

In pratica si dovrebe effettuare un upload di un file in una cartella del server e salvarne il percorso in un record del DB??Dunque tale record di ke tipo deve essere?Non Blob,ma semplicemente text o varchar?

E il percorso della cartella che dichiaro in $uploaddir=.. deve essere in riferimento a dove si trova la pagina a cui punta?Cioe' se cartella Immagini e file php si trovano nella stessa directory,nel dichiarare il percorso devo omettere tutto cio' che precede?

Spero di essere stato chiaro nel formulare le domande, e spero che i miei dubbi possano risolvere anche quelli altrui..

risposto 10 anni fa
brodolio
X 0 X

Ciao a tutti,questo topic è utilissimo,però ancora non riesco a far funzionare il codice che avete proposto.

In pratica si dovrebe effettuare un upload di un file in una cartella del server e salvarne il percorso in un record del DB??Dunque tale record di ke tipo deve essere?Non Blob,ma semplicemente text o varchar?

E il percorso della cartella che dichiaro in $uploaddir=.. deve essere in riferimento a dove si trova la pagina a cui punta?Cioe' se cartella Immagini e file php si trovano nella stessa directory,nel dichiarare il percorso devo omettere tutto cio' che precede?

Spero di essere stato chiaro nel formulare le domande, e spero che i miei dubbi possano risolvere anche quelli altrui..

Tu cosa vuoi realizzare? Ti interessa salvare "fisicamente" le immagini nel database, oppure vuoi semplicemente portarle sul server e tenerne traccia con un record nel DB?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Tu cosa vuoi realizzare? Ti interessa salvare "fisicamente" le immagini nel database, oppure vuoi semplicemente portarle sul server e tenerne traccia con un record nel DB?

In pratica ho realizzato un form di gestione news(quindi testo che viene memorizzato in alcuni record del DB),e ho aggiunto un campo di upload immagini,in modo tale che inviata la query,nel DB vengano memorizzati sia testi che una eventuale immagine da poter visualizzare nella news.Quindi in realtà non è fondamentale che le immagini vengano storate nel DB ,l'importante è poterle recuperare e associarle al campo di testo giusto.

Col codice di questo topic mi visualizza solo il percorso della dir,ma non effettua nessun upload..

risposto 10 anni fa
brodolio
X 0 X

Per chiarire posto il codice del file upload.php

<?php
require 'connect.php';

//memorizzo dati inseriti nei form
$titolo=$_POST['titolo'];
$testo=$_POST['testo'];
$lin=$_POST['links'];
$nlin=$_POST['nlinks'];
 
//controllo che il campo testo non sia vuoto
if(!$testo) {
echo"<center><strong>scrivi qualcosa nella sezione testo!</strong><br>";
}
else
{

//recupero percorso e nome del file da uploadare
$uploaddir='/gestione/ImmNews/';
$uploadfile = $uploaddir.$_FILES['Immagine']['name'];

//in caso di esito positivo,invio query completa
if (move_uploaded_file($_FILES['Immagine']['tmp_name'], $uploadfile)) {
   echo "File is valid, and was successfully uploaded.\n";
   $query="INSERT INTO nuove 
   (idnuove,titolo,testo,links,nlinks,Immagine) 
    VALUES ('','".$_POST['titolo']."','".$_POST['testo']."','".$_POST['links']."','".$_POST['nlinks']."',
     '".$uploaddir.$_FILES['Immagine'] ['name']."')";
     mysql_query($query);
    header('location:prova.php'); 
    mysql_close();
  }
else 
  {
//in caso di errori o scelta dell'utente di non inserire nessuna immagine
//invio la query tralasciando il campo del percorso immagine
   echo "errore!\n";
  $query="INSERT INTO nuove 
 ( idnuove,titolo,testo,links,nlinks) 
  VALUES ('','".$_POST['titolo']."','".$_POST['testo']."','".$_POST['links']."','".$_POST['nlinks']."')";
  mysql_query($query);
  header('location:prova.php');
 } 

?>

Il codice mi restituisce solo il corretto percorso dell'immagine,ma non effettua l'upload. Aiuto.

PS:Lo sto testando sui server Altervista,magari è per quello..

risposto 10 anni fa
brodolio
X 0 X

ma l'istruzione "move_uploaded_file" ha successo? Le query memorizzano il percorso del file? Ricevi qualche segnalazione di errore?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
ma l'istruzione "move_uploaded_file" ha successo? Le query memorizzano il percorso del file? Ricevi qualche segnalazione di errore?

No,la query non funziona..Ho provato anche con $HTTP_POST_FILES,o con la funzione is_uploaded_file() e non succede niente..

risposto 10 anni fa
brodolio
X 0 X

Visto che non funziona niente allora ti consiglio di procedere per gradi. Inizia a realizzare solo la procedura di upload, evitando la query di inserimento del percorso nel DB.

$uploadfile = 'C:\tmp\' . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "Ok";
} else {
   echo "Errore";
}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Visto che non funziona niente allora ti consiglio di procedere per gradi. Inizia a realizzare solo la procedura di upload, evitando la query di inserimento del percorso nel DB.

$uploadfile = 'C:\tmp\' . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "Ok";
} else {
   echo "Errore";
}

 :bye:

Ok provero',ma credo sia una questione di permessi di scrittura sulal cartella,il CHMOD, che altervista blocca volontariamente..

risposto 10 anni fa
brodolio
X 0 X

ma non credo che su altervista non si possa effettuare un upload  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
ma non credo che su altervista non si possa effettuare un upload  :dunno:

Si si,certo che si puo'fare,e'solo che bloccano i permessi dandoti la possibilità di sbloccarli spendendo crediti virtuali che,OVVIAMENTE,io non ho a sufficienza.. :buck:

Nemmeno sulla guida ufficiale di PHP cmq si sono preoccupati di specificare questo piccolo( e fondamentale) aspetto rigurdante l'upload..

risposto 10 anni fa
brodolio
X 0 X

salvare un file in una cartella non è un'operazione di cui PHP si occupa direttamente ma viene delegata (come è giusto che sia) al sistema operativo.

PHP quindi centra poco e niente...

Se usi Windows e la FAT (16 o 32) ad esempio questo problema non esiste (e non so se esserne felice)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

salvare un file in una cartella non è un'operazione di cui PHP si occupa direttamente ma viene delegata (come è giusto che sia) al sistema operativo.

PHP quindi centra poco e niente...

Se usi Windows e la FAT (16 o 32) ad esempio questo problema non esiste (e non so se esserne felice)

 :bye:

Quindi il probelma e'del mio pc,nel senso che l'upload non funziona perche'la cartella da cui dovrebbe partire il file non ha permessi di lettura?

Se si,come faccio a "chmodare" la mai cartella?Grazie per le dritte e la pazienza.. :P

risposto 10 anni fa
brodolio
X 0 X

no, penso che il problema al massimo è nei permessi di scrittura della cartella di destinazione, ovvero quella del server di altervista.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
no, penso che il problema al massimo è nei permessi di scrittura della cartella di destinazione, ovvero quella del server di altervista.

ho effettuato il chmod tramite ftp,e ora l'upload funziona!Pero'soltanto se non specifico alcuna directory(mi carica il file nella cartella in cui si trova il file php che comanda tale operazione).Altrimenti non effettua nessun upload..

posto il codice:

1)cosi'funziona,ma la directory non e'quella che scelgo io

//Recupero il percorso temporaneo del file
$userfile_tmp = $_FILES['Immagine']['tmp_name'];

//recupero il nome originale del file caricato
$userfile_name = $_FILES['Immagine']['name'];



if (move_uploaded_file($userfile_tmp, $userfile_name)) {
   echo "Ok";
} else {
   echo "Errore";
}

2)cosi'non funziona:

$uploaddir='/nuovo/gestione/immnews/';
//Recupero il percorso temporaneo del file
$userfile_tmp = $_FILES['Immagine']['tmp_name'];

//recupero il nome originale del file caricato
$userfile_name = $uploaddir. $_FILES['Immagine']['name'];



if (move_uploaded_file($userfile_tmp, $userfile_name)) {
   echo "Ok";
} else {
   echo "Errore";
}

aiuto.. :tichedoff:

risposto 10 anni fa
brodolio
X 0 X

ok risolto,sbaglio il percorso della directory ;D..

risposto 10 anni fa
brodolio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda