Avatar billede walles79 Nybegynder
27. oktober 2008 - 10:23 Der er 8 kommentarer og
1 løsning

indsætte et javascript array og over i et PHP Array

Hej som i kan læse kunne jeg godt tænke mig at hente data ud af et JS Array og over i et PHP array.. tricket er at dataen ligger er godt og grundig viklet ind. Er selv blevet viklet ind i dette kode og kan ikke find ud af hvordan jeg kan komme videre.

men Antal skal videre sendes når brugeren trykker på submit knappen. og skal skrives én gang til i bekræftelses formen. håber i kan se problemt.

På forhånd tak

her er koden :

html>
<head>
<style type="text/css">
p {
    font-family:  arial;
    font-size: 12px;
}
h1 {
    font-family: arial;
    font-size: 20px;
}
h2 {
    font-family: arial;
    font-size: 16px;
}
</style>

<script src="selectuser.js"></script>
<?php
require("inc/db.php");

$conn = connection();

    $antal =Array();
    $produkt['id'] =Array();
    $produkt['varenr'] =Array();
    $produkt['produktnavn'] =Array();
    $produkt['pris'] =Array();
    $produkt['antal'] =Array();

    $sql = "SELECT * ";
    $sql .= "FROM produkter ";
    $sql .= "ORDER BY varenr";     

    $result = mysql_query($sql, $conn);
   
if (!$result) {
  die ("query ikke udført: " . $sql. "<br /><strong>Fejl:</strong> " . mysql_error($conn));
}

while ($row = mysql_fetch_assoc($result)) {

    array_push($produkt["id"], $row["id"]);
    array_push($produkt["varenr"], $row["varenr"]);
    array_push($produkt["produktnavn"], $row["produktnavn"]);
    array_push($produkt["pris"], $row["pris"]);
    array_push($produkt["antal"], $row["antal"]);
}
?>
<script language="JavaScript">
    var varenr = new Array();
    var produkter = new Array();
    var pris = new Array();
    var antal  = new Array();
   
<?php

for ($i=0; $i< count($produkt["varenr"]); $i++) {
    echo 'varenr['.$i.']= "'. $produkt["varenr"][$i] .'";';
}
for ($i=0; $i< count($produkt["produktnavn"]); $i++) {
    echo 'produkter['.$i.']= "'. $produkt["produktnavn"][$i] .'";';
}
for ($i=0; $i< count($produkt["pris"]); $i++) {
    echo 'pris['.$i.']= "'. $produkt["pris"][$i] .'";';
}
for ($i=0; $i< count($produkt["antal"]); $i++) {
    echo 'antal['.$i.']= "'. $produkt["antal"][$i] .'";';
}
?>
function showForm() {
    document.getElementById("formdiv").innerHTML = '<tr><td width="80px">Varenr :</td><td width="210px">Produktnavn :</td><td width="75px" colspan="2">Antal :</td><td width="80px" align="right" colspan="2">Pris :</td><td width="120px" align="right" colspan="2">Total :</td></tr>';
    for  ( i=0; i < antal.length; i++ ) {
   
        document.getElementById("varenr").innerHTML +=
            '<td width="75px" align="right"><input type="hidden" name="varenr' + i +'" value="' + varenr[i] + '" />' + varenr[i] + '</td>';
        document.getElementById("produkter").innerHTML +=
            '<td width="190px"><input type="hidden" name="produkter' + i +'" value="' + produkter[i] + '" />' + produkter[i] +'</td>';
        document.getElementById("antal").innerHTML +=
            '<td width="50px"><input type="text" align="right" name="antal' + i +'" value="' + antal[i] + '" onkeyup="antal[' + i + ']=this.value; CalcTotal();" size="3"/></td>';
        document.getElementById("pris").innerHTML +=
            '<td width="50px" align="right"><input type="hidden" name="pris' + i +'" value="' + pris[i] + '" />' + pris[i] +'</td>';
        document.getElementById("samlet").innerHTML +=
            '<td width="90px" align="right"><span id="span' + i + '"><input type="hidden" name="samlet' + i +'" value="' + + antal[i] * pris [i] + + '" />' + antal[i] * pris [i] + '</span></td>';
        document.getElementById("kr").innerHTML +=
            '<td width="25px">kr.</td>';
        document.getElementById("kr2").innerHTML +=
            '<td width="25px">kr.</td>';
        document.getElementById("stk").innerHTML +=
            '<td width="25px">stk.</td>';
           
    }
}

function CalcTotal() {
   
    var total = 0;
    var moms = 0 ;
    for  ( i=0; i < antal.length; i++ ) {
        document.getElementById("span" + i).innerHTML = antal[i] * pris [i];
        total += antal[i] * pris [i];
        moms = (total * 1.25);   
           
    }           
    document.getElementById("totalid").innerHTML = total;
    document.getElementById("momsid").innerHTML = moms;
}

</script>
</head>
<body onload="showForm(); CalcTotal()">
<?php
if (isset($_POST['bestilling'])) {

    $conn = connection();
       
    $kunde = $_POST['kunde'];
    $adr = $_POST['adresse'];
    $post = $_POST['postnr'];
    $by = $_POST['by'];
    $mail = $_POST['users'];
   
    $sql = "SELECT * ";
    $sql .= "FROM kunder ";   
    $sql .= "WHERE email = '".$mail."'";
   
    $result = mysql_query($sql, $conn);           
    $count = mysql_num_rows($result);
   
    print ('<table>');
   
    if(!$count==1){   
        $sql2 = "INSERT INTO kunder (id, kunde, adresse, postnr, by, email) ";     
        $sql2 .= "VALUES ('".$id."', '".$kunde."', '".$adr."', '".$post."', '".$by."', '".$mail."')";           
        $result2 = mysql_query($sql2, $conn);   
       
    if($result2){
        print "<tr><td>Dine oplysninger er nu gemt i Databasen, til næste gang</td></tr>";
        }       
    if(!$result2){   
            echo "problem! ".$sql;
        }
    }

    print "<form id=\"kunde\" action=\"inform_m.php\" method=\"post\" >";   
    print '<table><tr><td><h1>Bekræftelse af bestilling</h1></td></tr>';   
    print '</table><table border="0">';
   
    print '<tr><td colspan="3"><h2>Vare :</h2></td></tr>';
    print '<tr><td colspan="8"><div id="formdiv" ></div></td></tr>';
    print '<tr><td><div id="varenr" ></div></td>';
    print '<td><div id="produkter" ></div></td>';
    $start=0;
while ($start++ < count($antal)) {
    print '<td>'.$antal[$start].'</td><td><div id="stk" ></div></td>';
    echo "her ".$antal;
}
    print '<td><div id="pris" ></div></td><td><div id="kr" ></div></td>';
    print '<td><div id="samlet" ></div></td><td><div id="kr2" ></div></td></tr>';
    print '</table><table>';
   
    print '<tr><td width="200px"></td><td>Total</td><td width="5px">:</td><td width="90px" align="right"><span id="totalid" ></span></td><td>kr.</td></tr>';
    print '<tr><td width="200px"></td><td>Moms 25%</td><td width="5px">:</td><td width="90px" align="right"><span id="momsid" ></span></td><td>kr.</td></tr>';
    print '</table><table>';
   
    print "<tr><td colspan=\"3\"><h2>Leverings adresse</h2></td><td><h2>:</h2></td>";
    print "<tr><td><p>E-mail </td><td>:</td><td>".$mail;
    print "<input type=\"hidden\" name=\"email\" id=\".$mail.\"  /></p></td></tr>";
   
    print "<tr><td width=\"100px\"><p>Navn</td><td>:</td><td>".$kunde."</td>";
    print "<input type=\"hidden\" name=\"kunde\" id=\".$kunde.\"  /></p></td></tr>";   
   
    print "<tr><td><p>Adresse</td><td>:</td><td>".$adr."</td>";
    print "<input type=\"hidden\" name=\"adresse\" id=\".$adr.\"  /></p></td></tr>";   
   
    print "<tr><td><p>Post nr.</td><td>:</td><td>".$post;       
    print "<input type=\"hidden\" name=\"postnr\" id=\".$post.\"  /></p></td></tr>";   
   
    print "<tr><td><p>By</td><td>:</td><td>".$by;
    print "<input type=\"hidden\" name=\"by\" id=\".$by.\"  /></p></td></tr>";       
       
    print '<tr><td><p><input type="button" value="tilbage" onClick="history.back();"></p></td><td></td>';
    print "<td><p><input type=\"submit\" class=\"sub\" name=\"submit\" value=\"send\" /></p></td></tr>";
   
    print "</table></form>";
mysql_close($conn);
}

else {

print '<form id="kunde" action="document.php" method="post" >';
print '<tr><td colspan="3"><h2>Vare :</h2></td></tr>';
print '<table border="0">';
print '<tr><td colspan="8"><div id="formdiv" ></div></td></tr>';
print '<tr><td><div id="varenr" ></div></td>';
print '<td><div id="produkter" ></div></td>';
print '<td><div id="antal" ></div></td><td><div id="stk" ></div></td>';
print '<td><div id="pris" ></div></td><td><div id="kr" ></div></td>';
print '<td><div id="samlet" ></div></td><td><div id="kr2" ></div></td></tr>';
print '</table><table>';

print '<tr><td></td></tr>';
print '<tr><td width="200px"></td><td>Total</td><td width="5px">:</td><td width="90px" align="right"><span id="totalid" ></span></td><td>kr.</td></tr>';
print '<tr><td width="200px"></td><td>Moms 25%</td><td width="5px">:</td><td width="90px" align="right"><span id="momsid" ></span></td><td>kr.</td></tr>';
print '</table><table>';

print '<tr><td colspan="8"><h2>Leverings adresse :</h2></td></tr>';
print '<tr><td width="100px"><p>Indtast din email</td><td>:</td><td><input type="text" name="users" id="users" onKeyUp="showUser(this.value)" onChange="showUser(this.value)"size="40"></p></td></tr>';
print '<tr><td colspan="3"><p><div id="txtHint">Ved email indtastning hentes dine oplysninger automatisk ! ';
print '<br /> ellers vil der komme en formular som du skal udfylde</div></p></td></tr>    ';   
print '</table></form>';
}
?>
</body>
</html>
Avatar billede olebole Juniormester
27. oktober 2008 - 10:30 #1
<ole>

Hvad er det for data, du taler om - og hvad er det for et JS-array?

/mvh
</bole>
Avatar billede olebole Juniormester
27. oktober 2008 - 10:31 #2
- og lad os venligst se koden, som den ser, når den er skrevet ud til browseren - meget gerne i form af et link  =)
Avatar billede walles79 Nybegynder
27. oktober 2008 - 12:01 #3
Hej undskyld hvis jeg er lidt uklar...

men basalt er der to formulare, den første sender data til den næste,(form 2 sender så den data videre til et helt andet dokument).
den data jeg er interesseret i er det array som hedder "antal".

i den første form indtaster brugerne data i input felterne "antal", der bliver udskrevet i en for løkke i headeren (javascriptet "function showForm()" ). "antal" dataerne bliver udregnet realtime i "function CalcTotal()"  og sendt til pladsholderen <div id="antal" ></div>( ups plads holderen er blevet erstattet med den 
$start=0;
while ($start++ < count($antal))
man kan se, i et af mine utallige forsøg på at løse problemt).

det er så her mit problem er. jeg skal kunne sende fra pladsholderens data vidre til form nr. 2. via min submit knap. i den forbindelse tror jeg det ville være en fordel at få dataen i et php array istedet for javescript, også fordi form nr.2 sender data videre til et andet dokument.

http://www.tc-webdesign.dk//tc/form/form.php (optimalt i firefox) :D

håber det gav mere mening
Avatar billede roenving Novice
27. oktober 2008 - 15:56 #4
Indsæt bare værdierne i et felt adskilt af kommaer eller andet, så kan du i dit php-script forvandle det til et array !-)
Avatar billede walles79 Nybegynder
03. november 2008 - 01:13 #5
roenving jeg er ikke helt med på hvad du mener/ hvor jeg skal indsætte de værdier som du snakker om... kunne du give et eksempel ?
Tak fordi jeres svar indtil videre :)
Avatar billede roenving Novice
03. november 2008 - 16:46 #6
F.eks.

<form ... onsubmit="return getNums(this);">

<input type="hidden" name="nums">

<input type="text" name="antal">
<input type="text" name="antal">
<input type="text" name="antal">
<input type="text" name="antal">

...

</form>

<script type="text/javascript">
function getNums(f){
  var inps =  f.antal, res = [];
  for(var i=0, im=inps.length; im>i; i++)
    res.push(inps[i].value);
  f.nums.value = res.join(",");
}
</script>

-- så kan du hente dem serverside ved at aflæse $_GET eller $_POST("nums") !-)
Avatar billede walles79 Nybegynder
05. november 2008 - 09:07 #7
hej takker for alle jeres svar, jeg fandt selv ud af en løsning men at roenving skulle skrive et svar og få mine point. da du har haft mest besvær med at hjælpe mig :) tak tak
Avatar billede roenving Novice
05. november 2008 - 09:39 #8
Oki '-)
Avatar billede roenving Novice
05. november 2008 - 09:48 #9
-- og jeg takker for point ;~}
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
Kurser inden for grundlæggende programmering

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