Gå til innhold

Mere php :-)


Gjest anonym

Anbefalte innlegg

Gjest dr. ian

OK.

Vi hadde da denne siden:

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<?PHP

echo "Jeg kan php!!!!";

?>

</body>

</html>

Som jo var vel og bra, men ikke akkurat grensesprengende :ler:

Men hvis vi nå sier at den lille setningen er en php-verdi (variabel), slik:

<?PHP

$min_verdi = "Jeg kan php!!!";

?>

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<?PHP

echo $min_verdi;

?>

</body>

</html>

Her har vi satt variablen allerede før siden lastes, og resultatet blir det samme. Variablene/verdiene i php kjennetegnes ved at de har et dollartegn foran seg, og når verdien er satt gjelder den for hele siden helt til den er lastet.

Angående lasting:

Php (og html) lastes i browseren din fra toppen av siden og ned til bunnen. Unødvendig å si, kanskje, men det er greit å huske på. Rettere sagt så leses siden ovenfra og ned, og fra venstre mot høyre - slik at hvis du har to tabellruter, vil den høyre laste etter at den venstre er ferdig.

Vel, da har vi flyttet verdien ut av siden, men den er fremdeles skrevet manuelt inn i koden, og kan ikke forandres av noen interaktivt.

For å gjøre dette må vi bruke html-forms.

Html-forms er rett og slett et input-felt for brukerdata som skal sendes til serveren fra browseren til den som surfer (a-la post-melding-skjemaet her på kg).

Php tar i mot disse dataene via noe som kalles:

$HTTP_POST_VARS['verdi'];

Post vars er rett og slett en verdi som er postet via en form til serveren.

I php-versjoner nyere enn 4.1 heter dette:

$_POST['verdi'];

Siden start.no kjører php 4.0.6 skal vi bruke den første, men bare så det er nevnt...

I neste innlegg skal vi se på hvordan vi lager en form og får postet data til serveren! :kul:

dorian

Lenke til kommentar
Del på andre sider

Fortsetter under...

Gjest dr. ian

En html-form ser slik ut:

<form method="post" action="liten_test.php">

<input type="text" name="username" value="" size="15" maxlength="15"><br>

<input type="submit" name="submit" value="Post!">

</form>

Først kommer taggen som starter form'en, som sier på hvilken måte den skal sendes (post), og hvilket script den skal postes til (liten_test.php).

Det neste feltet er et vanlig input-felt for tekst der man skal skrive inn verdien som skal sendes.

Det er navnet på dette feltet (username) som skal bli til en verdi som skal vises frem på siden når man trykker på Post!

Så da vil siden vår se slik ut:

<?PHP

$username = $HTTP_POST_VARS['username'];

?>

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<?PHP

echo "<h2>$username</h2>";

?>

<form method="post" action="liten_test.php">

<input type="text" name="username" value="" size="15" maxlength="15"><br>

<input type="submit" name="submit" value="Post!">

</form>

</body>

</html>

De forandringene jeg har gjort er disse:

$username = $HTTP_POST_VARS['username'];

Denne tar i mot verdien som er postet, og gjør at php vet at den postede verdien username skal "hete" $username

echo "<h2>$username</h2>";

Denne setningen skriver ut verdien $username mellom to html-tagger.

Jeg har lagt ut dette lille scriptet her:

http://home.no.net/dorian/phpkurs/liten_test.php

slik at man kan teste selv :ler:

dorian

Lenke til kommentar
Del på andre sider

Gjest dr. ian

Litt om kommentering:

Man kan kommentere koden sin underveis, og det er veldig greit for å beskrive hva de enkelte snuttene nedover en side gjør (både for andre og deg selv - etter noen måneder er det ikke like sikkert at du husker hva du gjorde :ler: )

Vi bruker # eller // eller /* og */ for å kommentere bort ting som ikke skal "tolkes" av php-parseren.

En enkelt linje kan kommenteres bort slik:

# Dette vil ikke leses av parseren

$men_dette_vil = "Synlig";

# brukes for å gi kommentarer til din egen kode

// $kodesnutt_som_skal_kommenteres_bort = "Usynlig";

$men_dette_vil_synes = "Synlig";

// brukes for å kommentere bort en enkelt linje med kode

