Comportamento strano php/html...

stefanoxjx

Utente Attivo
24 Feb 2017
46
1
8
56
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
 
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:
Array ( [Elimina] => 58 [source] => 57)

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:
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.
 
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.
 
prova a cambiare il name cosi
Codice:
name="source[]"
 
Ma così mi passa come source l'intero array:
Array ( [Elimina] => 58 [source] => Array ( [0] => 58 [1] => 50 [2] => 48 [3] => 37 [4] => 46 [5] => 35 [6] => 40 [7] => 33 [8] => 32 [9] => 31 [10] => 47 [11] => 51 [12] => 60 [13] => 25 [14] => 18 [15] => 22 [16] => 11 [17] => 10 [18] => 12 [19] => 19 [20] => 34 [21] => 17 [22] => 59 [23] => 14 [24] => 49 [25] => 56 [26] => 15 [27] => 61 [28] => 1 [29] => 3 [30] => 6 [31] => 8 [32] => 55 [33] => 57 ) )
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
 
posta l'intero ciclo che ti crea la tabella perchè non ho capito molto bene come lo hai scritto
 
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?
 
il form lo apri prima del ciclo ? dovresti aprilo e chiuderlo all'interno del ciclo in modo che ogni riga abbia il suo
 
Il form lo apro prima, quindi ce ne uno solo.
Provo a metterlo dentro al ciclo.
Ti faccio sapere.
Intanto grazie :)
 

Discussioni simili