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.
  13 934
har begynt og knotte litt php.. det jeg ikke får til er at når jeg trykker på en knapp eller link så skal en function kjøres... har søkt og prøvd i hele kveld.. håper noen kan hjelpe
Det går ikke så vidt jeg vet. Php skjer før siden sendes til brukerens nettleser. Hvis du skal kjøre en funksjon uten å laste siden på nytt må du bruke javascript eller lignende.
Det går så absolutt. Orker ikke teste denne, slengte det sammen fort, det er bare et eksempel, men mener det funker.

Kode

<?php
if ( !isset($_POST['knapp']) ) {
?>

	<form action='' method='post'>
	<input type='text' name='navn' size='12'> Brukernavn <br />
	<input type='password' name='pass' size='12'> Passord <br />
	<input type='submit' name='knapp' value='Logg inn'>
	</form>
<?php
}
else { 
$rettpass = 1234;
$rettuser = "Bruker";
if ( $_POST['navn'] == $rettuser && $_POST['pass'] == $rettpass ) 
	echo "Du er nå logget inn.";
else echo "Feil brukernavn eller passord.";
}
?>
Hehe, beklager den olemikal. Jeg trodde du var ute etter å kjøre en funksjon uten å laste sider på nytt jeg. Hvis ikke det er noe krav finnes det mange muligheter. Du kan sjekke etter variabler via post eller get og utifra dem velge om funksjonen skal kjøres eller ikke, slik som zero har forklart.

Kode

//Koden for å sjekke om den skal kjøre 
//funksjonen i sin simpleste form:

if ($_POST['variabelnavn'] == "ønsket verdi") {
   funksjon();
}
// eller
if $_GET['variabelnavn'] == "ønsket verdi") {
   funksjon();
}

//Koden for å bruke en knapp i en form til å starte
//funksjonen ser du i zero sitt eksempel, men hvis
//du vil starte det via en link, kan du gjøre slik:

<a href="?variabelnavn=ønsket verdi">link</a>
Hvis du ikke vet det fra før så er altså post variabler som blir sendt med et form og get er variabler som står i adressen(f.eks index.php?side=side1).
Trådstarter
64 0
ok.. ble ivertfall litt klokere men om jeg skal bruke en link, og ikke skal skrive inn noe bare trykke så kjører en function...?
ओम नमो नारायण
Dodecha's Avatar
DonorCrew
Da lager du at linken etterligner et form, ganske enkelt, la oss si du har en funksjon som kjører om "funksjon=1" da lager du link til "http://samma.det.org/siden.php?funksjon=1"
da vil siden.php få send at variabelen funksjon har en verdi på 1 og vil jobbe ut ifra det.. f.eks en

if (strstr($_GET['funksjon'], "1"))
{
funksjonen_din();
} else {
echo "neh, fikk ikke beskjed om å gjøre noe";
}
▼ ... noen uker senere ... ▼
Den siste der var veldig knotete. Ville heller gjort det slik:

switch ($funksjon) {

case 1:
funksjonen_din();
break;

case 2:
funksjon_nr2();
break;

default:
echo "neh, fikk ikke beskjed om å gjøre noe";
}

Switch er en veldig fin funksjon om du har flere alternativer.
http://samma.det.org/siden.php?funksjon=1 kjører funksjonen_din(), og http://samma.det.org/siden.php?funksjon=2 kjører funksjon_nr2(). Om $funksjon ikke er definert skriver scriptet "neh, fikk ikke beskjed om å gjøre noe".
nso
popålol
nso's Avatar
Administrator
Switch er en veldig ressurskrevende funksjon, og det er derfor man skal frastå i fra å bruke den når det finnes gode alternativer som det Dodecha nevnte.


Det visste jeg ikke. Takk for infoen

Men mener du at denne funksjonen:

HTML-kode

switch ($funksjon) {

case 1:
funksjonen_din();
break;

case 2:
funksjon_nr2();
break;

default:
echo "neh, fikk ikke beskjed om å gjøre noe";
}
er mer ressurskrevende enn

HTML-kode

if ($funksjon = 1) {
funksjonen_din();
} elseif ($funksjon = 2) {
funksjon_nr2();
} else {
echo "neh, fikk ikke beskjed om å gjøre noe";
}
?
Det var vel indirekte akkuratt det han sa
Sitat av nso
Switch er en veldig ressurskrevende funksjon, og det er derfor man skal frastå i fra å bruke den når det finnes gode alternativer som det Dodecha nevnte.
Vis hele sitatet...
Makan til tøv har jeg aldri hørt.
Testet dette nå nettop for dobbeltsjekking med pear::benchmark

laget en funksjon som inneholt 14 else if løkker (i samme if)
laget en funksjon med 14 case'r i wn switch.

Korteste end time på if: 0.000022
Lengste end time på if: 0.000042

Korteste end time på switch: 0.000022
Lengste end time på switch: 0.000024

Da ble begge funksjone laget med akkurat samme formål (14 spørringer som aldri returnerer true) og kjørt 10 ganger hver seg.

Så de er faktisk veldig like.

En switch bør alltid brukes om du skal ha mange sammenligninger. i dette tilfellet er det jo ikke mange, men er det flere else if er switch å foretrekke da det gir en langt bedre oversikt og scriptet ditt blir mye lettere å lese både for deg og andre
jeg har aldri merket at mine switch koder tar lang tid å laste eller noe. Egentlig bruker jeg switch fordi jeg kan det best og det er lettest men. Jeg tror det er riktig det Nic0 sier her.
Nei de er ikke tregere, dermed basta. Jeg testet hver utgave 100 ganger hver seg, og de ga samme resultat hver gang, de nøyaktig samme utføringstidende på datamaskinen min, de varierte jo alle gangene, men innenfor samme tidsrom.

en switch er en annen skrivemåte for:

if(noe == noe)
else if(noe == noe_annet)

der den ene variabelen går igjennom hver gang. Sånnsett burde switch faktisk være raskere. Men prosessen som faktisk blir kjørt er den samme (det er en sammenligning, en sammenligning er en sammenligning uansett hvilken måte du måtte velge å skrive det på)