• User Attivo

    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 *
    FROM classifica
    ORDER BY classifica.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?


  • User Attivo

    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]:ciauz:


  • User Attivo

    @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]:ciauz:

    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?


  • User Attivo

    Ciao,
    prova così:
    [PHP]
    <input type="hidden" name="campo[7]" value="<?php echo $id;?>" />
    [/PHP]

    Facci sapere.

    Ciao


  • User Attivo

    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?


  • User Attivo

    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?

    :ciauz:


  • User Attivo

    Si,ho cominciato a farlo contare da 0 è pare che funzioni per ora...:)


  • User Attivo

    è spuntato un altro problema...l aggiornamento avviene solo nei dati presenti all ultima riga:?


  • User Attivo

    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.

    :ciauz:


  • User Attivo

    Mmm..devo aggiungere un altro campo alla tabella che identifichi le righe?Poi aggiungere nella where della query anche questo ultimo campo??


  • User Attivo

    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.

    :ciauz:


  • User Attivo

    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...


  • User Attivo

    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.

    :ciauz:


  • User Attivo

    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 *
    FROM classifica
    ORDER BY classifica.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]


  • User Attivo

    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

    :ciauz: