Avatar billede condor9 Nybegynder
11. februar 2014 - 21:12 Der er 6 kommentarer

Indsætte data fra input bokse i sql database

Okay, overskriften siger ikke sindssygt meget, men det er svært at forklare mit problem i en overskrift.

Det jeg har lidt udfordringer med, er at sætte nogle data ind i en database via nogle input felter på en php form. Det er et simpelt bestillingsmodul jeg er ved at kode, og de produkter jeg har som man kan bestille, har hver sit input felt hvor man kan angive antal og så en læg i kurv knap.

Det jeg ønsker er gemme antallet og så en vare id som jeg har gemt i en input type hidden, men kun ud for den vare hvor man trykker på Læg i kurv.

Kan man lave en smart funktion med onsubmit hvor den gemmer kun de data fra den inputboks som er "koblet" samme med bestillings knappen?

Giver det mening? :)
Avatar billede jakobdo Ekspert
11. februar 2014 - 22:02 #1
Altså du har jo en "form" i html, som jeg gætter på laver en POST, når der trykkes SUBMIT.

Du kan få adgang til data i POST via:

$_POST
Så er det bare at grave sig ned i $_POST array'et.

Du kan starte med at lave:

<form action="debug.php" method="post">
din form...
din submit...
</form>

Og så debug.php:

<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>

Så kan du se hvilke data der kommer via din form / post.
Avatar billede condor9 Nybegynder
11. februar 2014 - 22:07 #2
Hej Jakob

Tak for dit svar. Det er helt korrekt at jeg har en html form med flere "produkter"/inputbokse hvor man kan angive antal ud for. Problemet er, at hvis jeg sætter 1 ud for det første produkt, så gemmer den kun det sidste produkt hvor der ikke står et antal ud for. Der vil jeg gerne styre at den gemmer antal ved den input boks jeg trykker gem ud for (som jo så også vil være den boks hvor man har angivet et antal)

Mvh
Thomas.
Avatar billede jakobdo Ekspert
11. februar 2014 - 22:12 #3
Enten skal du lave en form pr produkt.
Ellers kunne du lave:

Produkt 1: <input type="text" name="product['prod_1']">
Produkt 2: <input type="text" name="product['prod_2']">

Så har du et array med antal i?
Avatar billede condor9 Nybegynder
12. februar 2014 - 08:13 #4
Hej Jakob

Jeg har lavet sådan et array, men udfordringen ligger i, at hvis brugeren fylder data i alle felterne, så gemmer den også alt dataen i databasen - altså fra alle input felterne.

Jeg har bruge for, at den kun gemmer det data der er i feltet ud for der hvor man trykker tilføj kurv.

Forestil dig at du ser en webshop med en lang række af produkter. Ud for hvert produkt er der et felt hvor man kan skrive antal og så en Læg i kurv knap. Det jeg gerne vil er, at man kan skrive et antal ud for et produkt og trykke læg i kurv, og så gemmer den det antal man har skrevet ved det ene produkt i en database.

Som jeg har lavet det nu, der har jeg et array hvor den gemmer alle, hvor der står noget i antal feltet.

Det er måske sværer at forklare, ellers kan jeg ikke helt forklare det præcist nok? :)
Avatar billede jakobdo Ekspert
12. februar 2014 - 09:24 #5
Så ville jeg måske lave det sådan her:

Produkt 1 <input type="text" name="product['prod_1']"> <input type="submit" name="add['prod_1']" value=" Tilføj til kurv "><br />
Produkt 2 <input type="text" name="product['prod_2']"> <input type="submit" name="add['prod_2']" value=" Tilføj til kurv "><br />

Kan du så ikke se hvilken "submit" der er kaldt og tage "id" ud af den ?
Avatar billede jakobdo Ekspert
12. februar 2014 - 09:24 #6
Det mest elegante ville jo nok være at lave det i noget AJAX løsning.
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