- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aggiornamento dati che non avviene
-
Ciao,
prova così:
[PHP]
<input type="hidden" name="campo[7]" value="<?php echo $id;?>" />
[/PHP]Facci sapere.
Ciao
-
Ok,stavolta davvero ci sono nell errore cardine...
Ho dato l echo alle variabile recuperate cosi'..[PHP]
// nel tuo caso sono sette
$recupero = array_chunk($_POST['campo'],7);// cicli l'array recupero ed assegni il valore degli elementi alle tue variabili applicando la funzione
// mysql_real_escape_string()
foreach ($recupero as $keys) {$squadra = mysql_real_escape_string($keys[1]); $punti = mysql_real_escape_string($keys[2]); $vinte = mysql_real_escape_string($keys[3]); $perse = mysql_real_escape_string($keys[4]); $golfatti= mysql_real_escape_string($keys[5]); $golsubiti = mysql_real_escape_string($keys[6]); $id = mysql_real_escape_string($keys[7]); echo"$squadra,$punti,$vinte,$perse,$golfatti,$golsubiti,id$id";
[/PHP]
I dati vengono recuperati però sono fuori ordine...nel senso che nella variabile $squadra mi da il valore dei punti,nella variabile $punti mi da il valore delle partite vinte ect...come mai c'è questo sballamento di valori?
-
Ciao,
se ti trovi tutto spostato di un indice potrebbe essere dovuto agli indici dell'array: tu hai scelto di farli partire da uno, ma PHP conta da zero.Può essere questo il motivo?
-
Si,ho cominciato a farlo contare da 0 è pare che funzioni per ora...:)
-
è spuntato un altro problema...l aggiornamento avviene solo nei dati presenti all ultima riga:?
-
Ciao,
è corretto.Se ci pensi te hai distinto le colonne ( indice diverso per ognuna) di ogni riga ma non distingui le righe,
quindi anche se tutti i parametri vengono inviati dal form, PHP crea sempre lo stesso array (il nome è sempre uguale) per ogni riga e l'ultimo sovrascrive tutti gli altri.Un array multi-dimensionale sarebbe la soluzione.
Devi discriminare anche le righe. oltre alle colonne.
Spero di essermi spiegato.
-
Mmm..devo aggiungere un altro campo alla tabella che identifichi le righe?Poi aggiungere nella where della query anche questo ultimo campo??
-
Ciao,
nella query dovrebbe bastarti l'ID del record, se è veramente univoco.Devi solo identificare le righe nel trasporto HTTP dal form allo script PHP che esegue l'UPDATE.
-
Si l id è univoco,per favorepotresti farmi un esempio di come identificare queste righe??
Non ho mai trattato gli array multidimensionali stavo proprio ora leggendo qualcosa a riguardo...
-
Ciao,solitamente io in questi casi ciclando sul dataset utilizzo come suffisso l'indice del ciclo.
Es:
[php]for($i=0; i<count($array);i++){
echo '<input type="text" name="campoA_' . $i . '" value="' . $array* . '"/>';
}
echo '<input type="hidden" name="numero_righe" value="' . $i . '"/>';
[/php]In questa maniera, utilizzando il campo nascosto 'numero_righe' so anche fino a che numero di riga aspettarmi valori in arrivo dal FORM HTML.
-
Dovrei fare qualcosa simile le form?
[php]
<?
include "config.php"; // file di connessione al Db//seleziono i campi da visualizzare per singolo utente
$strsqlultima="SELECT *
FROMclassifica
ORDER BYclassifica
.punti
DESC
LIMIT 0 , 30";
$query1=@mysql_query("$strsqlultima") or die("Errore query database: " . mysql_error());while($row=mysql_fetch_array($query1))
{
$squadra=$row['squadra'];
$punti=$row['punti'];
$vittorie=$row['vittorie'];
$perse=$row['perse'];
$golfatti=$row['golfatti'];
$golsubiti=$row['golsubiti'];
$id=$row['id'];
echo "$id";for($i=0; i<count($row);i++){
echo '<input type="text" name="Punti' . $i . '" value="' . $row* . '"/>';
}
echo '<input type="hidden" name="numero_righe" value="' . $i . '"/>';echo '<input type="text" name="Vittorie' . $i . '" value="' . $row* . '"/>';
}
echo '<input type="hidden" name="numero_righe" value="' . $i . '"/>';?>
<form name="signup" id="signup" method="post" action="aggiornaclassifica.php">
<table width="490">
<td width="52"colspan="2">
<input type="text" style="font-family:tahoma; font-size:11px;" name="campo[1]" value="<? echo "$squadra "?>" id="squadra" tabindex="7" size="9"/></td>
<td width="50px"colspan="2">
<input type="text" style="font-family:tahoma; font-size:11px;"name="campo[2]" value="<? echo "$punti"?>" id="punti" tabindex="7" size="1"/></td>
<td width="50px"colspan="2">
<input type="text" style="font-family:tahoma; font-size:11px;"name="campo[3]" value="<? echo "$vittorie"?>" id="vittorie" tabindex="7" size="1"/></td>[/php]
-
Ciao carlitos1982,
provo a farti un esempio più o meno completo.Nella pagina PHP dove esponi i dati letti dal DB, io farei così:
[php]<form name="signup" id="signup" method="post" action="aggiornaclassifica.php">
<?php
$i=0;
while($row=mysql_fetch_array($query1))
{
?>
<input type="hidden" name="id_<?php echo $i;?>"
value="<?php echo $row['id'];?>">
<input type="text" name="squadra_<?php echo $i;?>"
value="<?php echo $row['squadra'];?>"><br/>
<input type="text" name="punti_<?php echo $i;?>"
value="<?php echo $row['punti'];?>"><br/>
<input type="text" name="vittorie_<?php echo $i;?>"
value="<?php echo $row['vittorie'];?>"><br/>
<input type="text" name="perse_<?php echo $i;?>"
value="<?php echo $row['perse'];?>"><br/>
<input type="text" name="golfatti_<?php echo $i;?>"
value="<?php echo $row['golfatti'];?>"><br/>
<input type="text" name="golsubiti_<?php echo $i;?>"
value="<?php echo $row['golsubiti'];?>">
<?php
}
?>
<input type="hidden" name="numsquadre" value="<?php echo $i;?>">
<input type="submit">
</form>
[/php]Poi nella pagina che riceve i dati del form, la aggiornaclassifica.php,
catturerei i dati in POST in questa maniera:
[php]
$numsquadre = $_POST['numsquadre'];for($i=0; $i<$numsquadre; i++){
ISTRUZIONE UPDATE CON I VALORI DI:
$POST['id'.$i]; //recuperi l'id della squadra n (e del record)
$POST['squadra'.$i]; //recuperi il nome della squadra n
$POST['punti'.$i]; //recuperi i punti della squadra n
$POST['vittorie'.$i]; //recuperi i punti della squadra n
.........
}
?>
[/php]Penso che questa maniera sia conveniente in quanto non utilizza alcun array quindi è più comprensibile e
facile da implementare e mantenere.Spero di non aver commesso errori,
perchè non ho avuto modo di testarla.:D