Upload files + inserimento campo db

Ciao a tutti,

non riesco a finire la seguente procedura:

Ho creato una pagina con form per l'upload di file;

ed ho bisogno di inserire il nome del file in un campo di una tabella di un database

upload.php

<html> <body> <?PHP    

$cartella = 'upload/';     
$percorso = $_FILES['miofile']['tmp_name'];     
$nome = $_FILES['miofile']['name'];              

if (move_uploaded_file($percorso, $cartella . $nome))     {      
   print "Upload eseguito con successo $nome";      
}     else   
  {    print "Si sono verificati dei problemi durante l'Upload";     
} ?>

<form method="post"
action="<?php echo $_SERVER['PHP_SELF'];?>"enctype="multipart/form-data">     
<input type="file" name="miofile">    
<input type="submit" value="Upload"> </form>  </body> </html>

Quidi nel DB dovrei inserire $nome nella tabella "articolo" nel campo "immagine";

L'id dell'articolo lo prendo gia dal link di provenienza:

upload.php?id=1

Ho fatto vari tentativi ma riesco solo ad aggiungerne nuovi e nn riesco a modificare

l'articolo specifico (id).

Come si fa ?

 ;)

------------

PS:

Ho provato cosi':

ma mi restituisce Undefined index: id e non scrive nella tabella...cosa sbaglio ?  :(

<?PHP

    $cartella = 'upload/';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];

    if (move_uploaded_file($percorso, $cartella . $nome))
    {
        print "Upload di $nomeeseguito con successo ";

    }
    else
    {
        print "Si sono verificati dei problemi durante l'Upload";
    }
?>

<?php

if (isset($_POST['img'])):
  // Categoria aggiornata

  $img = $_POST['img'];
  $id = $_POST['id'];
  $sql = "UPDATE categorie SET
          img='$nome'
          WHERE id='$id'";
  if (@mysql_query($sql)) {
    echo "$aggiornato";
  } else {
    echo '<p>Error updating category details: ' .
        mysql_error() . '</p>';
  }

?>


<?php else:

  $id = $_GET['id'];
  $cat = @mysql_query("SELECT img FROM categorie WHERE id='$id'");
  if (!$cat) {
    exit('<p>Error fetching category details: ' .
        mysql_error() . '</p>');
  }
  
  $cat = mysql_fetch_array($cat);
  $img = $cat["img"];


?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
    <input type="file" name="miofile">
    <input type="submit" value="Upload">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
</form>

<?php endif; ?>

Grazie a chiunque mi risponda  :D

inviato 6 anni fa
gyra
gyra
1
X 0 X

Prova a modificare questa riga:

  $id = $_GET['id'];

Così:

  $id = $_POST['id'];
risposto 6 anni fa
Mario Santagiuliana
X 0 X

Purtroppo non funziona.

Ho provato anche qualcosa di piu' semplice:

$cartella = 'upload/';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];

    if (move_uploaded_file($percorso, $cartella . $nome))
    {
   
      $id = $_GET['id'];   
      $sql = "UPDATE categorie SET
        img='$nome'
          WHERE id='$id'";

    }

Ma proprio non funziona.

Sicuramente sarà una cosa semplicissimma,

ma proprio non riesco a capire cosa sbaglio,

ho provato e ripovato in tutte le salse.

dove sbaglio ?

risposto 6 anni fa
gyra
gyra
1
X 0 X

Ti rendi conto che stai mandando i dati tramite array $_POST e poi tenti di recuperarli tramite array $_GET?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Il problema e' che ho entrambi i metodi:

il nome del file lo prendo da POST

l'id lo prendo da GET (da una pagina precedente) :  upload.php?id=1

il problema e' che non riesco ad unire le due cose.

risposto 6 anni fa
gyra
gyra
1
modificato 6 anni fa
X 0 X

Ma se invii il campo id tramite il tuo form:

<input type="hidden" name="id" value="<?php echo $id; ?>" />

Perchè lo cerchi dal $_GET?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

A dire il vero mi ero dimenticato di quella riga  ;D

in ogni caso chiaramente ho provato con POST,

ma non ha funzionato.

In pratica il codice e' questo:

<?PHP

    $cartella = 'upload/';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];

   
    if (move_uploaded_file($percorso, $cartella . $nome))
    {
     $id = $_POST['id'];
      $sql = "UPDATE categorie SET
        img='$nome'
          WHERE id='$id'";
    }
    else
    {
        print "Si sono verificati dei problemi durante l'Upload"; 
    }
   


?>


<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
    <input type="file" name="miofile">
    <input type="submit" value="Upload">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
</form>

il file lo aggiunge, ma non scrive il nome del file dentro il database.

risposto 6 anni fa
gyra
gyra
1
X 0 X

Ottieni qualche errore?

Ti viene restituito l'errore che hai creato ("Si sono verificati dei problemi durante l'Uploa")?

Fa un echo delle varie variabili, vedi se $nome assume un valore corretto.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Infatti e' proprio quello che mi turba:

se aggiungo   

if (move_uploaded_file($percorso, $cartella . $nome))

    {

     $id = $_POST['id'];

      $sql = "UPDATE categorie SET

        img='$nome'

          WHERE id='$id'";

        print "Upload di $nome eseguito correttamente ";

    }

Mi restituisce un valore corretto.

(Upload di  nomeimg.jpg   eseguito correttamente).

risposto 6 anni fa
gyra
gyra
1
X 0 X

Siamo entrambi dei pirla (non me ne sono accorto).

Dove viene eseguita l'istruzione $sql? Metti così:

if (move_uploaded_file($percorso, $cartella . $nome))
    {
     $id = $_POST['id'];
      $sql = "UPDATE categorie SET
        img='$nome'
          WHERE id='$id'";
      if (mysql_query($sql))
        print "Upload di $nome eseguito correttamente ";
      else
        echo "Errore";
    }
risposto 6 anni fa
Mario Santagiuliana
X 0 X

Grandiosissimo!!!

Funziona perfettamente!!  :D

Ti meriti una birra  8)

Grazie!  :)

risposto 6 anni fa
gyra
gyra
1
X 0 X

Sono sempre io !

Lo sai che ho un problema ?

Facendo l'upgrande della versione di php del server ... non funziona piu' l'aggiornamento del database,

il caricamento immagini funziona perfettamente.

In pratica lo script nn riesce piu' a scrivere nel database.

Cosa puo' essere ?

 :)

risposto 6 anni fa
gyra
gyra
1
X 0 X

E' probabile che tu abbia dei campi con il nome sbagliato...controlla i log.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

macche', non e' stato toccato nulla da allora.

ha solo smesso di scrivere dentro il database e non so perche'.

guarda il codice:

<?PHP

    $cartella = 'images/articoli/temp/';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
    <input type="file" name="miofile">
    <input type="submit" value="Upload">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
</form>


<?php


if (move_uploaded_file($percorso, $cartella . $nome))
  {
  $id = $_POST['id'];
  $nome = $_FILES['miofile']['name'];
  $sql = "UPDATE testi SET
          imgtx='$nome',
          WHERE id='$id'" ;
      if (mysql_query($sql)){
   include('include.ad/simpleimg.php');
   $image = new SimpleImage();
   $image->load("images/articoli/temp/$nome");
   $image->resize(100,100);
   $image->save("images/articoli/resized/med.$nome");
   $image->resize(30,30);
   $image->save("images/articoli/thumbs/pic.$nome");
   print "Upload di $nome eseguito correttamente ";
    }
      else {
        echo "Errore";
    }

}      
?>

Non scrive dentro il database..

non capisco dove possa essere l'errore! :o

(l'upload funziona perfettamente e anche la $nome in

   print "Upload di $nome eseguito correttamente ";

viene restituita col valore dell'immagine caricata...

manca solo la scrittura nel db.

I configuration file e' chiaramente lo stesso per tutto il sito.

risposto 6 anni fa
gyra
gyra
1
modificato 6 anni fa
X 0 X

Nel codice fornito non vedo nessuna chiamata ad un database...

Non conosco l'oggetto SimpleImage().

risposto 6 anni fa
Mario Santagiuliana
X 0 X

La chiamata al db e' sopra

qui ho messo solo la parte relativa al caricamento delle img + inserimento campo nel db;

SimpleImage() e' una classe che fa il resize delle immagini in fase di caicamento;

ma non da problemi: anche provando a toglierlo e lasciando il caricamento delle

immagini senza resize, si ha lo stesso effetto:

la variabile $nome viene perfettamente creata,

ma non si connette al databse.

Non e' che e' un qualcosa legato agli ID ?

risposto 6 anni fa
gyra
gyra
1
X 0 X

UPGRADE:

E' proprio un probema legato agli id, perche' se invee di mettere $id metto un numero preciso,

quel campo viene aggiornato.

Quindi in pratica il problema e' che non funziona la variabile $id.

Come posso ottenerlo ? Via GET  dalla pagina precedente ?

la pagina contiene già l'id nell'url creato dalla pagna che la linka

es:

img-edita.res.php?id=83

UPGRADE2

##########

CI SONO RIUSCITO AGGIUNGENDO IL GET ALL'INIZIO!

<?php

    $cartella = 'images/articoli/temp/';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];

   $id = $_GET['id'];
  $txt = @mysql_query("SELECT imgtx FROM testi WHERE id='$id'");
  if (!$txt) {
    exit('<p>Error fetching category details: ' .
        mysql_error() . '</p>');
  }
  
  $txt = mysql_fetch_array($txt);
  $imgtx = $txt["imgtx"];
?>

SPERIAMO FUNZIONI BENE  :D

risposto 6 anni fa
gyra
gyra
1
modificato 6 anni fa
X 0 X

Scusami, non avevo letto bene il codice.

Comunque, il problema è sempre quello, usi prima un $_GET e poi un $_POST, devi stare attento a come passare i vari parametri.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda