Gå til innhold

Flytte noen rader fra en tabell til en annen?


Anbefalte innlegg

Jobber med en nettbutikk, og da blir allerede produktene man legger i handlekurven lagt i en tabell kalt tempcart hvor det blir lagret en unik id, ip og produktnavnet/tittelen

 

Hvert produkt en person har får hver sin rad..

 

Når man går til kassa da og bekrefter bestillingen, så vil jeg at alle produktene fra den ip'en i tempcart blir flytta til tabellen ordre. Da vil jeg helst at alle produktene kommer i et felt

 

Men hvordan skal jeg få til det?

 

Har prøvd og prøvd, men får ikke til =/

 

(Si ifra om dere ikke skjønner hva i all verden jeg snakker om hehe)

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Vel det er jo du som har orden på hvordan systemet ditt funker (antar jeg :ermm: ) da. - Jeg vet ikke hvordan det ser ut.

 

Men jeg kunne tenke meg at du vil måtte hente ut id og antall for alle produktene ifra tempcart som tilhører den ipen med php, deretter legge iden og antall inn i den andre databasen tilpasset ditt format.

--

Hent ut tempcart, id og antall-

Loop resultat fra query og fyr id inn som key, mens antall inn som value i et array.

Serialize array og sett inn i ordre sammen med annen info om brukeren.

Lenke til kommentar
Men jeg kunne tenke meg at du vil måtte hente ut id og antall for alle produktene ifra tempcart som tilhører den ipen med php, deretter legge iden og antall inn i den andre databasen tilpasset ditt format.

Ja, der er problemet...får ikke det til

 

Men jeg la til noen felter til, og så tok jeg slik at hvis "bestilt" = 0 så er den bare i handlekurven, og hvis den er 1 så betyr det at produktet er bestilt så..

 

Men jeg skal prøve litt mer om jeg får til å få flytta det over i kveld

Lenke til kommentar
Gjest Slettet+142

Databasestruktur er viktig når man skal lage et system som benytter seg av databaser, databasebehandlig og lignende..

Så det er vel viktig at man har kanskje flere tabeller for en handlekurv. En til å holde forbindelsene, som iden til produktet, ipen og evt. bruker.

Neste database inneholder varene, med unik id, id til handlekurvrelasjonstabellen som jeg nettopp nevnte og vareid :)

Lenke til kommentar

Kort innpå:

 

Kan det ikke være litt risikabelt å bruke IP-adresse for å hente ut produktene fra tabellen tempcart? Hva hvis to brukere fra samme nettverk gjør en bestilling samtidig, og disse sitter bak en brannmur? Da vil de mest sannsynlig ha den samme IP-adressen?

 

Vil det ikke være bedre å identifisere hver kunde med noe (mer) unikt?

Lenke til kommentar

Ja, jeg visste egentlig ikke åssen jeg skulle gjøre dette selv i starten.

Begynte egentlig med sessions, men jeg fikk ikke helt til..men jeg spurte heller aldri om hjelp da =/

Og så hvis man da var logget inn, så ble det lagt til i databasen med brukernavn. Så skulle det hentes ut hvor brukernavn = session_brukernavn slik som jeg tror de fleste nettbutikker har?

 

Men i stedet for, la jeg til et felt i tabellen kalt bestilt og så produkter som ble lagt til i handlekurven fikk status 0 i bestilt og så etter at den er bestilt får de 1 og når de er sendt/mottatt av nettbutikk-eieren får den status 2. Litt kjedelig å bekrefte hvert produkt sånn, men får heller oppdatere sida deres når jeg finner ut hvordan det kan gjøres på en bedre måte ;)

Lenke til kommentar

ehhh... hva med å bare kjøre en løkke?!!?!?!?!

while($r = mysql_fetch_array(mysql_query("SELECT produkt FROM temp WHERE unikid='".$hentid."'"))
{
$insert = mysql_query("INSERT INTO final (produkt,unikid) VALUES ('".$r['produkt']."', '".$hentid."')");
if($insert) { echo "Oppdatert"; }
else { echo "Feil..."; }
}

 

Men hvorfor bruker du databasen til å midlertidig lagre noe..? Dette kan du bruke en array til...

$_SESSION['unik_id'] = "id til bruker";
$_SESSION['produkt'][] = "Ferrari";
$_SESSION['produkt'][] = "Lada";

Produkt ->
0 - Ferrari
1 - Lada

 

Når "kunden" er ferdig å trykker "kjøp" (or whatever) legger du bare dette inn i en database og så sletter du det fra session variabelen med unset($_SESSION['produkt'])

 

------

 

Dette har jeg sett mange ganger... folk som ønsker å lage en nettbutikk løsning, men de tenket så stort og tungvindt... Jeg sier som Rema1000 (Skjult reklame??) Det enkleste er ofte det beste!

Endret av MrNeeon
Lenke til kommentar
ehhh... hva med å bare kjøre en løkke?!!?!?!?!

while($r = mysql_fetch_array(mysql_query("SELECT produkt FROM temp WHERE unikid='".$hentid."'"))
{
$insert = mysql_query("INSERT INTO final (produkt,unikid) VALUES ('".$r['produkt']."', '".$hentid."')");
if($insert) { echo "Oppdatert"; }
else { echo "Feil..."; }
}

Det var dette jeg hadde prøvd først. Men jeg vil at alle produktene man bestiller kommer i samme tekstfelt, og ikke over flere rader. Derfor ga jeg opp det der.

 

 

Men hvorfor bruker du databasen til å midlertidig lagre noe..? Dette kan du bruke en array til...

$_SESSION['unik_id'] = "id til bruker";
$_SESSION['produkt'][] = "Ferrari";
$_SESSION['produkt'][] = "Lada";

Produkt ->
0 - Ferrari
1 - Lada

Jeg prøvde først med sessions, men fikk ikke helt til. Fikk lagt til et produkt, og så når man la til neste så ble det første borte bare

Lenke til kommentar

Om du legger til et produkt på denne måten:

$_SESSION['produkt'][] = $produkt_id;

så vil arrayen fylle seg opp.. men når jeg tenker meg om, så må du nokk gjøre det slik

$_SESSION['bruker_id']['produkt'][] = $produkt_id;

slik at du ungår at alle brukere får samme handleliste...

Bare å gjøre det slik når en bruker trykker "kjøp"

 

$midlertidig_id = 223;
if($session_key === session_id())
 {
   $_SESSION[$midlertidig_id]['produkt'][] = $produkt_id;
   // Om du legger dette i en separat fil (f.eks kjop.php)
   // Så kan du eventuellt redirect tilbake til produktet..
   header("Location: index.php?produkt=$produkt_id");
 }

 

Når brukeren er ferdig handlet og har fått godkjent ordren, så fjerner du alle produktene fra arrayen

if($session_key === session_id())
 {
   unset($_SESSION[$midlertidig_id]['produkt']);
 }

Endret av MrNeeon
Lenke til kommentar
Gjest Slettet+142
Jeg prøvde først med sessions, men fikk ikke helt til. Fikk lagt til et produkt, og så når man la til neste så ble det første borte bare

9548369[/snapback]

Trenger jeg spørre om du hadde session_start(); i begynnesen av filen?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...