20. oktober 2005 - 12:41
Der er
18 kommentarer og 1 løsning
trække ud fra database 2 gange
Jeg har en tabel i MySQL hvor jeg trækker nogle felter ud via et array? Jeg har en felt(hpkode) som indeholder en værdi fx. 25321 og den bliver så skrevet ud men kan jeg ikke gøre sådan AT HVIS der i nogle af hpkode felterne står fx 25321,12345 i SAMME felt så laver arrayet 2 linier ud fra det så det bliver 25321 12345 altså faktisk ser det som du indsæt i databasen ???
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.
20. oktober 2005 - 13:06
#1
Du kan svjv. ikke lave det i SQL, men du kan da bare splitte den slags felter undervejs via PHP.
20. oktober 2005 - 13:10
#2
ok hvordan ?
20. oktober 2005 - 13:11
#3
$sql = "SELECT hpkode FROM dinTabel"; $query = mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) { $hpkodeArr = explode(",", $row["hpkode"]); foreach ($hpkodeArr as $hpkode) { echo $hpkode . "<br>"; } }
21. oktober 2005 - 09:33
#4
$hc = "100000-1000001"; elseif( strstr($hc,"-" )) { $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $string="$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "ok"; } hvorfor får jeg kun en string med de sidste tal 100001 ?
22. oktober 2005 - 11:54
#5
Jeg har lidt svært ved at forstå din kode-stump. :^| Du har dit '-'-tegn i variablen: $hc = "100000-1000001"; - men det er: $row["hckode"] - du laver en explode() på. Hvad har de to felter med hinanden at gøre, og er der daet '-'-tegn i $row["hckode"]?
22. oktober 2005 - 22:44
#6
Ja i nogle af hckode felterne er der -
23. oktober 2005 - 09:29
#7
Der kommer noget kode før din elseif. Kunne det tænke sig at dine underlige udskrifter stammer fra den del af koden?
23. oktober 2005 - 12:45
#8
if($hc == '') { $string="$ti;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } elseif( strstr($hc,"-" )) { $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $string="$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "ok"; } } else { $string="$hc;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; }
23. oktober 2005 - 20:37
#9
Når du laver sådan noget som: $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $string = "$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "ok"; } - så vil hvert gennemløb at foreach-løkken jo overskrive det forrige resultat. Det er derfor at du ender med at have det sidste. I stedet bør du bruge et array: $stringArr = array(); if ($hc == "") { $stringArr[] = "$ti;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } elseif (strstr($hc, "-")) { $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $stringArr[] = "$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "ok"; } } else { $stringArr[] = "$hc;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } foreach ($stringArr as $string) { echo $string; }
23. oktober 2005 - 21:58
#10
Det er stadig kun de sidste tal efter - der bliver udskrevet står der 12345-98765 er det kun 98765 linien der kommer med
23. oktober 2005 - 22:24
#11
Hvor mange gange får du udskrevet dit "ok"?
23. oktober 2005 - 22:28
#12
2 gange
23. oktober 2005 - 22:50
#13
Hvis den bilver udskrevet to gange, så virker explode() i hvert fald som det skal; Løkken køres to gange - en gang for hver værdi. Det er derfor temmeligt mystisk hvis den sidste foreach-løkke ikke udskriver begge poster?! Hvad får du udskrevet med denne version fyldt med debug-kode: $stringArr = array(); if ($hc == "") { $stringArr[] = "$ti;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } elseif (strstr($hc, "-")) { $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $string = "$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "DEBUG #1: " . string . "<br>"> $stringArr[] = $string; echo "ok"; } } else { $stringArr[] = "$hc;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } echo "DEBUG #2: " . count($stringArr) . "<br>"; foreach ($stringArr as $string) { echo "DEBUG #3: " . $string . "<br>"; }
24. oktober 2005 - 07:09
#15
Det ser nu ikke helt rigtigt ud; teksten "DEBUG 1" bliver ikke udskrevet. Prøv lige at rette den ansvarlige linje til: echo "DEBUG #1: " . string . "<br>"; - så kommer den sikkert også ud. Men, men, jeg har sådan set ikke ændret i selve koden - blot indsat nogle "DEBUG" forskellige steder - hvis begge poster bliver udskrevet nu, så må de også være kommet ud før?
24. oktober 2005 - 14:24
#16
Det virker fint nu.... har fundet problemet men ved ikke hvordan jeg løser det.... den kan fint skrive det ud på skærmen, men ikke ind i filen jeg har det til at stå sådan her: $stringArr = array(); if ($hc == "") { $stringArr[] = "$ti;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } elseif (strstr($hc, "-")) { $hpkodeArr = explode("-", $row["hckode"]); foreach ($hpkodeArr as $hpkode) { $stringArr[] = "$hpkode;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; echo "ok"; } } else { $stringArr[] = "$hc;$pris;1234;$prolink;;$lager;$fp;$postnr1\r\n"; } foreach ($stringArr as $string) { echo $string; } // Write $somecontent to our opened file. if (fwrite($handle, $string) === FALSE) { echo "Cannot write to file ($filename)"; exit; } } echo "Success, wrote ($somecontent) to file ($filename)"; fclose($handle); } else { echo "The file $filename is not writable"; }
24. oktober 2005 - 18:29
#17
Efter som at det er foreach-løkken som udskriver de enkelte linjer, så skal din skrivning-til-fil indenfor i denne: foreach ($stringArr as $string) { echo $string; // Udskriver på skærm if (fwrite($handle, $string) === FALSE) // Udskriver i fil { echo "Cannot write to file ($filename)"; exit; } } Alternativt kan du i stedet for foreach-løkken udskrive arrayet i et hug: if (fwrite($handle, implode("", $stringArr)) === FALSE) // Udskriver i fil { echo "Cannot write to file ($filename)"; exit; }
24. oktober 2005 - 20:05
#18
så virker det....TAK for det... smid svar :)
24. oktober 2005 - 20:10
#19
Svar :^)
Vi tilbyder markedets bedste kurser inden for webudvikling