• 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: