Comportamento strano php/html...

Discussione in 'PHP' iniziata da stefanoxjx, 7 Marzo 2017.

  1. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Ciao a tutti, sto impazzendo con una cosa che non mi torna proprio e non so se sono io che sto sbagliando oppure se è un problema di php/html.
    Praticamente, estraggo dei dati da una tabella mysql e li piazzo in una variabile $msg:
    Codice:
    while($logsRow=$logsData->fetch_array(MYSQLI_ASSOC))
    {
       $msg=$msg.$logsRow['nome'].' '.$logsRow['log_evento'].' '.$logsRow['stato'].' '; 
    }
    
    poi vorrei valorizzare un input html come segue:
    Codice:
    echo '<td bgcolor="#FFFFFF"><center><input type="submit" value="'.$row['id'].'" name="Log" title="'.$msg.'"></center></td> '; 
    
    Ma title non viene mai valorizzato.

    Allora per aggirare il problema ho provato a prendere un'altra strada e cioè valorizzare un input hidden come segue:
    Codice:
    echo '<input type="hidden" value="'.$msg.'" name="Log"> '; 
    
    ma a questo punto riesco a vedere solo la prima delle righe della query.
    $msg dopo la query è uguale a "STEFANO 2017-03-06 09:54:29 APPROVATO DAVIDE 2017-03-06 10:50:48 INSERITO" mentre value dell'input hidden prende solo il valore "STEFANO 2017-03-06 09:54:29 APPROVATO" ma non il resto.

    Il fatto è che se io scrivo questo codice:
    Codice:
    $msg="STEFANO 2017-03-06 09:54:29 APPROVATO DAVIDE 2017-03-06 10:50:48"; 
    echo '<input type="hidden" value="'.$msg.'" name="Log"> '; 
    
    allora l'input hidden viene valorizzato correttamente, eppure $msg arriva in quel punto con lo stesso identico valore del codice sopra.
    Insomma non riesco a capire :(
    C'è qualcuno che riesce a dirmi dove sbaglio?
    Grazie.

    Stefano
     
  2. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Siccome ho riscontrato lo stesso problema anche in un'altra pagina, riporto il problema perchè forse da qui è più semplice capire:
    Codice:
    echo '<input type="submit" value="'.$record_id.'" title="Elimina record" name="Elimina" formaction="eliminaRecord.php"/>';
    echo '  <input type="hidden" name="source" value="'.$record_id.'">';
    
    $record_id ha sempre il valore ricavato da una query.

    A questo punto, succede che se vado a vedere i parametri passati tramite POST, ho questo risultato:
    L'operazione viene ripetuta per ogni record, e su ogni riga [Elimina] ha il valore corretto con l'id del record, mentre [source] è sempre = 57.
    Cosa c'è di sbagliato?
    Grazie.

    Stefano
     
    Ultima modifica: 7 Marzo 2017
  3. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    Ciao, stai sbagliando il ciclo while. Nel primo esempio ad ogni iterazione sovrascrivi la variabile $msg. Nel secondo gli echo dovrebbero essere all'interno del ciclo.
     
  4. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Scusa, ho riportato così per abbreviare la cosa, comunque effettivamente gli echo html sono all'interno del ciclo while.
    Quello che non mi spiego (parlando del mio secondo post) è perchè mi viene riportato nell'hidden un valore inventato e non quello di $record_id.
    Ti dirò di più, ho appena provato a trasformare l'hidden in submit e mi sono accorto che in questo caso i valori che prende sono corretti, è poi durante il passaggio di valori tramite POST che [source] prende sempre il valore 57.
     
  5. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    prova a cambiare il name cosi
    Codice:
    name="source[]"
     
  6. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Ma così mi passa come source l'intero array:
    Io ho bisogno invece che [source] abbia un singolo valore che è l'id del record di quella riga.
    Praticamente viene creata una tabella come quella sotto dove ci sono 2 pulsanti (edit e delete).
    Con edit non ho avuto problemi perchè devo passare solo il numero del record, mentre con delete devo passare due parametri, ma questo secondo mi sta facendo impazzire.
    upload_2017-3-7_11-27-0.png
    S
     
  7. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    posta l'intero ciclo che ti crea la tabella perchè non ho capito molto bene come lo hai scritto
     
  8. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Lo stavo facendo quando mi hai scritto...
    Facendo ulteriori prove ho scoperto che il 57 non è un numero inventato ma è l'id dell'ultimo record che viene visualizzato nella tabella.
    Infatti ho creato un nuovo record che ha id 63 ed ora il 57 è diventato 63.
    Ecco il ciclo:
    Codice:
    while($row= $result->fetch_array(MYSQLI_ASSOC))
    {
        $record_id=$row['id'];
    
        echo '<td style="width=540px; ">'.$row[FIELD].'</td>';
        echo  '<td bgcolor="#FFFFFF">
            <center><input type="submit" value="'.$record_id.'" name="id" title="Modifica"
               style=\'background : url(../resource/edit.png); background-repeat : no-repeat; width : 36px; height : 36px;  text-indent:-9999px;\'/></center></td>
               
               <td>
               <center><input type="submit" value="'.$record_id.'" title="Elimina record" name="Elimina" formaction="eliminaRecord.php";
          style=\'background : url(../resource/delete.png); background-repeat : no-repeat; width : 36px; height :36px;\'/></center>
               <input type="hidden" name="source" value="'.$record_id.'"/> 
               </td>';
        }
    
    Quello che non capisco è perchè se il submit prende il valore corretto di $record_id, l'hidden deve prendere il valore dell'ultimo record?
     
  9. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    il form lo apri prima del ciclo ? dovresti aprilo e chiuderlo all'interno del ciclo in modo che ogni riga abbia il suo
     
  10. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Il form lo apro prima, quindi ce ne uno solo.
    Provo a metterlo dentro al ciclo.
    Ti faccio sapere.
    Intanto grazie :)
     
  11. stefanoxjx

    stefanoxjx Nuovo Utente

    Registrato:
    24 Febbraio 2017
    Messaggi:
    30
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Sesso:
    Maschio
    Yeah, funziona :)
    Grazie infinite.
     
    A criric piace questo elemento.
Sto caricando...

Condividi questa Pagina