Ho un campo foto nel db che è una stringa fatta in questo modo: image0001.jpg,image002.jpg,image0021321.jpg...
Devo poter eliminare delle foto, quindi una volta eliminate devo levare dalla stringa il nome della foto e rifare la stringa. Il problema è che levando solo il nome della stringa mi posso trovare situazioni "scomode" come una doppia virgola, o una virgola a fine stringa (se elimino l'ultima foto)
Ho scritto sta cosa, ma non mi soddisfa molto
$foto_da_cancellare è il nome del file
$result[foto] è la stringa con tutte le foto
Codice PHP:
//Levo la foto selezionata dalla stringa delle foto
$nuovo_foto=str_replace($foto_da_cancellare, '', $result[foto]);
$nuovo_foto=str_replace(",,", ",", $nuovo_foto); //Nel caso ci fossero 2 virgole consecutive ne levo 1
//controllo se l'ultimo campo è una virgola
$ultimo=strlen($nuovo_foto);
$ultimo=$ultimo-1;
$pos=strrpos($nuovo_foto, ",");//ultima virgola della stringa
echo "ultimo è $ultimo - pos è $pos
"; //Lasciate perdere, era un semplice controllo
if($pos == $ultimo) {
$nuovo_foto=substr_replace($nuovo_foto, "", $ultimo);
}
echo "$nuovo_foto
";
In effetti funziona, ma mi sembra molto maccheronico. Visto che ci ho eprso un sacco di tempo, mi piacerebbe sapere se c'era un metodo migliore per risolvere il problema, così capisco la prossima volta che ragionamenti fare.
Grazie