17. august 2005 - 17:26
Der er
55 kommentarer og 1 løsning
Gemme flere ID numre i samme session
Hej der... Jeg har en side, hvor man kan vælge nogle bøger, der alle har unikt ID nummer - det jeg ikke kan finde ud af er, hvordan får jeg husket alle valgte numre, så jeg senere kan hente dem igen, og bruge dem til kald til MySQL, så de valgte bøger kan listes op i bestillingsformular? Noget i retning af; $valgte_numre = '5, 8, 19, 45'; session_register("valgte_numre"); Altså er 5, 8, 19 og 45 valgt, og disse skal så hentes fra MySQL Til at forstå ? :) hilsen Conrad
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
17. august 2005 - 17:44
#1
Arghh....No Help???
17. august 2005 - 17:50
#2
...når formularen submittes, er det så tanken, at den samtidigt "dræber" sessionen....
17. august 2005 - 17:50
#3
Men duer det ikke det du har skrevet?
17. august 2005 - 17:55
#4
Ikke umiddelbart - jeg vælger numrene efterhånden - klikker på et link, <a href=index.php?id_valgt=5>Bog fem</a> <a href=index.php?id_valgt=8>Bog otte</a> Disse numre skal så "samles op" og huskes, så jeg kan hente titlerne i MySQL efter ID numrene...
17. august 2005 - 18:02
#5
Kan desværre ikke hæve points :o)
17. august 2005 - 18:08
#6
Burde kunne løse database problemet: $valgte_numre = '5, 8, 19, 45'; $SQL = "SELECT * FROM dinTabel WHERE id IN (" . $valgte_numre . ")";
17. august 2005 - 18:13
#7
Takker, så langt... Men hvordan får man dem ind i samme session? Den skifter jo værdi - først er den = 5, derefter bliver den = 5 og 8, o.s.v.
17. august 2005 - 18:18
#8
Tror jeg selv har fundet noget der duer....eller? hvis session ($koeb) ikk eksisterer, så skriver den følgende: $koeb = "$vareid"; session_register(koeb); Og hvis den har sessionen: $koeb = "$koeb,$vareid"; session_register(koeb); Når jeg så skal hente det ud igen: $varekoeb = explode(",",$koeb); for($i=0; $i<count($varekoeb); $i++){ $vare = sql_query("SELECT * FROM varer WHERE(id='$varekoeb[$i]')"); $vare = mysql_fetch.........
17. august 2005 - 18:21
#9
Det er mere effektivt at bruge IN. Skåner databasen vsæentligt.
17. august 2005 - 18:25
#10
Gemme flere id'er i samme session: $nyt_valgte_numre = 640931; if (isset($valgte_numre) && $valgte_numre != "") { $valgte_numre_arr = explode(", ", $valgte_numre); $valgte_numre_arr[] = "" . $nyt_valgte_numre; $valgte_numre = implode(", ", $valgte_numre_arr); } else $valgte_numre = "" . $nyt_valgte_numre;
17. august 2005 - 18:33
#11
Spiser lige, så prøver jeg at forstå det :o)
17. august 2005 - 19:13
#12
Hvordan smider den dem i en session?
17. august 2005 - 19:17
#13
Sådan her: session_start(); $valgte_numre = "blah blah"; session_register("valgte_numre");
17. august 2005 - 19:18
#14
Så bliver $valgte_numre jo = "blah blah"
17. august 2005 - 19:21
#15
Jeg er hamrende fat-svag....jeg kan slet ikke få det til at virke :(
17. august 2005 - 19:23
#16
session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $nyt_valgte_numre = 640931; if (isset($valgte_numre) && $valgte_numre != "") { $valgte_numre_arr = explode(", ", $valgte_numre); $valgte_numre_arr[] = "" . $nyt_valgte_numre; $valgte_numre = implode(", ", $valgte_numre_arr); } else $valgte_numre = "" . $nyt_valgte_numre;
17. august 2005 - 19:25
#17
$valgte_numre bliver lig med flere og flere 640931, og ikke de numre jeg vælger...
17. august 2005 - 19:25
#18
640931, 640931, 640931
17. august 2005 - 19:39
#19
Det er jo min variabel $nyt_valgte_numre som bestemmer hvad det er som skal indsættes. Prøv at erstatte den med det du selv vil have indsat.
17. august 2005 - 19:58
#20
Det virker kun nogenlunde - den hopper rundt, og glemmer nogle af ID'erne, og henter ind i mellem kun en reg. selv om man har valgt flere - men - 1000 tak for hjælpen - du får points - læg et svar... Jeg prøver noget andet...
17. august 2005 - 20:03
#21
Jeg synes da at vi skal løse spørgsmålet før at der gives point. Hvad mener du med "den hopper rundt, og glemmer nogle af ID'erne"? Kan du ikke lige give nogle eksempler...
17. august 2005 - 20:13
#22
Lidt svært at forklare - hvis du gidder, kunne du måske vise hele koden - både den der henter, og den der henter i DB'en. Mine ID'er hedder vareid (f.eks. $vareid = '2')
17. august 2005 - 20:15
#23
Det er jo din kode som fejler lige i øjeblikket. Kunne du ikke hellere poste den?
17. august 2005 - 20:17
#24
Hvordan henter jeg fra MySQL
17. august 2005 - 20:22
#25
Hvis du læser denne side:
http://dk2.php.net/mysql_fetch_assoc - så kommer eksempel 1 faktisk igennem alle trinnene.
... men hvad har det med at poste din kode at gøre?
17. august 2005 - 20:22
#26
Dette henter : $find_data = mysql_query("SELECT * FROM mintable WHERE id = '$valgte_numre'"); while ($find_data_print = mysql_fetch_array($find_data)){ echo $find_data_print["titel"]; }
17. august 2005 - 20:23
#27
og...til session : <? session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $nyt_valgte_numre = $vareid; if (isset($valgte_numre) && $valgte_numre != "") { $valgte_numre_arr = explode(", ", $valgte_numre); $valgte_numre_arr[] = "" . $nyt_valgte_numre; $valgte_numre = implode(", ", $valgte_numre_arr); } else $valgte_numre = "" . $nyt_valgte_numre; ?>
17. august 2005 - 20:24
#28
Den viser kun 'en titel, selv om 3 er valgt...
17. august 2005 - 20:27
#29
Denne viser også kun 1 $find_data = mysql_query("SELECT * FROM mintable WHERE id IN ('$valgte_numre')"); while ($find_data_print = mysql_fetch_array($find_data)){ echo $find_data_print["titel"]; }
17. august 2005 - 20:28
#30
<? session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $find_data = mysql_query("SELECT * FROM mintable WHERE id IN (" . $valgte_numre . ")"); while ($find_data_print = mysql_fetch_array($find_data)) { echo $find_data_print["titel"]; } ?>
17. august 2005 - 20:35
#31
Melder fejl i linie 6 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ....
17. august 2005 - 20:36
#32
...når mere end 1 bog er valgt...
17. august 2005 - 20:43
#33
Jeg er nok for dum - ked af at spilde din tid!
17. august 2005 - 20:45
#34
Tid til debugging så. Prøv denne variant hvor at du udskrocer SQL'en før at den forsøges udført: <? session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $SQL = "SELECT * FROM mintable WHERE id IN (" . $valgte_numre . ")"; echo "DEBUG: " . $SQL . "<br>"; $find_data = mysql_query($SQL) or die(mysql_error()); while ($find_data_print = mysql_fetch_array($find_data)) { echo $find_data_print["titel"]; } ?>
17. august 2005 - 20:46
#35
I betragtning af at vi nu er tættere på en løsning, end vi var i starten, så er der ikke spildt noget tid endnu :^)
17. august 2005 - 20:51
#36
Nu ser det bedre ud - men - hvis jeg går tilbage, og vælger endnu en bog, så kommer der et komma for meget... DEBUG: SELECT * FROM dintable WHERE id IN (17, 25, , 16) You have an error in your SQL syntax near ' 16)' at line 1
17. august 2005 - 20:54
#37
Den kan selvfølgelig ikke lide den tomme plads. mellem 25 og 16. Nogen anels om hvor den kommer fra?
17. august 2005 - 20:55
#38
Prøv lige at lukke don browser helt og så starte den op ogen - for at få din eksisterende session dræbt og starte på en ny frisk.
17. august 2005 - 20:57
#39
Har jeg gjort flere gange... Der hvor jeg vælger bøgerne, og der hvor de "udskrives" er to forskellige docs. Hvis jeg har tjekket de første valgte, og så går tilbage, og vælger en mere, kommer mellem rummet...
17. august 2005 - 20:58
#40
De to du har valgt først - er det den som er først i listen eller hvad?
17. august 2005 - 21:00
#41
17 og 25 er valgt først - så går jeg tilbage og vælger 16
17. august 2005 - 21:03
#42
Kan man ikke lave så'n en skift ud fætter... (Lav ,mellemrum om til ingenting) he he
17. august 2005 - 21:04
#43
Sagtens, men jeg vil nu meget hellere finde den fejl som er årsagen.:^) Arbejder lige lidt på det.
17. august 2005 - 21:06
#44
oki
17. august 2005 - 21:10
#45
Prøv lige denne variant, og se om det stadig fejler: <? session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $nyt_valgte_numre = $vareid; if (isset($valgte_numre) && $valgte_numre != "") { $valgte_numre = trim($valgte_numre); $valgte_numre_arr = explode(", ", $valgte_numre); $valgte_numre_arr[] = "" . $nyt_valgte_numre; $valgte_numre = implode(", ", $valgte_numre_arr); } else $valgte_numre = "" . $nyt_valgte_numre; ?>
17. august 2005 - 21:12
#46
Den returnerer ingenting...
17. august 2005 - 21:13
#47
Sorry 2 sek
17. august 2005 - 21:15
#48
Nop, den si'r - (13, 17, 24,, 25) You have an error in your SQL syntax near ' 25)' at line 1
17. august 2005 - 21:16
#49
Denne gang lagde du så tre bøger i i første omgang og så en mere i anden omgang?
17. august 2005 - 21:18
#50
Ja
17. august 2005 - 21:25
#51
Bizart, der er ikke noget problem med at lægge 1, 2, og 3 bøger i, men når man har været væk og kommer tilbage igen så vil den pludselig have et ekstra blankt element med?! Jamen, prøv så denne her: <? session_start(); // Denne linje skal være helt oppe i starten af din side. session_register("valgte_numre"); $nyt_valgte_numre = $vareid; if (isset($valgte_numre) && $valgte_numre != "") { $valgte_numre = trim($valgte_numre, ", "); $valgte_numre_arr = explode(", ", $valgte_numre); $valgte_numre_arr[] = "" . $nyt_valgte_numre; $valgte_numre = implode(", ", $valgte_numre_arr); } else $valgte_numre = "" . $nyt_valgte_numre; ?>
17. august 2005 - 21:30
#52
Jamen så kører det jo - he he - kanon - TAK for din enorme hjælp! Skønt at nogen vil gøre så meget for andre - 1000 tak - smid endelig svar!!!!
17. august 2005 - 21:34
#53
Jeg undre mig stadig hvorfor der kommer et ekstra komma, men nu bliver det da i hvert fald også trimmet væk. ... og et svar :^)
17. august 2005 - 21:34
#54
Tak...
17. august 2005 - 21:36
#55
Selv tak - lektion: "aldrig give op" :^)
18. august 2005 - 17:49
#56
Klart klart - så har jeg lært lidt mere - er måske lidt utålmodig! :)
Vi tilbyder markedets bedste kurser inden for webudvikling