Avatar billede sito Nybegynder
10. marts 2003 - 22:32 Der er 16 kommentarer og
1 løsning

formular function

Hej

Forsøger at lave en funktion, der vil udskrive en formular når den bliver hentet. MEN, den vil ikke helt som jeg vil...
Jeg kan godt få udskrevet de tre overskrifter, men kan ikke få elementerne (som jeg har lavet i en seperat funktion) til at stå det rigtige sted. Kaldet til denne funktion skal altså ske for hvert index i mit array der hedder arrFormelements, men hvordan gør jeg det?

Min formularfunktion:

function writeFormular ($strName, $strAction, $strMethod, $arrFormelements)
{
echo "<form action=\"$strAction\"method=\"$strMethod\">\n";
for ($i = 0; count($arrFormelements) >= $i; $i++)
{
for ($j = 0; count($arrFormelements) >= $j; $j++)
{       
echo $arrFormelements [$i][$j]."<br>";   
}       
}
echo "</form>\n";
}

$arrFormelements [0][0] = "Navn";
$arrFormelements [0][1] = "Adresse";
$arrFormelements [1][0] = "Telefonnummer";

Og min funktion til elementet, som jeg ikke rigtig ved hvor jeg skal placere...:

function writeFormelements ($strName, $strValue, $strType)
{   
echo "<input name = \"$strName\" type = \"$strType\" value = \"$strValue\">\n";
}


Jeg har så lavet en testside, hvor jeg forsøger at hente min funktion, og der er scriptet:

$strAction = "formular.php";
$strMethod = "get";
$strName = "navn";
$strValue  = "";
$strType = "text";
   
writeFormular ($strName, $strAction, $strMethod, $arrFormelements);

Kan også sagtens være her den er gal...

Håber i kan hjælpe :-)
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:38 #1
Hvorfor bruger du et to-dimensionelt array?
Avatar billede sito Nybegynder
10. marts 2003 - 22:42 #2
Har jeg også undret mig over, men sådan lyder opgavebeskrivelsen...
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:44 #3
Ok, så længe der er en grund ... Du skal nok:


for ($j = 0; count($arrFormelements[$i]) >= $j; $j++)
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:46 #4
Ups, og brug > og ikke >=  for count er antallet.
Avatar billede sito Nybegynder
10. marts 2003 - 22:55 #5
Okay, har lavet det endimensionelt, og nu skriver den kun de 3 elementer ud jeg skal bruge, men på venstre side af mit array output, altså:
-formelement- Navn:
Ville meget gerne have det over på højre side. Plus at jeg i min html source code ikke kan se at den henter min $strType...

det nye script:

function writeFormelements ($strName, $strValue, $strType)
{   
echo "<input name = \"$strName\" type = \"$strType\" value = \"$strValue\">\n";
}
       
   
function writeFormular ($strName, $strAction, $strMethod, $arrFormelements)
{
echo "<form action=\"$strAction\" method=\"$strMethod\">\n";
for ($i = 0; count($arrFormelements) > $i; $i++)
{
writeFormelements ($strName, $strValue, $strType);   
echo $arrFormelements [$i]."<br>";
}
echo "</form>\n";
}

$arrFormelements [0] = "Navn: ";
$arrFormelements [1] = "Adresse: ";
$arrFormelements [2] = "Telefonnummer: ";

Og der hvor jeg tester:

$strName = "navn";
$strType = "text";
$strValue  = "";
$strAction = "formular.php";
$strMethod = "get";
   
writeFormular ($strName, $strAction, $strMethod, $arrFormelements);
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:58 #6
Byt om på linierne

writeFormelements ($strName, $strValue, $strType);   
echo $arrFormelements [$i]."<br>";

og tag strType med som parameter
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:59 #7
Men der var måske en grund til det 2-dimensionelle array??
Alle formelementer skal måske ikke have samme type?
Avatar billede sito Nybegynder
10. marts 2003 - 23:04 #8
Nej, jeg går ud fra at man skal kunne udskrive en komplet formular. Det skal altså være op til test scriptet hvilke parametre der skal med...
Og har jeg ikke $strType med som parameter?
Avatar billede erikjacobsen Ekspert
11. marts 2003 - 08:16 #9
Øh - jeg tror ikke vi skal begive os ud i yderligere uden at kende din
opgaveformulering. Nej, du har ikke $strType med.
Avatar billede sito Nybegynder
11. marts 2003 - 15:00 #10
hej
okay, nu har jeg næsten fået det til at virke...
Men, den skriver 4 formelementer ud...synes det er lidt mærkeligt, da den da kun kører løkken igennem 3 gange...

scriptet:

function writeFormular ($strName, $strAction, $strMethod, $arrFormelements, $strType)
{
echo "<form action=\"$strAction\" method=\"$strMethod\">\n";
               
for ($i = 0; count($arrFormelements) > $i; $i++)
{
for ($j = 0; count($arrFormelements) > $j; $j++)
{
echo $arrFormelements [$i][$j];
writeFormelements ($strName, $strValue, $strType);
echo "<br>";
}
}
           
echo "</form>\n";
}

og formular.php:

$strName = "navn";
$strType = "text";
$strValue  = "";
$strAction = "formular.php";
$strMethod = "get";
   
$arrFormelements [0][0] = "Navn: ";
$arrFormelements [0][1] = "Adresse: ";
$arrFormelements [1][0] = "Telefonnummer: ";
   
writeFormular ($strName, $strAction, $strMethod, $arrFormelements, $strType);
Avatar billede sito Nybegynder
11. marts 2003 - 15:02 #11
Fandt ud af det :-)
skulle skrive :

for ($j = 0; count($arrFormelements[$i]) > $j; $j++)

Vil du ikke have mine point Erik?
Avatar billede erikjacobsen Ekspert
11. marts 2003 - 15:02 #12
for ($j = 0; count($arrFormelements[$i]) > $j; $j++)

...for li'som at gentage mig selv :)
Avatar billede erikjacobsen Ekspert
11. marts 2003 - 15:02 #13
;))
Avatar billede sito Nybegynder
11. marts 2003 - 15:03 #14
ved det. Takker :-)
Avatar billede erikjacobsen Ekspert
11. marts 2003 - 15:03 #15
Nej tak, ingen point. Jeg samler ikke på den slags.
Avatar billede sito Nybegynder
11. marts 2003 - 15:04 #16
nej, det kan jeg se ;)
Avatar billede sito Nybegynder
08. maj 2003 - 16:18 #17
så nupper jeg dem selv igen :)
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