(Du kan godt bruke # til dette også, men det er greit å lage seg noen regler :blunke: )

$linje1 = "Synlig";

$linje2 = "Også synlig";

$linje3 = "Denne også";

/*$linje4 = "Ikke synlig";

$linje5 = "Kan ikke sees";

$linje6 = "Ikke denne heller";*/

/* og */ brukes for å kommentere bort flere linjer med enten kode eller kommentarer.

Så hvis du ser en # med noe tekst etter i scriptene her, vet du at dette er en kommentar, og ikke nødvendig for at scriptet skal kunne kjøre.

dorian

Lenke til kommentar
Del på andre sider

Gjest dr. ian

Ja, det var da POST, nå skal vi se på en annen måte bruke input fra brukeren på, nemlig GET.

Noen gang lagt merke til hva som foregår i adressebaren på sidene du er på? :ler:

På dette innlegget jeg skriver på nå, er adressebaren følgende:

http://www.kvinneguiden.no/Forum/posting.php?mode=reply&t=12759

Det vi er interessert i er den siste delen:

posting.php?mode=reply&t=12759

Når man scripter er det jo ikke alltid like hendig å ha en diger knapp med Post! på struttende utover alle sidene?

Mye mer hendig med en link, og når man skal hente data fra en database eller en tekstfil refererer man som regel til en ID, altså et nummer.

På ovenfornevnte eksempel er scriptnavnet posting.php.

Så markeres begynnelsen på dataforespørslene med et ? (skal bare være et spørsmålstegn!).

Neste snutt er en verdi:

mode=reply

Dette er en hendig liten sak som kalles en switch, men det skal jeg komme tilbake til senere.

Den siste verdien er:

&t=12759

t=12759 betyr at jeg svarer på topic (tema) nummer 12759.

OBS: Alle verdier som kommer etter den første separeres med en & (ampersand).

OK.

Vi har jo vært igjennom POST, så det kommer neppe som noe sjokk at GET-verdier identifiseres med:

$HTTP_GET_VARS['verdi'];

(Hvis du har php nyere enn 4.1 er verdien:$_GET['verdi'];)

Siden vi ikke har noen database, skal vi bruke GET-verdien til å velge mellom to verdier som vi har lagt inn i scriptet.

Dette gjør vi med en if-else setning

En if-else setning er ikke så vanskelig som den høres ut, man må bare "oversette" til norsk.

Slik ser en enkel setning ut:

if ($my_value == 1) {

echo "Ja, da har vi valgt verdi nummer 1";

} else {

echo "Ja, da har vi valgt en annen verdi enn nummer 1";

}

Her er det noen nye tegn.

For å spørre om en ting er lik en ting inni en parantes bruker vi dobbelt likhetstegn ==. Utenfor parantesene bruker vi enkelt likhetstegn.

I tillegg bruker vi her klammeparanteser { og } for å fortelle parseren at her må den ha tungen rett i munnen, for nå kommer det noe kode som skal utføres.

Dette er to av de vanligste tegnene i php og brukes ofte. Du får dem opp ved å holde alt-gr nede mens du trykker 7 og 0.

Ser jo nesten litt vanskelig ut dette? :ler:

Neida.

Bare se hvordan det blir hvis vi oversetter til norsk:

hvis (et eller annet == et eller annet) {

gjør et eller annet

} hvis ikke {

gjør noe helt annet

}

Det er if-else setningen i et nøtteskall.

I neste innlegg skal vi bruke en slik setning til å få frem forskjellige resultater på siden ved å skrive verdier inn i adressebaren.

dorian :kul:

Lenke til kommentar
Del på andre sider

Annonse

Gjest d'orian

OK.

Lite sammendrag fra forrige posting:

Vi så hvordan man kan sende verdier via adressebaren, og oppdaget at en if-else setning egentlig er skuffende enkel å lage.

Nå skal vi lage et lite script der vi bruker disse verdiene (med kommentarer).

<?PHP

# Her settes det at adressebar-verdien my_value skal være $my_value #

$my_value = $HTTP_GET_VARS['my_value'];

/* Setningen under setter verdien på $message avhengig av hva $my_value er.

Dette gjøres før siden printes ut, og når siden skrives ut blir riktig $message printet i siden */

if ($my_value == 1) {

$message = "Du valgte nummer 1!!!";

} else {

$message = "Du valgte ikke nummer 1, nei!!!";

}

?>

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<a href="liten_get.php?my_value=1">liten_get.php?my_value=1</a><br>

<a href="liten_get.php?my_value=">liten_get.php?my_value=</a><br>

<a href="liten_get.php">liten_get.php</a>

<?PHP

echo "<h2>$message</h2>";

?>

</body>

</html>

Dette scriptet ligger her:

http://home.no.net/dorian/phpkurs/liten_get.php

Jeg la inn noen linker til de forskjellige variantene av dette scriptet slik at det går an å teste uten å skrive direkte i adressebaren.

doriansen :kul:

Lenke til kommentar
Del på andre sider

Gjest dr. ian

Her er samme if-else setningen som er brukt over, men med forskjellige verdier:

Originalen - hvis my_value = 1, vil den skrive ut den øverste setningen

if ($my_value == 1) {

$message = "Du valgte nummer 1!!!";

} else {

$message = "Du valgte ikke nummer 1, nei!!!";

}

Motsatt - vi snur hele greia ved å bytte ut de to likhetstegnene med != som betyr "noe annet enn"

Setningen betyr nå det motsatte, siden vi spør Hvis $my_value er noe annet enn 1

Den vil nå vise fram den øverste setningen hvis my_value IKKE er 1

if ($my_value != 1) {

$message = "Du valgte noe annet enn nummer 1!!!";

} else {

$message = "Du valgte nummer 1, jah!!!";

}

Større enn - her vil den vise fram den øverste setningen hvis $my_value er større enn 1 (f.eks. 2)

if ($my_value > 1) {

$message = "Du valgte noe større enn nummer 1!!!";

} else {

$message = "Du valgte nummer 1, eller noe som er mindre enn 1!!!";

}

Mindre enn ELLER lik 1 - her vises øverste setningen hvis $my_value er mindre eller lik 1

if ($my_value <= 1) {

$message = "Du valgte noe mindre enn eller lik nummer 1!!!";

} else {

$message = "Du valgte noe større enn 1";

}

Egentlig skal det riktige $message't nederst være:

$message = "Du valgte noe annet enn nummer 1 eller mindre, men jeg vet ikke hva, for det har du ikke spurt om!";

Ettersom vi jo bare definerte 1 eller mindre... :ler:

Er vi med??? :blunke:

Vi kan jo legge inn flere forutsetninger i den øverste delen av setningen, slik:

if ($my_value <= 1 && $my_value != "") {

$message = "Du valgte noe mindre enn eller lik nummer 1, og verdien er ikke ingenting!!!";

} else {

$message = "Du valgte noe større enn 1, evt. så er ikke my_value spesifisert. Så det, så!!!";

}

Her setter vi forutsetningen at $my_value skal være lik eller mindre enn 1 OG det kan ikke være ikke noe (!= "" betyr "noe annet enn tomt"), for at man skal få skrevet ut den øverste setningen. Dobbelt & (&&) betyr at begge forutsetningene må være oppfylt før setningen kan skrives ut.

Jadda! :sjarmor:

Nerd on!

dorian

Lenke til kommentar
Del på andre sider

Gjest d'orian

Og her er hele scriptet med en ny linje i if-else setningen:

<?PHP

$my_value = $HTTP_GET_VARS['my_value'];

if ($my_value <= 1) {

$message = "Du valgte noe mindre enn eller lik nummer 1!!!";

} else if ($my_value > 1 && $my_value != 8 ) {

$message = "Du valgte noe større enn nummer 1, men det er ikke 8!!!";

} else {

$message = "Du valgte nummer 8";

}

?>

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<a href="liten_get2.php?my_value=6">liten_get2.php?my_value=6</a><br>

<a href="liten_get2.php?my_value=8">liten_get2.php?my_value=8</a><br>

<a href="liten_get2.php?my_value=1">liten_get2.php?my_value=1</a><br>

<a href="liten_get2.php?my_value=">liten_get2.php?my_value=</a><br>

<a href="liten_get2.php">liten_get2.php</a>

<?PHP

echo "<h2>$message</h2>";

?>

</body>

</html>

Denne legger til } else if ($my_value > 1 && $my_value != 8 ) {

noe som gjør at hvis $my_value er større enn 1 OG noe annet enn 8, vil den setningen skrives ut.

Man kan ha så mange else if's man vil, men man må tenke i gjennom hvilken rekkefølge man setter dem i. Husk at når den kjører gjennom setningen så stopper den når den finner det første tilfellet som er sant...

Kan testes her:

http://home.no.net/dorian/phpkurs/liten_get2.php

dorian

Lenke til kommentar
Del på andre sider

Dr. Ian

Hvis den ærede doktor kjeder seg så har jeg en CD-brenner og noen RAM-brikker som lengter etter å komme på plass i tårnet :hoho::hoho:

Men fra spøk til revolver. Jeg begynte å bli bekymret for å ligge våken i natt, men nå har jo du løst det problemet. Tråden er printet ut og ligger klar på puta. Hvis den får meg til å sovne så skal jeg drømme om deg :wink:

(eller blir ikke det drøm, men mareritt ??? Nei definitivt en drøm) :sjarmor:

PS Det er bedre med lønn i himmelen enn ingen lønn i hele tatt (evt Vidar Lønn......

Lenke til kommentar
Del på andre sider

Gjest doriansen

Hehe, ja, med litt php-scripts på sengekanten blir det lettere å få kontakt med Lukkøye.

Jeg skjønte ikke før nå at @lfa synes det var kjedelig :ler::ler:

Jaja, sånn ere når'n begynner å bli skral og har tungt for ting.

Å ere slags pc du skal ha fiksa på da, Skravla? Har litt problemer med minnet sitt den og, stakkar? :ler:

$dorian = substr("Leggesegdorian!!Marsj!!!!", 8, 6);

Lenke til kommentar
Del på andre sider

Annonse

Egentlig så bør jeg ikke legge inn mere RAM i kassa. Det er flaut med en PC som har bedre hukommelse enn eieren. :hoho::hoho::hoho:

Lenke til kommentar
Del på andre sider

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å
×
×
  • Opprett ny...