simenss Skrevet 27. mai 2007 Del Skrevet 27. mai 2007 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? Lenke til kommentar
Beethoven Skrevet 27. mai 2007 Del Skrevet 27. mai 2007 se på funksjonen serialize() og unserialize() Lenke til kommentar
Suspect Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 Vil foreslå serialize() og unserialize() for å gjøre dette www.php.net Lenke til kommentar
Stian Jacobsen Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 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 } Lenke til kommentar
Beethoven Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 MrNeeon, det er mindre ressurskrevende enn serialize? Lenke til kommentar
Gjest Slettet+142 Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 Hvordan fungerer serialize? Det eksempelet på php sier meg ingenting Lenke til kommentar
Stian Jacobsen Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 (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 28. mai 2007 av MrNeeon Lenke til kommentar
simenss Skrevet 29. mai 2007 Forfatter Del Skrevet 29. mai 2007 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' Lenke til kommentar
Stian Jacobsen Skrevet 29. mai 2007 Del Skrevet 29. mai 2007 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"); Lenke til kommentar
simenss Skrevet 29. mai 2007 Forfatter Del Skrevet 29. mai 2007 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? Lenke til kommentar
FraXinuS Skrevet 29. mai 2007 Del Skrevet 29. mai 2007 Du kan gjøre slik: "UPDATE handlekurver SET handlekurven=CONCAT(handlekurven, '{$nye_produkter}')" Lenke til kommentar
grimjoey Skrevet 4. juni 2007 Del Skrevet 4. juni 2007 (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 4. juni 2007 av grimjoey Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå