Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101

    Array Multidimensionali

    eccoci di nuovo... il mio problema riguarda phplot perchè non riesco a creare la struttura come la vuole lui per poter stampare il grafico...

    il mio codice è il seguente:

    $ex = array();
    $a=array();
    $punti=mysql_query("SELECT data,goals,assist,penalita FROM punti where id=$idget ORDER by data") or die(mysql_error());
    $number = mysql_num_rows($punti);
    while($row=mysql_fetch_assoc($punti)){
    foreach ( $row as $test => $ggg )
    array_push($ex,$ggg);
    }

    in questo modo dentro all'array $ex ho le mie variabili

    se faccio echo $ex[0] mi mostra 4 date
    se faccio echo $ex[1] mi mostra 4 punteggi dei goals...
    il codice che uso per fare l'echo è:

    for ($i = 0; $i < 4; $i++) {
    echo "
    " .$ex[$i];
    }

    la struttura corretta per mandare i files a phplot è la seguente:
    $aaa = array(
    array('27.10.2004',3,1,0),
    array('31.11.2004',8,3,1),
    array('13.12.2004',10,6,1),
    array('10.01.2005',11,8,1),
    array('12.02.2005',15,12,1),
    array('17.03.2005',20,15,2),
    array('15.04.2005',22,16,3)
    );
    ho provato a leggere gli array multidimensionali su php.net ma non ne sono venuto a capo... cioè..sono arrivato al punto detto sopra...

    Cerco aiuto per poter andare avanti e districarmi da questo problemino..

    Grazie mille per le risposte.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101
    niente?
    io sono proprio ad un vicolo cieco...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101
    up......

  4. #4
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    Premetto che ho letto molto velocemente...
    Non capisco foreach ( $row as $test => $ggg )...
    Invece di usare push, prova a riempire $ex così
    Codice PHP:
    while($row=mysql_fetch_array($punti)){ 
      
    $ex[]=array($row["data"], $row["goals"], $row["assist"], $row["penalita"]);

    Affinchè la data sia passata nel formato giusto, fai il DATE_FORMAT nella stringa SQL

    Per ciclare l'array $ex e vedere se è quello che vuoi:
    Codice PHP:
    foreach ($ex as $valore){
      foreach (
    $valore as $val){
        echo 
    "$val ";
      }
      echo 
    "<hr>";

    /* Let's Lead the Web to Its Full Potential */

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101
    si così funziona... però la cosa più difficile diventa fare in modo che...

    dal primo row... in quello successivo somma il valore ottenuto a quello di tutti row precedenti...
    esempio:

    $row[goals] in $row[data2] (x indicare la seconda data) = $row[goals][data1]+$row[goals][data2]

    così da avere l'andamento corretto e non solo goals, assist e penalità per ogni partita...

    ma avere la somma dei goals totale fino a quella giornata, la somma degli assist totale fino a quella giornata e la somma delle penalità totale fino a quella giornata.

    per fare in questo modo.. come dovrei fare?

  6. #6
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    Mò ce proviamo...
    Codice PHP:
    // Prima popoliamo l'array come detto sopra
    while($row=mysql_fetch_array($punti)){  
        
    $ex[]=array($row["data"], $row["goals"], $row["assist"], $row["penalita"]); 
    }

    // inizializziamo
    $totGoals=0;
    $totAssists=0;
    $totPenalita=0;

    // incrementiamo
    foreach ($ex as $valore){
        
    // indice 0 è la data che non c'interessa
        
    $totGoals+=$valore[1]; // indice 1 sono i goals
        
    $totAssists+=$valore[2]; // indice 2 sono gli assist
        
    $totPenalita+=$valore[3]; // indice 3 sono le penalità
    }
    // se poi va messo nel grafico, alla fine dovrai aggiungere i totalizzatori
    // come fatto prima in coda all'array
    $ex[]=array("TOTALE"$totGoals$totAssists$totPenalita);

    // poi facciamo un cicletto carino che ti scrive una table html per controllare immediately se è quello che chiedi
    // e così capisci meglio come sono strutturati 'sti array multidimensionali
    echo "<table border=\"1\">";
    echo 
    "<th>Data</th><th>Goals</th><th>Assist</th><th>Penalità</th>";
    foreach (
    $ex as $valore){
      echo 
    "<tr>";
        foreach (
    $valore as $val){
            echo 
    "<td>$val</td>";
        }
      echo 
    "</tr>";
    }
    echo 
    "</table>"
    E' quello che cercavi?
    Prima è meglio che capisci bene gli array multidimensionali indicizzati numericamente, e poi ti puoi addentrare in quelli associativi.
    Ricorda, esistono solo due cose fondamentali e irrinunciabili in PHP: Array e Oggetti.
    Capiti questi, fai quello che vuoi...

    /* Let's Lead the Web to Its Full Potential */

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101
    purtroppo no...

    quello che mi serve è che mi faccia la somma NON TOTALE..ma passo passo...



    faccio un esempio:

    data: 01.2.2004 -> 1 goals, 2 assist, 1 penalità
    data: 02.2.2004 -> 2 goals, 1 assist, 0 penalità
    data: 03.2.2004 -> 0 goals, 0 assist, 0 penalità
    data: 04.2.2004 -> 1 goals, 1 assist, 1 penalità


    mi dovrebbe ritornare un array con:


    data: 01.2.2004 -> 1 goals, 2 assist, 1 penalità
    data: 02.2.2004 -> 2+1 goals, 1+2 assist, 0+1 penalità
    data: 03.2.2004 -> 0+2+1 goals, 0+1+2 assist, 0+1 penalità
    data: 04.2.2004 -> 1+2+1 goals, 1+0+1+2 assist, 1+0+1 penalità


    dove 0+2+1= 3, quindi nell'array ci va la somma non l'espressione...
    ad ogni riga.. mi somma tutti i valori precedenti...



    nel tuo esempio il totale... sarebbe quello di data: 04.2.2004
    che sarebbe praticamente l'ultimo.. dove c'è la somma di TUTTI i dati...

    capisci?

    la cosa che mi serve è un po' più complicata...


    comunque grazie mille per l'aiuto...sei stato veramente gentile!

    Se sai risolvermi questo cruccio... GRANDISSIMO hehehehehe

  8. #8
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    // incrementiamo
    foreach ($ex as $valore){
    // indice 0 è la data che non c'interessa
    $totGoals+=$valore[1]; // indice 1 sono i goals
    $totAssists+=$valore[2]; // indice 2 sono gli assist
    $totPenalita+=$valore[3]; // indice 3 sono le penalità
    }
    // se poi va messo nel grafico, alla fine dovrai aggiungere i totalizzatori
    // come fatto prima in coda all'array
    $ex[]=array("TOTALE", $totGoals, $totAssists, $totPenalita);
    Prova semplicemente a spostare la riga fuori dal ciclo, dentro al ciclo

    Codice PHP:
    // incrementiamo
    foreach ($ex as $valore){
        
    // indice 0 è la data che non c'interessa
        
    $totGoals+=$valore[1]; // indice 1 sono i goals
        
    $totAssists+=$valore[2]; // indice 2 sono gli assist
        
    $totPenalita+=$valore[3]; // indice 3 sono le penalità
        // accodo il valore
        
    $ex[]=array("TOTALE"$totGoals$totAssists$totPenalita);

    se lo fa senza errori... (non l'ho provato) forse risolve i tuoi problemi


  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    101
    si così andrebbe bene.. a parte il fatto che al posto della parola TOTALE ci dovrebbero andare le 4 date...

    e non ci dovrebbero più essere i dati precedenti...

    in poche parole in $ex[] ci dovrebbero essere


    Codice PHP:
    $ex[]=array($row[data], $totGoals$totAssists$totPenalita); 
    e non più i dati precedenti... ma solo quelli nuovi

  10. #10
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    ok, la mia era solo una dritta, non avevo letto...

    comunque risolve il tuo problema.

    Aspetta:
    Codice PHP:
    // Prima popoliamo l'array come detto sopra
    while($row=mysql_fetch_array($punti)){  
        
    $ex[]=array($row["data"], $row["goals"], $row["assist"], $row["penalita"]); 
    }

    // inizializziamo
    $totGoals=0;
    $totAssists=0;
    $totPenalita=0;
    $appo_ex = array();

    // incrementiamo
    foreach ($ex as $valore){
        
    // indice 0 è la data che non c'interessa
        
    $totGoals+=$valore[1]; // indice 1 sono i goals
        
    $totAssists+=$valore[2]; // indice 2 sono gli assist
        
    $totPenalita+=$valore[3]; // indice 3 sono le penalità
        
    $appo_ex[] = array($valore[0],$totGoals$totAssists$totPenalita);
    }

    // poi facciamo un cicletto carino che ti scrive una table html per controllare immediately se è quello che chiedi
    // e così capisci meglio come sono strutturati 'sti array multidimensionali
    echo "<table border=\"1\">";
    echo 
    "<th>Data</th><th>Goals</th><th>Assist</th><th>Penalità</th>";
    foreach (
    $appo_ex as $valore){
      echo 
    "<tr>";
        foreach (
    $valore as $val){
            echo 
    "<td>$val</td>";
        }
      echo 
    "</tr>";
    }
    echo 
    "</table>"
    Spero funzioni... controlla, ho sostituito $ex con $appo_ex dentro alla fase html


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.