Gå til innhold

Lagre arrays i mySQL-database


Anbefalte innlegg

Skrevet

Jeg utvikler for tiden en nettbutikk hvor jeg ønsker at mine brukere skal kunne lagre handlekurven sin. Jeg trenger derfor å kunne lagre en array med produkter i en database. Syntes løsningen med å putte alle valgte produkter inn i en lang string, for så å skille de, virker noe resurskrevende og uprofesjonell.

 

Noen gode ideer? :)

Videoannonse
Annonse
Skrevet

Er ikke "resurskrevende og uprofesjonellt" og gjøre det slik

 

$produkter = array('0012','0013','0014');
$sql = "INSERT INTO min_tabell produkter VALUES ".implode(',', $produkter)."";
mysql_query($sql);

 

list($fetch) = mysql_fetch_row(mysql_query("SELECT produkter FROM min_tabell WHERE id={$id_til_bruker}"));
$produkter = explode(',', $fetch);

foreach($produkter as $items)
{
echo $items
}

Gjest Slettet+142
Skrevet

Hvordan fungerer serialize?

Det eksempelet på php sier meg ingenting :hm:

Skrevet (endret)

serialize gjør om en string/array slik at den lettere kan lagres i en database

Bruk denne koden, så skjønner du..

<?php
$saveme = serialize(array('en','to','tre'));
echo $saveme;
echo "<hr />";
print_r(unserialize($saveme));
?>

Endret av MrNeeon
Skrevet

Litt off topic i forhold til emne: Brukeren kan legge til flere produkter. For å spare litt resurser ønsker jeg å kun kjøre en spørring mot databasen når brukeren legger til et nytt produkt.

 

Jeg kunne selvsagt først hente ut det som allerede befinner seg i databasen, for så å benytte mysql_fetch_array(), slå sammen gammel handlekurv med nytt produkt, og til slutt sette dette inn i databasen. Men uff, for en sløsing med resurser...

 

Tenker meg noe som dette, hvor $produkt er det nye produktet som skal legges til:

UPDATE handlekurver SET handlekurven='*gammel handlekurv*+$produkt'

Skrevet

Bruk bare list()

$sql = "SELECT produkter FROM databsen WHERE brukerid={$bruker}";
list($produkter_i_db) = mysql_fetch_row(mysql_query($sql));

$update = mysql_query("UPDATE handlekurver SET handlekurven=$produkter_i_db.$nye_produkter");

Skrevet
Bruk bare list()

$sql = "SELECT produkter FROM databsen WHERE brukerid={$bruker}";
list($produkter_i_db) = mysql_fetch_row(mysql_query($sql));

$update = mysql_query("UPDATE handlekurver SET handlekurven=$produkter_i_db.$nye_produkter");

8730233[/snapback]

Her bruker du to spørringer og PHP. Er det ikke mulig å la MySQL ordne alt alene i en spørring?

Skrevet (endret)

du kan omstrukturere databasen litt.

 

create table pending_art (id int(11) NOT NULL PRIMARY KEY auto_increment, artikkel_id int(11), handlevogn_id INT(11), antall int(11));

 

du må sikkert justere datatypene og navnene litt

 

når en kunde legger til en artikkel sjekkes pending_art om artikkelen allerede eksisterer med samme handlevogn_id. hvis den gjør det økes antallet med en, hvis ikke legges den inn med antall = 1.

 

da kan du selecte artikler where handlevogn_id = kunde_handlevogn_id.

 

dette gir også en bedre oversikt over totalt hva som skal pakkes og gjøres klar til sending osv.

 

edit:

er du optimalist vil du kanskje heller ha noe slikt:

 

create table pending_art (artikkel_id int(11), handlevogn_id int(11), antall int(11), PRIMARY KEY(artikkel_id, handlevogn_id));

 

edit2:

kanskje legg til en kolonne som viser om den er aktiv eller ikke også (om det er handlet eller lagret).

Endret av grimjoey

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...