Visualizzazione risultati 1 fino 10 di 10

Discussione: [PHP/TXT] Errore Notice: Undefined offset

  1. #1
    Guest

    Predefinito [PHP/TXT] Errore Notice: Undefined offset

    Ciao!
    Ho questo script php (lo posto tutto):

    Codice PHP:

    <?php
    $var
    = array_reverse( file("./pag/DB_news.txt") );
    ?>

    <?php
    if (isset($_GET['pag'])){
    $id=$_GET['id'];
    if(
    $id==0){
    $id=1;
    }
    }else{
    $id=1;}
    $mn=8;
    $mn=$mn*2;
    $zm=$id*$mn;
    $zxm=$zm-$mn;
    $xk=1;
    $cnt=count($var);
    for(
    $i=$zxm;$i<$zm;$i++){
    if (
    trim($var[$i]) != "" ) {
    $lista = explode("|",$var[$i]);
    if(
    $xk==1){
    $xk=0;
    }else{
    $xk=1;
    }
    ?>

    <img src="<?php echo $lista[4]; ?>" alt="" width="70" height="70" align="left">

    <h1><b>
    <?php echo $lista[1]; ?>
    </b></h1>
    <p>Postato da:<b><?php echo $lista[2]; ?></b> il <i><?php echo $lista[3]; ?></i></p>
    <p><br>
    <?php echo $lista[5]; ?>
    <?php
    }
    }
    $npg=$cnt/$mn;
    if(
    is_int($npg)){
    $nxp=$npg;
    }else{
    settype($npg,"int");
    $nxp=$npg+1;
    }
    ?>
    <br>
    <br>
    <p align="right">
    <?php
    for($x=1;$x<=$nxp;$x++){
    echo
    "<a href=\"./?pag=home&id=$x\"> [$x] </a>";
    }
    ?>
    </p>

    </p>
    Dovrebbe prendere i valori da DB_news.txt così strutturato:

    Codice:
    1|Titolo|Nome|Data|images/avatar_maca.png|Testo da inserire ;)
    Per fortuna tutto funziona ma purtroppo mi da 15 errori (notice) che non vorrei eliminare con un semplice Error_reporting ma in modo radicale:


    Citazione Originalmente inviato da errori_script
    Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 2 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 3 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 4 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 5 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 6 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 7 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 8 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 9 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 10 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 11 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 12 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 13 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 14 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

    Notice: Undefined offset: 15 in C:\Program Files\EasyPHP 2.0b1\www\wow\pag\home.php on line 20

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Devi tenere conto che se carichi in un array un file con la funzione file, l'array va da 0 a numero righe del file meno 1.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    oddio che codice una serie di consigli, se hai voglia di imparare a scrivere codice migliore:
    • Nomi sensati alle variabili, se non per te, almeno per il prossimo che dovrà leggere il tuo codice. Chiamare una variabile $var è la cosa più oscena dell'emisfero boreale. Le variabili di tre lettere sono al secondo posto in classifica.
    • Indenta: spazi, ed un modo consistente di allineare i blocchi: uno qualunque, basta che rimanga uguale nell'intero programma.
    • Funzioni di libreria: il php è un linguaggio potente perché ti mette a disposizione una grande quantità di funzioni - non di soli for vive il programmatore. Prova a leggere la descrizione di array_slice() e foreach ad esempio, renderanno assai più semplice il tuo script.
    • Controlli di errore: è tanto bello scrivere codice compatto, ma poi quando non va? E.g., prendiamo la tua prima riga:
      Codice PHP:
      $var = array_reverse( file("./pag/DB_news.txt") );
      E se file() fallisce e ritorna false ? Tutto il resto del programma va avanti e mille errori appaiono, invece di uno solo! Allora perché non fare uno sforzo e scrivere
      Codice PHP:
      if ($dbNews = file("./pag/DB_news.txt")) {
      $dbNews = array_reverse( $dbNews );
      } else {
      die (
      "\n - Impossibile aprire DB_news.txt!");
      }
    Ultima modifica di dreadnaut : 22-12-2007 alle ore 16.05.04

  4. #4
    Ospite Guest

    Predefinito

    Inoltre, metti tra gli apici (') gli indici dei vari array, altrimenti questi vengono considerati come costanti e, oltre a rallentare l'interpretazione dello script, vengono segnalati come warning.

    Ciao!

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da probid Visualizza messaggio
    Inoltre, metti tra gli apici (') gli indici dei vari array, altrimenti questi vengono considerati come costanti e, oltre a rallentare l'interpretazione dello script, vengono segnalati come warning.
    uh? dove? cosa intendi?

  6. #6
    Ospite Guest

    Predefinito

    @Dread:
    Codice PHP:
    <?php echo $lista[4]; ?>
    non sarebbe meglio:
    Codice PHP:
    <?php echo $lista['4']; ?>
    ^?

    Ciao!

  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per i numeri non si usano gli apici, ma solo per le stringhe.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    uhm, no, non necessario e direi che non porta ad alcun miglioramento. Cfr. il primo esempio nell'introduzione agli array.

    solo le stringhe sconosciute (e non precedute da $) vengono forzate a costanti (con relativo warning), mentre i numeri sono... numeri, nessun problema.

  9. #9
    Guest

    Predefinito

    XD ora controllo.
    Grazie dei consigli ma quello è stato fatto per essere usato "da nessuno" quindi non necessitava di aggiunte di bello stile ^^
    Infatti funziona perfettamente tranne qualche notice :P

    Funcool credo abbia centrato il problema... come posso risolverlo ?
    Ultima modifica di comunitavirtuali : 23-12-2007 alle ore 00.34.35

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Potresti provare a modificare questa riga:
    Codice PHP:
    for($i=$zxm;$i<$zm;$i++){
    In questo modo:
    Codice PHP:
    for($i=$zxm;$i<$zm-1;$i++) {
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •