• User

    [Risolto] L'array form mi cambia il "." in "_"

    Ciao a tutti. Questo è il form che viene generato in php ( metto solo la parte del'input che mi da il problema):

    print '<td><a href="'.$link.'" >
    <img src="'.$link.'" width="100" height="100"/> </a></td>
    <td>'.$imagesize[0].'<br>x<br>'.$imagesize[1].'</td>
    <td>Position<input type="text" name="'.$file.'[]" size="2"></td>';

    e questo lo script all'arrivo :

    foreach($_POST as $photo=>$position) {
    foreach($position as $position) {
    $sql="INSERT INTO products_details (id,photo,position) VALUES ('','$photo','$position')";

    Ebbene , tutto funziona bene se non per il fatto che nella variabile $file , che dovrebbe essere il nome di un file immagine ,quindi con estensione .jpg , viene cambiata l'estensione in jpg (notate il ""). questo avviene anche mettendo la variabile $link , che è lo stesso file con l'aggiunta della cartella radice.
    Sapreste aiutarmi a capire come mai?

    Grazie


  • User Attivo

    Ciao,
    non capisco proprio perchè usi il nome del file come "name" del campo input.

    Il risultato è corretto perchè php converte i nomi delle variabili passate tramite GET/POST in modo tale che siano nomi validi.

    Questo avviene per far sì che, nel caso in cui register_globals sia impostato su On, possano essere generate correttamente tutte le variabili.

    In PHP non può infatti esistere la variabile con nome, ad esempio,
    $immagine.jpg

    Nel tuo caso converte il punto con un underscore in modo che, l'eventuale variabile, abbia appunto un nome consentito:
    $immagine_jpg

    Alessandro


  • User

    Ciao e grazie della risposta. Uso il nome del file perchè è l'unico riferimento che ho per far scrivere sul database che la foto indicata deve avere l'attributo 1 , 2 , ecc.

    Comunque mi si è svelato il mistero e di ciò ti ringrazio , tanto più che mi sembra semplice a questo punto fare un explode('_',$photo) , ecc ecc.

    Grazie ancora


  • User

    Ecco fatto. se interessa a qualcuno , ho risolto cosi:

    foreach($POST as $photo=>$position) {
    $photo=explode('
    ',$photo);

    foreach($position as $position)  {
    $photo=$photo[0].'_'.$photo[1].'.'.$photo[2];
    $sql="INSERT INTO products_details (id,photo,position) VALUES ('','$photo','$position')";
    

    Ehmm... si è bruttino ma mi accontento :giggle: