Avatar billede seattaken Nybegynder
11. juni 2003 - 00:14 Der er 28 kommentarer

Hvordan gemmer jeg noget i en database fra WML

Hej Alle
Jeg er ved og lave afgangsprojekt. mit problem ligger i, at jeg fra en wap telefon skal have puttet noget data ind i en MySQL database ved hjælp af php. Det vil sige, at wml'en skal indeholde den funktion, at man kan gemme noget i databasen. Min kode ser sådan ud:

<?php
// send wml headers
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""
  . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>

<?php
$sql = mysql_connect("62.107.90.155", "root");
mysql_select_db("mobil");

if(isset($_POST["submittype"])) {
    if($_POST["submittype"] == "opretkunde") {
       
        $query = "INSERT INTO kunde
                  (fornavn, efternavn, firmanavn, gadenavn, hus_nr, post_nr)
                    VALUES(
                    '" . $_POST["fornavn"] . "',
                    '" . $_POST["efternavn"] . "',
                    '" . $_POST["firmanavn"] . "',
                    '" . $_POST["gadenavn"] . "',
                    " . ($_POST["hus_nr"] ? $_POST["hus_nr"] : NULL). ",
                    " . $_POST["post_nr"] . ")";
       
        $result = mysql_query($query);
    }
}
?>
<wml>
<card id="opretkunde" title="Opret Kunde:">
<p>
<fieldset title="">
    Fornavn:<input name="fornavn" type="text"/>
    Efternavn:<input name="efternavn" type="text"/>
    Firmnavn:<input name="efternavn" type="text"/>
    Gadenavn:<input name="efternavn" type="text"/>
    Hus nr.:<input name="efternavn" type="text"/>
    Post nr.:<input name="efternavn" type="text"/>
</fieldset>
</p>
</card>
</wml>

kan nogen hjælpe mig?
Send evt. en mail til grisling@stofanet.dk
Avatar billede swaxi Nybegynder
11. juni 2003 - 10:36 #1
jeg har aldrig skrevet noget wml, men principielt fungerer det vist som html. jeg mener, at du skal lave noget a la :
<do type="accept" label="submit">
  <go method="post" href="http://www.example.com/">
    Fornavn:<postfield name="fornavn" value=""/>
    Efternavn:<postfield name="efternavn" value=""/>
    Firmnavn:<postfield name="firmanavn" value=""/>
    Gadenavn:<postfield name="gadenavn" value=""/>
    Hus nr.:<postfieldt name="hus_nr" value=""/>
    Post nr.:<postfield name="post_nr" value=""/>
  </go>
</do>

der så modsvarer et <form> felt i html
Avatar billede seattaken Nybegynder
11. juni 2003 - 11:11 #2
jeg er så lidt i tvivl om hvad jeg skal skrive på href's plads? og skal der ikke sættes noget ind under value?
Avatar billede swaxi Nybegynder
11. juni 2003 - 11:25 #3
value="" er kun til start-værdien ... altså den værdi, som felterne har fra starten - det er ikke nødvendigt at skrive noget i dem.
href="" skal udfyldes med det samme, som du ville udfylde action="" med i et <form> felt. du kan eks. skrive :
<go method="post" href="<?=$PHP_SELF?>">
Avatar billede swaxi Nybegynder
11. juni 2003 - 11:28 #4
husk i øvrigt, at bruge addslashes() når du indsætter post'ede data i en query. eg. :
$query = "INSERT INTO kunde
                  (fornavn, efternavn, firmanavn, gadenavn, hus_nr, post_nr)
                    VALUES (
                    '" . addslashes($_POST["fornavn"]) . "',
                    '" . addslashes($_POST["efternavn"]) . "',
                    '" . addslashes($_POST["firmanavn"]) . "',
                    '" . addslashes($_POST["gadenavn"]) . "',
                    " . (isset($_POST["hus_nr"]) ? "'".addslashes($_POST["hus_nr"])."'" : "NULL"). ",
                    '" . addslashes($_POST["post_nr"]) . "')";
Avatar billede seattaken Nybegynder
11. juni 2003 - 11:34 #5
<?php
// send wml headers
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""
  . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>

<?php
$sql = mysql_connect("62.107.90.155", "root");
mysql_select_db("mobil");

if(isset($_POST["submittype"])) {
    if($_POST["submittype"] == "opretkunde") {
       
        $query = "INSERT INTO kunde
                  (fornavn, efternavn, firmanavn, gadenavn, hus_nr, post_nr)
                    VALUES(
                    '" . $_POST["fornavn"] . "',
                    '" . $_POST["efternavn"] . "',
                    '" . $_POST["firmanavn"] . "',
                    '" . $_POST["gadenavn"] . "',
                    " . ($_POST["hus_nr"] ? $_POST["hus_nr"] : NULL). ",
                    " . $_POST["post_nr"] . ")";
       
        $result = mysql_query($query);
    }
}
?>
<wml>
<card id="opretkunde" title="Opret Kunde:">
<do type="accept" label="submit">
  <go method="post" href="">
    Fornavn:<postfield name="fornavn" value=""/>
    Efternavn:<postfield name="efternavn" value=""/>
    Firmnavn:<postfield name="firmanavn" value=""/>
    Gadenavn:<postfield name="gadenavn" value=""/>
    Hus nr.:<postfieldt name="hus_nr" value=""/>
    Post nr.:<postfield name="post_nr" value=""/>
  </go>
</do>
</card>
</wml>

Nu ser koden sådan her ud: Men når jeg får den over i wabbrowseren så viser den kun submit knappen ikke felterne som skal udfyldes - jeg sætter meget pris på din hjælp fordi det er ved, at stige mig til hovedet.
Avatar billede seattaken Nybegynder
11. juni 2003 - 11:42 #6
jeg har tilføjet addslashes() til koden.
Avatar billede seattaken Nybegynder
11. juni 2003 - 12:39 #7
men det funger ikke endnu
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:07 #8
addslashes har ikke noget at gøre med om det virker eller ej - det er bare et spørgsmål om sikkerhed. hvis du ikke bruger addlsashes, kan dine brugere ret nemt hacke dig kode vhs. en såkaldt injection. det behøver du ikke tænke så meget over.
jeg har mere eller mindre taget ovennævnte wapkode fra et eksempel fra nettet, kombineret med lidt gefühl, så hvis det ikke virker, er det nok fordi, jeg famler lidt i blinde.
Avatar billede seattaken Nybegynder
11. juni 2003 - 14:11 #9
Sikkerheden er lige meget - det skal bare virke :o) jeg har tilføjet lidt til koden men nu får jeg, at vide at metoden ikke er tilladt. Kan du måske se hvad jeg gør forkert?

<?php
// send wml headers
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""
  . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>

<?php
$sql = mysql_connect("62.107.90.155", "root");
mysql_select_db("mobil");

if(isset($_POST["submittype"])) {
    if($_POST["submittype"] == "opretkunde") {
       
$query = "INSERT INTO kunde
        (fornavn, efternavn, firmanavn, gadenavn, hus_nr, post_nr) VALUES('" . $_POST["fornavn"] . "', '" . $_POST["efternavn"] . "', '" . $_POST["firmanavn"] . "', '" . $_POST["gadenavn"] . "', " . ($_POST["hus_nr"] ? $_POST["hus_nr"] : NULL). ", " . $_POST["post_nr"] . ")";
          $result = mysql_query($query);
       
    }
}
?>
<wml>
<card id="opretkunde" title="Opret Kunde:">
<p>
    Fornavn:<input name="fornavn" type="text" format=""/>
    Efternavn:<input name="efternavn" type="text" format=""/>
    Firmnavn:<input name="firmanavn" type="text" format=""/>
    Gadenavn:<input name="gadenavn" type="text" format=""/>
    Hus nr.:<input name="hus_nr" type="text" format="*N"/>
    Post nr.:<input name="post_nr" type="text" format="4N"/>

<anchor>Opret   
<go method="post" href="kunde.wml">
    <postfield name="fornavn" value="$(fornavn)" />
    <postfield name="efternavn" value="$(efternavn)" />
    <postfield name="firmanavn" value="$(firmanavn)" />
    <postfield name="gadenavn" value="$(gadenavn)" />
    <postfield name="hus_nr" value="$(hus_nr)" />
    <postfield name="post_nr" value="$(post_nr)" />
</go>
</anchor>
</p>
</card>
</wml>
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:16 #10
jeg kiggede lidt på et andet eksempel. prøv med det her :

<wml>
    <card newcontext="false" ordered="true">
        Fornavn:<input type="text" emptyok="false" name="fornavn" />
        Efternavn:<input type="text" emptyok="false" name="efternavn" type="text" />
        Firmnavn:<input type="text" emptyok="false" name="firmanavn" type="text" />
        Gadenavn:<input type="text" emptyok="false" name="gadenavn" type="text" />
        Hus nr.:<input type="text" emptyok="false" name="hus_nr" type="text" />
        Post nr.:<input type="text" emptyok="false" name="post_nr" type="text" />
        <anchor title="Submit">
            Submit
            <go href="<?=$PHP_SELF?>" sendreferer="false" method="get" />
        </anchor>
    </card>
</wml>
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:18 #11
pas i øvrigt på med, at post'e dit login til et forum, som det her ;)
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:22 #12
jeg kan ikke helt greje det, men det lader til, at man ikke kan sende en form vha. POST i wml - kun GET. jeg ved ikke helt om det passer, men det lyder vel egt. rimeligt nok.
Avatar billede seattaken Nybegynder
11. juni 2003 - 14:22 #13
den kommer med en fejl - jeg tror ikke at den ved hvad emptyok er. Samtidig skriver den at <?=$PHP_SELF?> er en udefineret variabel
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:25 #14
så bare drop emptyok ... jeg kopierede det bare fra et eksempel.

<?=$PHP_SELF?> er et kald til php. det er muligt, at din php-parser ikke har sat shorttags til. prøv at skrive dette i stedet : <?php echo $PHP_SELF; ?>
Avatar billede seattaken Nybegynder
11. juni 2003 - 14:36 #15
jeg har også lige slettet den ene af type="text" men kan der være noget i vejen med mit mysql kald i toppen?
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:38 #16
nej, så ville du få en fejl fra php. prøv evt. at er statte linien :
    $result = mysql_query($query);
med :
    mysql_query($query) or die(mysql_error());
Avatar billede seattaken Nybegynder
11. juni 2003 - 14:43 #17
det ændrer ikke noget - den kommer kun med en fejl hvis jeg skriver noget i href feltet. Skal der stå noget der?
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:46 #18
jah ... jeg formoder at target-scriptet skal stå der. derfor <?php echo $PHP_SELF; ?> (som får php til at skrive url'en til sig selv ud)
Avatar billede swaxi Nybegynder
11. juni 2003 - 14:47 #19
hvilken fejl får du i øvrigt ?
Avatar billede seattaken Nybegynder
11. juni 2003 - 14:48 #20
Jeg får den her fejl: Parser failed. Invalid XML syntax.
not well-formed (invalid token) at line 12, column 22, byte 675

og her er kildekoden som den kommer med:
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
    <card newcontext="false" ordered="true">
        Fornavn:<input type="text" emptyok="false" name="fornavn" />
        Efternavn:<input type="text" emptyok="false" name="efternavn" />
        Firmnavn:<input type="text" emptyok="false" name="firmanavn" />
        Gadenavn:<input type="text" emptyok="false" name="gadenavn" />
        Hus nr.:<input type="text" emptyok="false" name="hus_nr" />
        Post nr.:<input type="text" emptyok="false" name="post_nr" />
        <anchor title="Submit">
            Submit
            <go href="<br />
<b>Notice</b>:  Undefined variable:  PHP_SELF in <b>c:\apache\htdocs\wml\wml\test.php</b> on line <b>32</b><br />
" sendreferer="false" method="get" />
        </anchor>
    </card>
</wml>
Avatar billede swaxi Nybegynder
11. juni 2003 - 15:11 #21
wierd ... hvilken version af php bruger du ?
prøv, at skrive navnet på det script i stedet for <?php echo $PHP_SELF; ?>
eg .. opretkunde.php
Avatar billede seattaken Nybegynder
11. juni 2003 - 15:15 #22
php 4.3.1
Avatar billede seattaken Nybegynder
11. juni 2003 - 15:17 #23
når jeg så trykker på submit så får jeg den her fejl. The webserver told me that 404 Not Found
Avatar billede swaxi Nybegynder
11. juni 2003 - 17:12 #24
hvad har du stående i <go href=""> når du får den fejl ?
href="" angiver (formoder jeg) hvilket script, den skal sende data til. så du skal skrive navnet på det script (dvs. det samme script, som indeholder wml-siden) ... jeg gætter bare på, at det hedder "opretkunde.php"
Avatar billede swaxi Nybegynder
11. juni 2003 - 21:01 #25
jeg kom til at tænke på ... når du får følgende fejl :
<b>Notice</b>:  Undefined variable:  PHP_SELF in <b>c:\apache\htdocs\wml\wml\test.php</b> on line <b>32</b><br />

så er det vel ikke fordi, du har glemt dollar-tegnet foran PHP_SELF vel ?
Avatar billede seattaken Nybegynder
12. juni 2003 - 03:40 #26
Nu er jeg kommet frem til det her - så kommer der i hvert fald ikke nogen fejl mere :o) men det virker bare stadig ikke efter hensigten. Når jeg henter det ned på waptelefonen så skriver malformed content.

<?php
// send wml headers
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""
  . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>

<?php
$sql = mysql_connect("62.107.90.155", "root");
mysql_select_db("mobil");

if(isset($_POST["submittype"])) {
    if($_POST["submittype"] == "opretkunde") {
       
$query = "INSERT INTO kunde
        (fornavn, efternavn, firmanavn, gadenavn, hus_nr, post_nr) VALUES('" . $_POST["fornavn"] . "', '" . $_POST["efternavn"] . "', '" . $_POST["firmanavn"] . "', '" . $_POST["gadenavn"] . "', " . ($_POST["hus_nr"] ? $_POST["hus_nr"] : NULL). ", " . $_POST["post_nr"] . ")";
          $result = mysql_query($query);       
    }
}
?>
<wml>
    <card id="test" title="Opret Kunde:">
        Fornavn:<input type="text" name="fornavn" />
        Efternavn:<input type="text" name="efternavn" />
        Firmnavn:<input type="text" name="firmanavn" />
        Gadenavn:<input type="text" name="gadenavn" />
        Hus nr.:<input type="text" name="hus_nr" />
        Post nr.:<input type="text" name="post_nr" />
       
        <anchor title="Submit">Submit
            <go href="<?php $_SERVER["PHP_SELF"]; ?>" method="post" />
        </anchor>
    </card>
</wml>
Avatar billede seattaken Nybegynder
02. december 2004 - 19:31 #27
Så bliver den lige lukket
Avatar billede seattaken Nybegynder
02. december 2004 - 19:31 #28
ups
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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