Gå til innhold

Hva er feil med koden din?


Anbefalte innlegg

Hva er feil med koden min?

 

Er mange som stiller dette spørsmålet og som oftest er løsningene opplagte. Jeg skal prøve å lage en liten guide til selvhjelp. En guide som tar for seg vanlige problemer som er lette å løse.

 

Feilmeldinger

Når det er noe galt vil det som oftest komme opp en feilmelding eller error om du vil. Hvis man får frem feilmeldingen og klarer å skjønne den er man på god vei mot å løse et problem.

Til dere som ikke får frem feilmeldinger legg til ” error_reporting(E_ALL);” i toppen av php filen. Det er mange forskjellige feilmeldinger du kan få, et generelt råd er å gå til linjen som er nevnt i feilmeldingen og sjekk etter feil. Jeg glemmer ofte å avslutte ting eller skriver navnet på en variabel feil. Sjekk etter slike slurve feil.

 

Parse error: parse error, unexpected T_STRING in /php/fil.php on line 1

 

Denne kommer som oftest av at du har glemt semikolon eller at du ikke har av slutten en klamme. Her er noen eksempler på kode som vil gi denne feilmeldningen. Problemet lar seg lett løse ved å legge til enten } eller ;.

If($ola = "feit")
{
echo “jay”;

If($ola = "feit")
{
echo “jay”
}

NB: T_STRING er et eksempel på uventede elementer, det kan ofte være T_ELSE eller andre ting.

 

 

Warning: Cannot add header information - headers already sent by (output started at/php/fil.php:2) in /php/fil.php on line 3

 

Headers må sendes før output. Hvis du får denne feilmeldingen er det mye som kan være feil. Sessions og headers går foreksmpel ikke godt sammen, men i de aller fleste tilfeller er det ganske lett å løse problemet. Legg til ob_start(); i toppen av dokumentet.

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /php/fil.php on line 3

 

Nå er det noe feil i mysql syntaksen din. Hvis du får denne feilmeldingen er det bare å kaste seg over mysql delen og fin lese den. Sjekk at du har husket herme tegn, komma og at alt er skrevet korrekt.

 

 

Ble ikke en lang post, men håper den kan hjelpe noen.

 

EDIT: Fiksa på en flau feil :p

Endret av Hjelpphp
Lenke til kommentar
Videoannonse
Annonse

Fint at du tar deg tid til å lage ein post til andre, men det hadde kanskje vert greit om koden var korrekt ;)

 

Når det gjelder manglende error melinger så kan det vere greit å nevne at ini_set('display_errors', 'on') er nødvendig vist errors er skrudd av i php.ini. Koden blir da

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT); 
/* 
E_STRICT var ny i php5 og er intill php 6 ikkje med i E_ALL,
derfor kan det vere lurt å legge den til manuelt ved hjelp av |-operatoren
*/

 

I if($ola = feit) vere definert før du kan bruke den noe du ikkje nevner. I tilleg så vil denne if'en alltid blir TRUE siden du setter verdien av $ola til feit og ikkje skjekker om ola er feit. Korrekt kode blir slik:

define('feit', 1);
$ola = 2;

if($ola == feit) {
  echo "jay";

// OG
if($ola == feit) {
  echo "jay"; // Her glemte du semikolon og;)
}

 

 

Angåande "headers already sent"-erroren så er ob_start(); den letteste men langt fra den beste løsningen. I større program så bør du ha såpass kontroll over output at du veit kortid det er forseit å sende headers() evnt bruke session_start(). Det at sessions og headers ikkje går godt i lag det må du forklare litt nermer, det er nemlig noe eg aldri har hørt om ...

 

Ble kanskje litt negativt dette, men før du setter deg ned å skrive ein slik 'allvitene' post så bør du ha god kontroll på php sjølv ...

Endret av Runar0
Lenke til kommentar

Hvorfor hermetegna ikke var rund feit vet jeg ikke :p. At jeg klarte å glemme det er i grunn veldig dumt av meg. Resten av kodebiten var jo for å vise feil som er lette å gjøre da.

 

På tema om ob_start() så er ikke dette en post for de som lager store prosjekter hvis du begynner med noe sånt så burde du ha nok peiling til å ikke gjøre sånne feil.

 

Når det kommer til error reporting så er det ikke sikkert at alle vil ha det på i php.ini fila. Den lille jeg la med er bare for å få frem en feildmelding. Er ikke lurt å ha error_reporting på hele tiden med tanke på sikkerhet osv.

 

Tror det er en fordel å skjønne posten og hvem posten er ment for før du begynner å være negativ.

Lenke til kommentar
Når det kommer til error reporting så er det ikke sikkert at alle vil ha det på i php.ini fila. Den lille jeg la med er bare for å få frem en feildmelding. Er ikke lurt å ha error_reporting på hele tiden med tanke på sikkerhet osv.

Jeg tror han mente å fortelle deg at error_reporting() ikke vil fungere i det hele tatt hvis feilmelding er skrudd av i php.ini filen. Derfor er det lurt å skru det på manuelt.

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...