Undefined offset in php

  • Creatore Discussione Creatore Discussione Rey
  • Data di inizio Data di inizio
ciao
volevo sapere una cosa: quella funzione è inserita in un ciclo?
si potrebbe verificare se $a e/o $b sono vuote e se si dare un return false e nel ciclo saltare quindi le varie istruzione
 
Si è inserito nel for each che abbiamo corretto prima, se punto miosito.it/db.php?sort=cmp_score_desc mi ordina la classifica per punteggio

db.php
PHP:
    include("config.php");

    include("header.php");
    include("commonfunctions.php");

    $file = file($irpg_db);
#    unset($file[0]);
    if (!$_GET['sort'] ||
        (($_GET['sort'] != "cmp_nick_asc") &&
        ($_GET['sort'] != "cmp_nick_desc") &&
        ($_GET['sort'] != "cmp_score_asc") &&
        ($_GET['sort'] != "cmp_score_desc") &&
        ($_GET['sort'] != "cmp_wins_asc") &&
        ($_GET['sort'] != "cmp_wins_desc") &&
        ($_GET['sort'] != "cmp_guesses_asc") &&
        ($_GET['sort'] != "cmp_guesses_desc"))) $_GET['sort'] = "cmp_nick_asc";
    usort($file,$_GET['sort']);
$file_corretto=array();
$file=array_map('trim',$file);
foreach($file as $chiave => $valore){
    if($valore != ""){
        $file_corretto[]=$valore;
    }
} 
[...]


    foreach ($file_corretto as $line) { list($nick,$guesses,$wins,$score, ) = explode(",",trim($line));

      echo "      <tr>\n".
           "        <td nowrap>$nick</td>\n".
           "        <td align=center>$score</td>\n".
           "        <td align=center>$wins</td>\n".
           "        <td align=center>$guesses</td>\n".
           "      </tr>\n";
    }

    echo('</table>');
    include("footer.php");
commonfunctions.php
PHP:
   function cmp_score_desc($a,$b) {
	        var_dump($a);
        var_dump($b); 
        list($nick1,$guesses1,$wins1,$score1)=explode(",",trim($a));
        list($nick2,$guesses2,$wins2,$score2)=explode(",",trim($b));
        if ($score1 == $score2) return ($wins2 <= $wins1) ? -1 : 1;
        return ($score1 > $score2) ? -1 : 1;
    }
 
no aspetta forse mi sono spiegato male, io ho il file db.php che mi genera la classifica con il foreach ($file_corretto as $line), poi la funzione cmp_score_desc($a,$b) ordina la classifica in base al punteggio, non ci sono altri cicli. La funzione viene utilizzata puntando il browser verso db.php?sort=cmp_score_desc
 
Si che la uso, ma le variabili $a e $b ad eccezione di quella funzione non compaiono da nessun'altra parte, stavo anche cercando in maniera da tagliare la testa al toro di modificare il file prima che partano cicli e funzioni con fopen in modo da levare gli a capo finali ma ottengo scarsi risultati.. il txt che fa da database è strutturato così:

PHP:
puffetta,1,0,0
dotto,2,0,0
zorro,5,4,5
superman,1,0,0
hulk,4,1,1
 
sorry per il doppio post, sembra che ci sia riuscito, ti ringrazio borgo per la pazienza, posto il risultato se a qualcuno servisse. C'è un modo per dare priorità a questa porzione di codice? O per forza devo ri-aggiornare la pagina per avere il file modificato?

PHP:
$righe = file("db.txt");
 
foreach ($righe AS $key => $riga)
  {
  list($uno, $due, $tre, $quattro) = explode(",", $riga);
  if (strlen($uno) < 2) 
    unset($righe[$key]);
  }
$fp = fopen("db.txt", "w+");
foreach ($righe AS $key => $riga)
   fputs($fp, $riga);
fclose($fp);
 

Discussioni simili