Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    5

    Elminazione messaggi "Undefined offset: X" in visualizzazione array

    Chiedo aiuto per capire come poter eliminare quei messaggi. L'operazione è la seguente. Carico dati da un db mysql, i dati vengono posizionati in una matrice (array bidimensionale) con colonne i giorni della settimana e le righe determiante fasce orarie. Accade che non tutte le fasce orarie in ogni giorno della settimana ci sia qualcosa da inserire: quando vado a visualizzare l'array ottengo, per ogni elemento non inizializzato il messaggio:

    Notice: Undefined offset: 3 in <nome modulo>.php on line 96

    e cosi via, per ogni elemento della matrice non inizializzato.

    Qualcuno mi sa dire se posso evitare di inizializzare la matrice a "blank" per evitare il messaggio: magari con qualche impostazione generale del PHP.

    Grazie fin da ora.

    Saluti.

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Essendo una notice nel file php.ini potresti disattivare il messaggio con tilde notice. Comunque potresti anche verificare se la variabile è buona con il comando isset($var[$giorno][$ora]) prima di procedere con l'utilizzo della stessa

  3. #3
    Stoppare la visualizzazione dei NOTICE e' sbagliato come principio. La programmazione deve essere senza bug per quanto possibile, mentre una variabile o indice non esistente ma richiamato dallo script e' formalmente un possibile bug.

    Devi semplicemente controllare l'esistenza di questa variabile o indice che sia. Es. con un operatore ternario:

    Codice PHP:
    // Example usage for: Ternary Operator
    $action = (empty($_POST['action'])) ? 'default' $_POST['action']; 
    $_POST['action'] e' empty? cioe' vuoto, mancante, nullo
    allora in $action metti un default
    else mettici $_POST['action']

    Non credere a quelli che ti dicono di eliminare il controllo dei notice nel php.ini. Sarebbe come chiudere gli occhi di fronte a un problema pensando cosi' che vengano risolti solo perche' non li vedi piu'. Son buchi di programmazione che devono essere chiusi.


    ps... esclusi i presenti ovviamente.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    5
    Originariamente inviato da piero.mac
    Stoppare la visualizzazione dei NOTICE e' sbagliato come principio. La programmazione deve essere senza bug per quanto possibile, mentre una variabile o indice non esistente ma richiamato dallo script e' formalmente un possibile bug.

    Devi semplicemente controllare l'esistenza di questa variabile o indice che sia. Es. con un operatore ternario:

    Codice PHP:
    // Example usage for: Ternary Operator
    $action = (empty($_POST['action'])) ? 'default' $_POST['action']; 
    $_POST['action'] e' empty? cioe' vuoto, mancante, nullo
    allora in $action metti un default
    else mettici $_POST['action']

    Non credere a quelli che ti dicono di eliminare il controllo dei notice nel php.ini. Sarebbe come chiudere gli occhi di fronte a un problema pensando cosi' che vengano risolti solo perche' non li vedi piu'. Son buchi di programmazione che devono essere chiusi.


    ps... esclusi i presenti ovviamente.
    L'idea dell'operatore ternario è ottima, io da vecchio programmatore C tendo a pensare che "solo" il C abbia determinati costrutti.
    Grazie per l'ottima indicazione.
    Farò così!

  5. #5
    error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE);

  6. #6
    In generale l'ideale (secondo me) e' sempre visualizzare a video tutti i messaggi di errore quando si sviluppa; in produzione conviene invece tenere attivati tutti i messaggi di errore ma mostrare sempre un messaggio d'errore generico a video e farsi inviare via mail o scrivere in qualche altro modo piu' sicuro il messaggio d'errore vero.
    Eugenio
    www.dadabik.org - DaDaBIK database front-end

  7. #7
    anche a me da lo stesso errore solo che ho replicato database e sito su un PC prendendo il codice già funzionante da un altro.

    Notice: Undefined offset: 3 in /opt/lampp/htdocs/progetto/index.php on line 52

    Notice: Undefined offset: 4 in /opt/lampp/htdocs/progetto/index.php on line 52
    sul Macbook di partenza usando Xampp non mi da problemi e non mi ha mai segnalato questo tipo di errori.
    ho importanto il tutto su Linux Ubuntu sempre utilizzando come server locale Xampp e segnala quell' errore.
    non ho proprio idea del perchè...

    il mio codice è questo.
    Codice PHP:
           <?php
                             
    include_once('db_connect.php');
                            
    $query_ar"SELECT artist, title FROM Record ORDER BY code DESC ";

                            
    $result_armysql_query($query_ar)
                            or die(
    "error ar");
                            
                            while (
    $result_row_ar=mysql_fetch_row(($result_ar))){
                            
    $ar_array[]=$result_row_ar[1]." - ".$result_row_ar[0];
                            
                            }
                            
                            for(
    $index=0$index<5$index++){
                            echo 
    "[*]".$ar_array[$index]."";
                            
                            }
                            
    ?>

    Codice PHP:
    <?php
                            
                            
                            
    include_once('db_connect.php');
                            
    $query_random="SELECT userName FROM User";
                            
    $result_random=mysql_query($query_random);
                            if(!
    $result_random){
                            echo 
    'ERROR
    '
    ;
                            die(
    "Could not query the database 
    "
    .mysql_error());
                            
                            }
                            
                            while (
    $result_row=mysql_fetch_row(($result_random))){
                            
                            
    $artist_array[]=$result_row[0];
                            
                            }
                            
                            
    shuffle($artist_array);
                            for(
    $index=0$index<5$index++){
                            
                            echo 
    "[*]".$artist_array[$index]."";
                            
                            }
                            
    ?>

    Codice PHP:
    <?php
                        
                            
                               
    include_once('db_connect.php');
                            
    $query_comment"SELECT commentText, commentDate FROM Comment ORDER BY code DESC ";

                            
    $result_commentmysql_query($query_comment)
                            or die(
    "error");
                            
                            while (
    $result_row_comment=mysql_fetch_row(($result_comment))){
                            
    $comment_array[]=$result_row_comment[1]." \"".substr($result_row_comment[0],0,150)."...\"";
                            
                            }
                            
                            for(
    $index=0$index<5$index++){
                            echo 
    "[*]".$comment_array[$index]."";
                            
                            }
                            
    ?>
    Codice PHP:
    <?php
                             
    include_once('db_connect.php');
                            
    $query_rm"SELECT Record.title, Record.artist, AVG(Voting.vote) FROM Record JOIN Voting ON Record.code=Voting.record WHERE MONTH(Voting.votingDate)=MONTH(CURDATE()) GROUP BY Record.title ORDER BY AVG(Voting.vote) DESC ";

                            
    $result_rmmysql_query($query_rm)
                            or die(
    "error rm");
                            
                            while (
    $result_row_rm=mysql_fetch_row(($result_rm))){
                            
    $rm_array[]=$result_row_rm[0]." - ".$result_row_rm[1]." - ".substr($result_row_rm[2],0,3);
                            
                            }
                            
                            for(
    $index=0$index<5$index++){
                            echo 
    "[*]".$rm_array[$index]."";
                            
                            }
                            
    ?>

    Codice PHP:
    <?php
                             
    include_once('db_connect.php');
                            
    $query_am"SELECT artist, title FROM Record ORDER BY rating DESC ";
                            
                            
    $result_ammysql_query($query_am)
                            or die(
    "error am");
                            
                            while (
    $result_row_am=mysql_fetch_row(($result_am))){
                            
    $am_array[]=$result_row_am[1]." - ".$result_row_am[0];
                            
                            }
                            
                            for(
    $index=0$index<5$index++){
                            echo 
    "[*]".$am_array[$index]."";
                            
                            }
                            
    ?>
    www.myspace.com/deejaydariuspisa

    http://lanozionedeltempo.wordpress.com/

  8. #8
    il perchè lo puoi intuire da quanto afferma piero.mac: probabilmente sul mac il display degli errori è disabilitato, mentre su xampp è abilitato, per questo nella versione che gira su xampp visualizzi le notifiche.

    Considera che la strada da seguire dovrebbe essere la somma di quelle proposte da piero.mac e eugenio_2: in produzione disabilitare le notifiche (per evitare la visualizzazione di informazioni sensibili) mentre attivarle in fase di sviluppo aiuta a produrre codice più pulito e corretto.


    ps.

    ho importanto il tutto su Linux Ubuntu sempre utilizzando come server locale Xampp
    dimmi che non l'hai fatto davvero...non hai installato xampp su ubuntu vero?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    5
    Originariamente inviato da maje

    ps.


    dimmi che non l'hai fatto davvero...non hai installato xampp su ubuntu vero?
    PERCHE' ?!?!? L'ho fatto anch'io... hosbagliatoqualcheccosa?

  10. #10
    bè, normalmente se usi linux metti su una bella piattaforma LAMP, perchè andare a metterci xampp?

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.