Gå til innhold

Undefined index og Undefined offset [Løst]


Gjest Slettet+98128394

Anbefalte innlegg

Gjest Slettet+98128394

Jeg er ganske ny med php og driver og lager meg et lite program til å vise resultater fra en mysql-database. Visningen virker som den skal, men jeg får noen rare meldinger på nettsiden. Disse er som følger:

 

Notice: Undefined index: velg_dato in /data/nettsted/vis.php on line 57

 

Notice: Undefined offset: 2 in /data/nettsted/vis.php on line 58

 

Notice: Undefined offset: 1 in /data/nettsted/vis.php on line 58

 

Nettsidene er ikke de virkelige sidene.. Jeg lurer på hva de betyr og hvordan jeg får fikset på problemene. Håper noen har svar på dette.

Endret av Slettet+98128394
Lenke til kommentar
Videoannonse
Annonse

Det er PHP-notice og er ganske vanlig og normalt ikke noe å bry seg om.

 

Eksempel:

$navn = $_POST['navn'];

if (empty($navn)) {
echo '<form method="POST" action="">
<input type="text" name="navn">
<input type="submit">
</form>';
}

 

Denne gir feil fordi det ikke er noe som heter $_POST['navn'] ved lasting av siden.

Legg til dette øverst på siden:

error_reporting(E_ALL ^E_NOTICE);

Lenke til kommentar

I alle dager, selvfølgelig skal du bry deg om PHP-notice! Den spytter ikke ut notiser i hytt og pine for ingen ting, du har faktisk gjort noe GALT!

 

Feilene du får er fordi du aksesserer et array der nøklene(indeksene) du spesifiserer ikke eksisterer.

 

dvs.

$arr['velg_dato']

$arr[2]

$arr[1]

 

Disse tre eksisterer ikke, så du burde gå over skriptet ditt og sjekke hvor de skal bli satt, OM de skal bli satt, og hvorfor de ikke blir satt.

Ikke minst kan du bruke isset( $arr[1] ) eller array_key_exists() for å sjekke at indeksen eksisterer før du bruker dem.

Endret av Nazgul
Lenke til kommentar

Ja, jeg sier ikke at han skal ignorere de, men så lenge han vet årsaken til dem kan han slutte å vise dem når han har sjekket at det ikke egentlig er noe galt.

 

Jeg har brukt MYE tid på å bli kvitt alle noticer i mine script, men egentlig er det jo meningsløst.

 

I den enkle koden over måtte jeg da ha brukt:

if (isset([$_POST['navn'])) {
$navn = $_POST['navn'];
}
else {
$navn = "";
}

 

Men hva er vitsen?

Lenke til kommentar

Altså, det er ikke spesielt pent å hoppe bukk over notice. Det er endel som har brent seg på det når register_globals i sin tid var på. Eneste grunnen til at det har blitt slått av er fordi folk er dumme nok til å hoppe bukk og med det lager hull i scriptene. Etter min mening skal et godt script under ingen omstendigheter gi så mye som en notice.

Endret av Ernie
Lenke til kommentar

Nei, er enig i det da (hadde selv en alvorlig feil i et script som rammet de med register_globals=on tidligere i år :()...

 

Men, om du ser på det eksemplet mitt, der er det ingen fare, enten er $navn tom eller den inneholder POST-verdien. :)

Lenke til kommentar

Joa, men hvorfor må man på død og liv unngå å skrive else et-eller-annet? @ er faktisk treigere enn å slenge på en else, så hvis man tror det går kjappere uten tar man feil. Hvis du MÅ ha det på en linje har vi faktisk (isset($_POST['navn']) ? $_POST['navn'] : '';

Endret av Ernie
Lenke til kommentar
Altså, det er ikke spesielt pent å hoppe bukk over notice. Det er endel som har brent seg på det når register_globals i sin tid var på. Eneste grunnen til at det har blitt slått av er fordi folk er dumme nok til å hoppe bukk og med det lager hull i scriptene. Etter min mening skal et godt script under ingen omstendigheter gi så mye som en notice.

7629334[/snapback]

Det er det eneste rette!

Med PHP5 kjører jeg også med E_STRICT, bare for å være helt sikker.

Det skal egentlig svært lite til for å tilfredstille PHP, så det burde ikke være noe problem å unngå at PHP maser om noe som helst.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...