Avatar billede webcreator Nybegynder
07. september 2003 - 19:14 Der er 20 kommentarer og
1 løsning

Funktion - hvordan ?

Hej.

Jeg vil til at bruge funktioner. Men hvorfor virker dette ikke :

<?php

function tjek() {
  echo "Hej $nr";
}

?>

<table cellspacing=2 cellpadding=2 border=1>
<tr>
  <td><?php $nr = 5; tjek(); ?></td>
  <td></td>
  <td></td>
</tr>
</table>
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:16 #1
Du er her : Eksperten : Programmering : Script : PHP : Funktion - hvordan ? :

Funktion - hvordan ?
            10 point fra webcreator

Hej.

Jeg vil til at bruge funktioner. Men hvorfor virker dette ikke :

<?php

function tjek($nr) {
  return "Hej $nr";
}

?>

<table cellspacing=2 cellpadding=2 border=1>
<tr>
  <td><?php $nr = 5; print tjek($nr); ?></td>
  <td></td>
  <td></td>
</tr>
</table>
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:16 #2
Nå der kom en kende for meget med ;) Så fik vi også lidt underholdning i dag ...
Avatar billede squashguy Nybegynder
07. september 2003 - 19:18 #3
det er den måde php fortolker variabel-scopet på. du skal gøre sådan:

function tjek() {
global $nr;
  echo "Hej $nr";
}
Avatar billede squashguy Nybegynder
07. september 2003 - 19:18 #4
lol, du er god til at copy/paste :)
Avatar billede webcreator Nybegynder
07. september 2003 - 19:20 #5
Erik > Heh, undrede mig også noget :)

Kan jeg ikke bruge normal PHP med mindre jeg bruger Global på variablerne ?

Jeg havde tænkt mig at bruge flg. i funktionene :

$desk  = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error());
  $desks = mysql_fetch_array($desk);
  if ($desks["name"] == "") {
    echo "<td bgcolor=#008000>nr. $nr</td>";
  } else {
    echo "<td bgcolor=#800000>nr. $nr</td>";
  }
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:21 #6
tag tingene med som parameter, det er kønnest og sikrest. "global" er
selvfølgelig en mulighed, men kommer du ud over legetøjsstadiet vil det
give dig flere problemer med mystiske fejl.
Avatar billede webcreator Nybegynder
07. september 2003 - 19:23 #7
Dvs. min function vil se sådan ud :  ??

function noget() {
  $desk  = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error());
  $desks = mysql_fetch_array($desk);
  if ($desks["name"] == "") {
    return "<td bgcolor=#008000>nr. $nr</td>";
  } else {
    return "<td bgcolor=#800000>nr. $nr</td>";
  }
}
Avatar billede squashguy Nybegynder
07. september 2003 - 19:24 #8
er enig med erik, brug parametre, hvis det er muligt.
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:25 #9
function noget($nr) {
Avatar billede webcreator Nybegynder
07. september 2003 - 19:28 #10
Ok, jeg er slet ikke med.

Jeg vil gerne have en "pakke", som indeholder :

$desk  = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error());
  $desks = mysql_fetch_array($desk);
  if ($desks["name"] == "") {
    return "<td bgcolor=#008000>nr. $nr</td>";
  } else {
    return "<td bgcolor=#800000>nr. $nr</td>";
  }

- denne "pakke" (funktion) skal jeg så kunne indsætte hvor det passer mig. Men et er måske ligefrem bedre at smide det i en variabel
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:29 #11
Hvad er det du er i tvivl om?
Avatar billede webcreator Nybegynder
07. september 2003 - 19:32 #12
Jeg blev forvirret over, at du indsætter $nr i function navn($nr) - hvad skal den der ?

Og jeg kan ikke finde ud af, om jeg kan bruge normal PHP i funktionen..
Avatar billede erikjacobsen Ekspert
07. september 2003 - 19:35 #13
Det er helt normalt PHP. Så er $nr en parameter, og du kan kalde funktionen:

print noget(5);
Avatar billede squashguy Nybegynder
07. september 2003 - 19:36 #14
function test($nr){ echo $nr; }

test(1); // udskriver 1
test(2); // udskriver 2
Avatar billede squashguy Nybegynder
07. september 2003 - 19:37 #15
function test($nr, $bah){ echo $nr.$bah; }

test(1, "en"); // udskriver "1en"
test(2, "to"); // udskriver "2to"
Avatar billede webcreator Nybegynder
07. september 2003 - 19:42 #16
Ah, nu er jeg med :)
Avatar billede webcreator Nybegynder
07. september 2003 - 19:43 #17
Mange tak, begge 2. Erik smid et svar. Så sætter jeg lige points til 20, så i kan få 10 stærke hver :-)
Avatar billede fangel Nybegynder
07. september 2003 - 19:58 #18
:AFSLUTENDE KOMMENTAR:

hvis funktionen skal 'ændre' en variabel der findes uden for funktionen skal variablen erklæres 'global', eller man skal bruge en pointer til denne som parameter ( &$variabel ) (:NOTE: har aldrig afprøvet pointere i PHP, men det skulle eftersigende virke fint)

:WORK-AROUND:
lave den så den returnere det ændrede, og så lave $foo = bar($foo);

---

hvis variablen derimod bare skal bare skal udskrive noget er det bedst bare at bruge et normalt parameter, da der herved oprettes en kopi af variablen, så evt ændringer ikke vil afspejlese senere i scriptet!

Morten
Avatar billede webcreator Nybegynder
07. september 2003 - 20:07 #19
Morten > Jeg siger mange tak for den afsluttende kommentar. Vil jeg huske.
Avatar billede fangel Nybegynder
07. september 2003 - 20:09 #20
så lidt - intet bedre end at fjerne dårlige programmerings skikke - ser lige om jeg kan finde en artikkel om 'standarderne' for php kodning ;)

Morten
Avatar billede fangel Nybegynder
07. september 2003 - 20:09 #21
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