- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aggiornamento dati che non avviene
-
Aggiornamento dati che non avviene
Salve ragazzi,
ho realizzato questo form con i dati di una classifica per l aggiornamento di quest ultima...il problema è che quando clicco su Aggiorna mi dice con l alert "Aggiornamenti dati avvenuto.." in realtà però non mi fanessun aggiornamento..:?Questa è la pagina del form con la classifica
[php]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="description" content="Salernitana.oRg - Classifica Campionato Serie B 2009-2010" />
<meta name="keywords" content="salerno,salernitana,salernitano,calcio,tifosi,tifoso,arechi,tifo,ultras,ultrà,ultragranata,cori,merino,soligo,salernitana1919,salernitanaforum,ultrasalerno,ultrassalerno,campionato," />
<meta name="Generator" content="Questo sito e stato realizzato da Domenico/><title></title>
<link rel="stylesheet" type="text/css" href="iscrizione.css" />
<!--[if IE]>
<script type="text/javascript" src="suckerfish.js"></script>
<![endif]--><script type="text/javascript" src="glossy.js"></script> <script src="css_browser_selector.js" type="text/javascript"></script>
<style>
a
{
text-decoration: none;
}</style>
</head>
<body>
<div id="container">CONTAINER<div id="header">
<ul id="nav">
<li><a href="#"><strong>Home</strong></a> <ul> <h4>Rubriche</h4> </ul></li>
<li>
<a href="#"><strong>Campionato</strong></a>
<ul><li><a href="#">Classifica Serie B</a></li>
<li><a href="#">Prossimo turno</a></li>
<li><a href="#">Ultimo Turno</a></li>
<li><a href="#">Il cammino Granata</a></li>
<li><a href="#">Classifica marcatori</a></li>
<li><a href="#">Statistiche</a></li>
<li><a href="#">La Rosa</a></li>
</ul></li><li>
<a href="#"><strong>News</strong></a>
<ul>
<li><a href="#">Ultime dal campo</a></li>
<li><a href="#">Probabile Formazione</a></li>
<li><a href="#">Calcio Mercato</a></li></ul></li>
<li>
<a href="#"><strong>Rubriche</strong></a>
<ul>
<li><a href="#">Il muro Granata</a></li>
<li><a href="#">L angolo del critico</a></li>
<li><a href="#">L asino Stagionale</a></li></ul></li>
<li>
<a href="#"><strong>Ultras</strong></a>
<ul>
<li><a href="#">La Storia Ultrà</a></li>
<li><a href="#">Gruppi Ultras</a></li>
<li><a href="#">Iniziative</a></li>
<li><a href="#">Coereografie Granata</a></li>
<li><a href="#">Cori ultras</a></li>
<li><a href="#">Ultras Speciali</a></li>
</ul></li>
<li><a href="#"><strong>Info</strong></a> <ul>
<li><a href="#">Siti Amici</a></li>
<li><a href="#">Ricevitorie Lottomatica</a></li>
<li><a href="#">Listino biglietti</a></li>
<li><a href="#">Contattaci</a></li>
<li><a href="#">Segnalazioni</a></li>
<li><a href="#">Faq</a></li></li>
</ul>
<li><a href="iscriviti.php"><strong>Iscriviti</strong></a></li></div>
<div id="nav">NAV
<br><font class="fontprofilo" ><br>
Mostra le foto in cui ci sono io(7)<br><br>
Modifica il mio profilo</font>
<p></p>
<li><center><font class="fontprofilo"><b>Utenti a caso</b></center></font>
</li></ul></div>
<div id="content" style="width: 568px; height: 459px"><center><b>Classifica Campionato Serie B Tim 2009-2010</b></center>
<center>
<table width="490"border="0">
<tr>
<td align="right"width="49px"colspan="2" >
<font class="fontprofilo">Squadra</td>
<td align="center"width="54px"colspan="2" >
<font class="fontprofilo">Punti</td>
<td width="54px"colspan="2">
<font class="fontprofilo"><center>Vinte</center></td>
<td width="50px"colspan="2">
<font class="fontprofilo"><center>Perse</center></td>
<td width="50px"colspan="2">
<font class="fontprofilo"><center>Gol Fatti</center></td>
<td align="left"width="50px"colspan="2">
<font class="fontprofilo">Gol Subiti</td></tr> </table> <?
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'];?>
<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="squadra" tabindex="7" size="1"/></td>
<td width="50px"colspan="2">
<center>
<input type="text" style="font-family:tahoma; font-size:11px;"name="campo[4]" value="<? echo "$perse"?>" id="punti" tabindex="7" size="1"/></td></center>
<td width="50px"colspan="2">
<center>
<input type="text" style="font-family:tahoma; font-size:11px;"name="campo[5]" value="<? echo "$golfatti"?>" id="squadra" tabindex="7" size="1"/></td></center>
<td width="50px"colspan="2">
<center>
<input type="text" style="font-family:tahoma; font-size:11px;"name="campo[6]" value="<? echo "$golsubiti"?>" id="punti" tabindex="7" size="1"/></td></center>
<input type="hidden" name="campo[7]" value="<? echo "$id"?>" /></table>
<?
//qui chiudo il ciclo while
}
?><center><td width="64"colspan="2">
<input type="submit" style="font-family:tahoma; font-size:11px;" size="1" value="Aggiorna" /></form></td></div></center>
</font><div id="extra"><font class="fontprofilo"><b>Login</b></font><br>
</a>
<b>Recupero Password</b></font>
</form>
</div>
<div id="footer">FOOTER</div>
</div>
</body>
</html>[/php]Questa invece è la pagina che dovrebbe aggiornare
[php]
<META HTTP-EQUIV="REFRESH" CONTENT="10; URL=/index2.php">
<title>Aggiornamento elabora</title></head><link rel="stylesheet" type="text/css" href="iscrizione.css" />
<center><font class="fontprofilo"><b>Elaborazione classifica avvenuta!</b></a></font></center>
<?php//Apro la sessione e...
session_start();include "config.php"; // file di connessione al Db
// selezioni la tabella
mysql_select_db('Sql310655_1') or die("Errore apertura database: " . mysql_error());// recuperi i dati e separi l'array POST in tanti array quanti sono i campiPOST che invii:
// 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) {
$id = mysql_real_escape_string($keys[7]);
$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]);// fai la query di update
$strsql="UPDATE classifica SET punti='$punti', vittorie='$vinte', perse='$perse', golfatti='$golfatti', golsubiti='$golsubiti' WHERE id = '$id'";
@mysql_query("$strsql") or die("Errore query database: " . mysql_error());} //chiudi il foreach
// metti il messaggio di successo
echo "<script>
alert("Aggiornamento dati avvenuto..");</script>";
[/php]Con un solo pulsante Aggiorna dovrebbe effettuarmi i cambiamenti su ognuno degli id specificati ma tutto ciò non avviene come mai?
-
Ciao carlitos1982,
penso che l'errore avvenga nel ciclo foreach dove recuperi i valori dell'array $recupero.
Prova così, recuperando direttamente i valori, visto che conosci gli indici:[php]
$id = mysql_real_escape_string($recupero[7]);
$squadra= mysql_real_escape_string($recupero[1]);
$punti = mysql_real_escape_string($recupero[2]);
$vinte = mysql_real_escape_string($recupero[3]);
$perse = mysql_real_escape_string($recupero[4]);
$golfatti= mysql_real_escape_string($recupero[5]);
$golsubiti = mysql_real_escape_string($recupero[6]);
[/php]
-
@mirkoagrati said:
Ciao carlitos1982,
penso che l'errore avvenga nel ciclo foreach dove recuperi i valori dell'array $recupero.
Prova così, recuperando direttamente i valori, visto che conosci gli indici:[php]
$id = mysql_real_escape_string($recupero[7]);
$squadra= mysql_real_escape_string($recupero[1]);
$punti = mysql_real_escape_string($recupero[2]);
$vinte = mysql_real_escape_string($recupero[3]);
$perse = mysql_real_escape_string($recupero[4]);
$golfatti= mysql_real_escape_string($recupero[5]);
$golsubiti = mysql_real_escape_string($recupero[6]);
[/php]Ho trovato il problema ma non riesco a risolverlo...praticamente dando un echo delle variabili che recupero ho notato che non mi recupera il campo relativo all id....come mai?
-
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