Id prodotto come nome immagine: come prevederlo?

Sto creando uno script per inserire prodotti in un database.

Nella stessa pagina carico tutti i dati del prodotto comprese due immagini.

La query di INSERT è una sola e viene eseguita dopo che tutti gli altri controlli sono stati verificati.

Per la gestione delle immagini c'è una funzione che si occupa del salvataggio.

A questo punto devo assegnare un nome all'immagine di modo che questo sia univoco (non necessariamente associato al prodotto ma sarebbe meglio.

La mia idea:

Utilizzare il campo ID del mio prodotto.

Essendo ID un AUTO_INCREMENT per prevederlo (ossia ottenerlo prima della INSERT) dovrei leggere l'ultimo ID inserito e aumentarlo di un'unità.

ECCO LE DOMANDE:

- qual'è la query da eseguire per avere questo ID?

- questo metodo è sicuro?

- conviene fare tre query?

+ + una INSERT

+ + un SELECT LAST_INSERT_ID()

+ + una INSERT WHERE ID = LAST_INSERT_ID()

Grazie

inviato 10 anni fa
arjuna
X 0 X

ciao...

- qual'è la query da eseguire per avere questo ID?

inserisco il codice che ho fatto per risolvere questo problema...

function crea_codice($table, $colonna)
{
                $sql = "SELECT MAX($colonna) FROM $table";
                $rs = mysql_query($sql) or 
         die("Query<br><br>$sql<br><br>failed<br>".mysql_error());

   if( (mysql_num_rows($rs) == 0) or (mysql_num_rows($rs) == NULL) ) $codice = 1;
   else 
   {
      $max = mysql_fetch_row($rs);
      if( is_numeric($max[0]) ) $codice = $max[0]+1;
      else $codice = 1;
   }   
   return $codice;      
}

questa funzione restituisce l'id piu alto incrementato di uno.....

spero ti sia utile :)

- questo metodo è sicuro?

- conviene fare tre query?

a queste domande invece non so rispondere :(

risposto 10 anni fa
purpitta
X 0 X

Il codice che hai postato è molto interessante.

Ti ringrazio.

Leggendo qua e la però mi sembra di capire che è più sicuro fare più query.

Quindi prima ho fatto una INSERT, poi ho ricavato l'id di questa INSERT e in fine ho fatto un UPDATE.

Così sono sicuro che i dati vengano scritti correttamente.

Grazie ancora per la risposta.

risposto 10 anni fa
arjuna
X 0 X

Perché non creare un nome casuale per l'immagine e poi memorizzarlo nel record associato al prodotto?

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

per due motivi:

- la generazione casuale non mi convince

- associandolo all'id posso più agevolmente scrivere template e toccare il file senza fare query al database (mi basta sapere l'id del prodotto)

non trovi?  8)

risposto 10 anni fa
arjuna
X 0 X

Quando mostrerai l'immagine sicuramente avrai già fatto una query per ricavare altre informazioni del prodotto.

Inoltre svincolarsi dall'id potrebbe essere un bene.

Valuta attentamente entrambe le strade, simula la realizzazione di entrambe le procedure, prima di decidere.

 :bye:

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