Avatar billede condor9 Nybegynder
08. februar 2012 - 23:28 Der er 5 kommentarer

Implode/PHP og Mysql

Hejsa

Jeg har en lille opgave jeg ikke kan løse.

Jeg er ved at lave en bestillingsside, hvor der bliver sat et antal produkter ind ud fra en mysql søgning.. Det vil sige, at listen med produkter der kan bestilles kan variere fra 2 til 20..

Bestillingssiden er lavet med inputbokse.

Når man trykker på bestil, kunne jeg godt tænke mig at få lagt bestillingen ind i en database, hvor hver produkt der bestilles får hver sin linie i databasen. Her har jeg læst mig frem til, at man kan samle alt indputtet fra inputboksene med et array og så lave mysql strængen med en implode, men jeg kan simpelthen ikke finde ud af at lave de 2 funktioner - har efterhånden læst højt og lavt på nettet om det.. :(

på bestillinssiden er der 4 informationer der skal med, antal, varetekst pris og kundeid. I databasen vil jeg så gerne gemme de samme 4 plus et ordre id der generes ved bestillingen..

Er det sort snap? :)
Avatar billede inteeeL Nybegynder
08. februar 2012 - 23:37 #1
Der er et utal af måder at håndtere en bestilling kombineret med mysql. Kan du fortælle os, hvad du ind til videre har? Eventuelt et stykke kode?

Det behøver ikke gøres besværligere, end det egentlig er. Hvis kundens kurv håndteres af array/session, kan du blot trække dataene ud fra den med et loop, og dermed sætte hvert produkt ind i databasen. Noget lignende nedenstående:

foreach products as product
- query, der tilføjer en række med det pågældende produkt
Avatar billede condor9 Nybegynder
08. februar 2012 - 23:46 #2
Tak for det hurtige svar. :)

Jeg har ikke vildt meget kode til den funktion endnu, så har ikke så meget at vise. :)

Vi kan antage at jeg har en bestillingsside med 4 produkter der er vist i 3 kolonner. I de 3 kolonner er der henholdsvis antal, varetekst og pris. Når brugeren trykker bestil, skal outputtet fra input boksene samles i et array for at kunne ligge dem ind i databasen vis en SQl Insert streng? Der er ikke rigtigt nogen kurv som brugeren kan se, bestillingen skal blot sættes ind i databasen når der trykkes på bestil.. :)

Det jeg har fundet frem til er, at man med en SQL Insert streng kan sætte flere værdier ind på en gang sådan her:

INSERT INTO example
  (example_id, name, value, other_value)
VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');

men her er det så blot at jeg skal have samlet outputtet fra mine input bokse til et value som eksemplet foroven.. Eller er jeg helt galt på den?
Avatar billede condor9 Nybegynder
08. februar 2012 - 23:50 #3
min input bokse hedder antal, varetekst og pris.
Avatar billede showsource Seniormester
09. februar 2012 - 00:24 #4
Ved at brug [] i navnet på et form-element, får du et array

<input type="radio" name="id_nr[1]"> tekst-pris
<input type="radio" name="id_nr[2]"> tekst-pris

if(isset($_POST["id_nr"]) && is_array($_POST["id_nr"])) {
print_r($_POST["id_nr"]);
}



<input type="radio" name="id_nr[]" value="1"> tekst-pris
<input type="radio" name="id_nr[]" value="2"> tekst-pris

if(isset($_POST["id_nr"]) && is_array($_POST["id_nr"])) {
print_r($_POST["id_nr"]);
}

if(isset($_POST["id_nr"]) && is_array($_POST["id_nr"])) {

$sql = "INSERT INTO tabel VALUES (".implode(",",$_POST["id_nr"]).")";

}
Avatar billede olebole Juniormester
09. februar 2012 - 15:42 #5
<ole>

Men udgangspunktet er overvejende sandsynligt en skidt løsning. Du får som oftest problemer ud af at gemme flere type data i ét felt. Det strider mod hele idéen med en database.

Gem de forskellige data i forskellige felter i stedet

/mvh
</bole>
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