- Home
- Categorie
- Coding e Sistemistica
- Coding
- Aggiornamento dati che non avviene
- 
							
							
							
							
							Aggiornamento dati che non avvieneSalve 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.puntiDESC
 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.puntiDESC
 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