Avatar billede nutten Nybegynder
09. april 2003 - 15:01 Der er 9 kommentarer og
2 løsninger

Funktioner.php

Hvordan virker det egentlig, når man laver én fil med en masse funktioner i, der kaldes fra andre sider????

Jeg har en fil: funktioner.php

En anden fil, der starter med:
<?php
require('funktioner.php');

osv osv

Men når man kalder en funktion en vilkårlig side får jeg fejl...
Den først linie i funktionen, der kaldes skriver bare "Test", dette står i adressebaren efter web-adressen????

Hvordan virker det?
Har det nogen betydning, der køres sessions?
Avatar billede fangel Nybegynder
09. april 2003 - 15:07 #1
du har rodet for meget rundt i dine globale / ikke globale variabler...

se dette ex...

---
<?php
$test = "se, jeg kan godt udskrive noget";
function test1(){
  echo $test;
}
function test2(){
  global $test;
  echo $test;
}
test(); // laver fejl
test2(); // virker fint...
?>
---

i dit tilfælde, hvor variablen står i adresselinen, vil det dog hjælpe bare at bruge $_GET['variabel_navn']

Morten
Avatar billede nutten Nybegynder
09. april 2003 - 15:14 #2
Jeg har lige læst spørgsmålet igennem igen og det virker måske lidt uklart, men jeg er f..... også træt af den fejl!

I min funktioner.php har jeg f.eks 2 funktioner:

connect();
opretbruger();

Hvordan kalder jeg disse funktioner fra andre php-sider f.eks ved en HTML-FORM??
Avatar billede fangel Nybegynder
09. april 2003 - 15:18 #3
--- funktioner.php ---
test(){
  echo "test";
}
---

--- test.php ---
include("funktioner.php"); // require() kan også bruges
test();  // virker fint
---

hvad er problemet så, prøv at vis lidt kode...

hvis du vil kalde fx opretbruger(); fra en HTML-form, skal denne først submittes, og siden reloades, her kan du så bruge variablierne $_POST['variabel_navn'] til at få fat i dem...

Morten
Avatar billede nutten Nybegynder
09. april 2003 - 15:31 #4
Jeg har en form:

--- bruger.php ---
<FORM method=Post action= ??????>
Navn:<INPUT Type=Text Name=Navn>
By  :<INPUT Type=Text Name=By>
<INPUT Type=Submit Value=Opret

--- Funktioner.php ---
function opretbruger(){
  $navn = $HTTP_POST_VARS["Navn"];
  $by = $HTTP_POST_VARS["By"];

  // Til test - men den skriver intet ?!?
  echo $navn;
  echo $by;

Resten af funktionen er database kald osv
}

Jeg vil så gemme Navn og By i en database, så hvad skal der stå i action????
Der sker nemlig ikke en skid uanset, hvad jeg skriver!!??
Avatar billede fangel Nybegynder
09. april 2003 - 15:35 #5
OK... prøv dette...

--- bruger.php ---
<?php
include("funktioner.php");
if(isset($_POST['navn'])){
  opretbruger();
}
else{
?>
<FORM method=Post action="<?php echo basename($_SERVER['PHP_SELF']); ?>>
Navn:<INPUT Type=Text Name="navn">
By  :<INPUT Type=Text Name="by">
<INPUT Type=Submit Value="Opret">
<?php
}
?>
---

--- Funktioner.php ---
<?php
function opretbruger(){
  $navn = $_POST["navn"];
  $by = $_POST["by"];

  echo $navn . "<br>";
  echo $by;
}
?>
---

dette burde virke...

Morten
Avatar billede nutten Nybegynder
09. april 2003 - 15:49 #6
Det virker også fint, men hvorfor virker dette ikke:

<FORM method=Post action="<?php opretburger(); ?>>
Navn:<INPUT Type=Text Name="navn">
By  :<INPUT Type=Text Name="by">
<INPUT Type=Submit Value="Opret">

Det bliver jo et kæmpe rod, da jeg skal have flere forms på den samme side!
Avatar billede spoonbender Nybegynder
09. april 2003 - 19:38 #7
Hmm, det du gør der er at kalde opretbruger() og sætte resultatet ind i action-feltet *før* siden er sendt til brugerens browser, og før brugeren har kunne fylde noget af formularen ud. Det er derfor der ender med at stå "test" i addresselinjen. Du har nok lavet funktionen så den returnerer ordet "test" af den ene eller anden grund.. Al php foregår 100% server-side, så en html-form skal submittes til serveren før du kan gøre noget som helst med den. Du bliver nådt til at sætte php-sidens navn ind i action-feltet, og så behandle data når brugeren har trykket submit

Når jeg har flere forms på samme side plejer jeg at give submit-knappen en unik name-værdi. Så kan jeg checke hvilken form der er blevet submitted ved at checke hvilken submit der er trykket på.
Avatar billede fangel Nybegynder
10. april 2003 - 13:28 #8
nutten => ved ik' om du har opdaget det, men det er det jeg hele tiden har sagt...

Morten
Avatar billede nutten Nybegynder
10. april 2003 - 13:40 #9
dea_pq >> Jo, det har jeg fattet :) Dog ville jeg gerne se ex. på koden altså hvad ville du/i skrive i "action=  " , når i ved siden, der skal kaldes hedder funktioner.php?

spoonbender >> Kan jeg lokke dig til at smide et kodeeksempel på det med flere forms og submit-knapper?, jeg har bikset noget sammen, men det virker klodset og jjjaa så virker det ikke helt efter hensigten :)
Avatar billede fangel Nybegynder
10. april 2003 - 13:42 #10
denne kode...

--- bruger.php ---
<?php
include("funktioner.php");
if(isset($_POST['navn'])){
  opretbruger();
}
else{
?>
<FORM method=Post action="<?php echo basename($_SERVER['PHP_SELF']); ?>>
Navn:<INPUT Type=Text Name="navn">
By  :<INPUT Type=Text Name="by">
<INPUT Type=Submit Value="Opret">
<?php
}
?>
---

--- Funktioner.php ---
<?php
function opretbruger(){
  $navn = $_POST["navn"];
  $by = $_POST["by"];

  echo $navn . "<br>";
  echo $by;
}
?>
---

virker fint... (har lagt den her før... 5 kommentare oppe... ;)

Morten
Avatar billede nutten Nybegynder
10. april 2003 - 13:46 #11
Ok, det har jeg også benyttet siden igår..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester