Avatar billede shjdsi Nybegynder
11. september 2003 - 09:35 Der er 4 kommentarer og
1 løsning

kalde php function i samme script fra dropdown

Jeg har været inde på det i tidligere spg. men fik ikke rigtigt svar, er kommet lidt videre men er kommet til endnu en hurdel.
Jeg har en form og en drop downbox
form action er php_self varfiablen som indikere at at samme side bliver reloaded. Kan jeg på en eller anden måde kalde en bestemt php function på siden ?

Et andet problem er også at hvis jeg prøver at skrive variablen $mindrop som er navnet på drop boksen kommer der meddelse om at det er en udefineret variabel. Hvordan får jeg variablen fra html sektionen ind i et inlejret php script. her er koden.... Jeg har arbejdet lidt med det her et stykke tid nu og vil gerne videre derfor lidt ektra point til en tilfredsstillende løsningsforslag.

min problem side

html>
<body>

<h1> Welcome to support recordtrack system</h1>

<form name="custom" action="<? echo $_SERVER['PHP_SELF']; ?>"method="GET">
    <div align="center">
        <select name="mindrop">
        <?php
        include ("functions.php");
        $cust = getCustomer();
            foreach ($cust as $value) {
                $id=$value['id'];
                $customer = $value['customer'];
                echo "<option value=\"$id\">\"$customer\"</option>";
            }

        ?>
        </select>
      <input type='submit' value='send'>
      </div>
                       

</form>



</body>
<html>
Avatar billede tjens Nybegynder
11. september 2003 - 09:57 #1
I starten af dit script skal du hente GET variablen fra browseren ind i dit script:

$mindrop = $_GET["mindrop"];

Derefter tester du om $mindrop er udfyldt med noget gyldigt og behandler den,
else
send form til browseren som du allerede har i dit script.

ps. Hvis du skal lave meget behandling, er det måske ikke en fordel at have action til php_self.
Avatar billede shjdsi Nybegynder
11. september 2003 - 10:50 #2
Mange tak for det.. So far so good.
Som det er nu, virker det jeg kan bruge min variabel. Jeg har nu indsat et kald til en function getCustomerData($mindrop);

mit problem er at den bliver kaldt hver gang siden loader, den skulle jo kun kaldes når der er valgt et eller andet i dropdownboksen.

Kan man indsætte en hidden value i selectboksen som jeg på en eller anden måde kan bruge som dirty, eller bliver jeg nød til at sætte en default vær,di i select boksen som jeg så kan validere på inden externe funktioner bliver kaldt.

Mere for at få det lært på den rigtige måde.....

<html>
<body>

<h1> Welcome to support recordtrack system</h1>

<form name="custom" action="<? echo $_SERVER['PHP_SELF']; ?>"method="GET">
    <div align="center">
        <select name="mindrop">
        <?php
        include ("functions.php");
        $cust = getCustomer();
            foreach ($cust as $value) {
                $id=$value['id'];
                $customer = $value['customer'];
                echo "<option value=\"$id\">\"$customer\"</option>";
            }

        ?>
        </select>
      <input type='submit' value='send'>
      </div>
<?php

    $mindrop = $_GET["mindrop"];
    echo $mindrop;
/* get customer records */
  getCustomerData($mindrop);

?>
</form>



</body>
<html>
Avatar billede tjens Nybegynder
11. september 2003 - 12:02 #3
$mindrop = $_GET["mindrop"]; skal udføres _inden_ du sender din form til browseren.

Så skal du teste om den er udfyldt med en gyldig værdi:
  Hvis den er gyldig er det anden gang siden kaldes og skal du behandle værdien.
  Hvis den er ugyldig er det første gang og du skal sende din form til browseren.

Jeg tror det er lettere for dig at lade være med at bruge PHP_SELF. Skriv istedet et andet PHP script der indeholder  $mindrop = $_GET["mindrop"];
og behandler inputtet.
Avatar billede baldi3 Nybegynder
11. september 2003 - 13:03 #4
skift det her ud:
<?php
$mindrop = $_GET["mindrop"];
echo $mindrop;
/* get customer records */
getCustomerData($mindrop);
?>

med det her:
<?php
$mindrop = $_GET["mindrop"];
if ($mindrop) {
echo $mindrop;
/* get customer records */
getCustomerData($mindrop);
}
?>

Nu skriver den det kun ud, hvis $mindrop er defineret.
Avatar billede tjens Nybegynder
11. september 2003 - 13:08 #5
Herunder et standalone eksempel, der viser hvordan du undgår at vise din form, hvis den allerede er udfyldt:

<html>
<body>

<h1> Welcome to support recordtrack system</h1>
<?php
$mindrop = $_GET["mindrop"];
if  ($mindrop) {
    getCustomerData($mindrop);
}
else { // Formularen vises kun hvis der ikke er valgt et felt.
?>

<form name="custom" action="<? echo $_SERVER['PHP_SELF']; ?>"method="GET">
<div align="center">
<select name="mindrop">
<option value="A1">Kunde A1</option>
<option value="A2">Kunde A2</option>
<option value="B1">Kunde B1</option>
<option value="B2">Kunde B2</option>
</select>
<input type='submit' value='send'>
</div>
</form>

<?php
} // end if-else
?>

</body>
</html>

<?php
function getCustomerData($md) {
echo "<p>You typed $md\n<br>So this must be second time the script is called</p>";
}
?>
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