Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 4873
Hei, ny med PHP her!

Jeg har følgende kode:
https://pastebin.com/PFcHC0Wv

Formålet er å filtrere arrangementer i forhold til skole. Jeg "includer" denne filen i en annen fil som har en "rullgardin", slik at man kan velge hva man vil se av arrangementer ift. skole.

Koden fungerer som den skal, men når jeg går inn på index.php uten parametere så får jeg jo da logisk nok feilmeldingene:


Notice: Undefined index: skoleId
Notice: Undefined index: arrangement

Spørsmålet mitt er;

Hvordan kan jeg gjøre det sånn at hvis parameterene ikke er satt, blir det echo'et 'Velg skole!', eller 'Velg arrangement'?

Håper det kom tydelig nok frem hva jeg vil her. Hvis det også finnes noen andre ting som kan effektivisere koden min, så er det bare å spy det ut!

Setter pris på hjelp.

Mvh,
PHP Noob
Sist endret av brennesle; 13. april 2017 kl. 15:49.
Trigonoceps occipita
vidarlo's Avatar
Donor
isset er ein funksjon. Du køyrer den for å sjekke om ein variabel er satt. Den returnerer true om variabelen er satt, og false om den ikkje er satt. Det du gjer er å kalle to variabler noko med isset, men det gir ikkje meining syntaxmessig. Det er fortsatt variabler.

Kode

if isset($foobar) {
  echo "Foobar er satt";
} else {
  echo "Foobar er ikkje satt";
}
Du kan mao skrive om dei to linjene dine:

Kode

$skoleIsSet = $_GET['skoleId'];
$arrangementIsSet = $_GET['arrangement'];
til

Kode

$skoleIsSet = isset($_GET['skoleId']);
$arrangementIsSet = isset($_GET['arrangement']);
PHP er forøvrig greit dokumentert, og du finn brukseksempel for isset i dokumentasjonen for php.
Sist endret av vidarlo; 13. april 2017 kl. 15:57. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Bedreviter
Trådstarter
Sitat av vidarlo Vis innlegg
isset er ein funksjon. Du køyrer den for å sjekke om ein variabel er satt. Den returnerer true om variabelen er satt, og false om den ikkje er satt. Det du gjer er å kalle to variabler noko med isset, men det gir ikkje meining syntaxmessig. Det er fortsatt variabler.

Kode

if isset($foobar) {
  echo "Foobar er satt";
} else {
  echo "Foobar er ikkje satt";
}
Du kan mao skrive om dei to linjene dine:

Kode

$skoleIsSet = $_GET['skoleId'];
$arrangementIsSet = $_GET['arrangement'];
til

Kode

$skoleIsSet = isset($_GET['skoleId']);
$arrangementIsSet = isset($_GET['arrangement']);
PHP er forøvrig greit dokumentert, og du finn brukseksempel for isset i dokumentasjonen for php.
Vis hele sitatet...
Takk for svar!

Jeg har prøvd hva du foreslår, og blir jeg kvitt feilmeldingene, men da fungerer ikke "filtreringen" min, fordi løkkene mine er avhengig av

$skoleIsSet = $_GET['skoleId'];
$arrangementIsSet = $_GET['arrangement'];

for å vite på hvilke parametre den skal "joine" tabellene.

Skal forøvrig bli bedre til å lese meg opp på diverse dokumentasjoner!

Fiksa det slik om noen skulle lure:

error_reporting( error_reporting() & ~E_NOTICE );
Sist endret av brennesle; 14. april 2017 kl. 00:06. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av brennesle Vis innlegg
Takk for svar!

Jeg har prøvd hva du foreslår, og blir jeg kvitt feilmeldingene, men da fungerer ikke "filtreringen" min, fordi løkkene mine er avhengig av

$skoleIsSet = $_GET['skoleId'];
$arrangementIsSet = $_GET['arrangement'];

for å vite på hvilke parametre den skal "joine" tabellene.

Skal forøvrig bli bedre til å lese meg opp på diverse dokumentasjoner!

Fiksa det slik om noen skulle lure:

error_reporting( error_reporting() & ~E_NOTICE );
Vis hele sitatet...
Slutt å mishandle eit heilt uskuldig språk!

For det første har åpenbart ikkje du forståelse av kva du gjer på. Du forstår ikkje kvifor du skriv inn det du skriv inn, og du forstår ikkje kvifor du får feilmeldinger. Du forstår heller ikkje kva feilmeldingene prøver å fortelje deg.

Og attpåtil reagerer du med å skru av feilmeldinger?!

Begynn på nytt.

Du vil sjekke om variabelen er satt. Viss den er satt vil du gjere noko. Viss den ikkje er satt vil du ikkje gjere det.

Uttrykk det på god engelsk først

Kode

if isset(variabel) 
  {
    //Do something
  } else {
   //do something else
}
Det er den grunnleggande måten å bruke isset på i php. Funksjonen returnerer ikkje verdien til variabelen, den sjekker om variabelen, er satt, og returnerer ein bool basert på det.

Om du vil bruke innhaldet av variabelen seinare, så kan du så klart ikkje spørje etter om den er satt eller ikkje! Ja, det eg skriv er seriøst meint, for du har åpenbart ikkje kontroll på tankegangen bak programmering.

Viare så er jo samanlikning av variabler slik du gjer livsfarleg i PHP. PHP lar deg gjere mange rare ting, som å samanlikne ting som ikkje bør samanliknast - og returnerer rare resultater. For eksempel vil 'foobar' == true evaluere til til true, og foobar == 0 vil evaluere til true... mens 0 == true vil ikkje evaluere til true.
Sist endret av vidarlo; 14. april 2017 kl. 00:22.