Avatar billede clausga Nybegynder
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 ???
Avatar billede nielle Nybegynder
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.
Avatar billede clausga Nybegynder
20. oktober 2005 - 13:10 #2
ok hvordan ?
Avatar billede nielle Nybegynder
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>";
    }
}
Avatar billede clausga Nybegynder
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 ?
Avatar billede nielle Nybegynder
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"]?
Avatar billede clausga Nybegynder
22. oktober 2005 - 22:44 #6
Ja i nogle af hckode felterne er der -
Avatar billede nielle Nybegynder
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?
Avatar billede clausga Nybegynder
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"; }
Avatar billede nielle Nybegynder
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;
}
Avatar billede clausga Nybegynder
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
Avatar billede nielle Nybegynder
23. oktober 2005 - 22:24 #11
Hvor mange gange får du udskrevet dit "ok"?
Avatar billede clausga Nybegynder
23. oktober 2005 - 22:28 #12
2 gange
Avatar billede nielle Nybegynder
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>";
}
Avatar billede clausga Nybegynder
23. oktober 2005 - 23:08 #14
1ok1okDEBUG #2: 2
DEBUG #3: 12345;787;1234;http://www;;5;65;
DEBUG #3: 98765;787;1234;http://www;;5;65;

der er de jo godt nok med ud ?
Avatar billede nielle Nybegynder
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?
Avatar billede clausga Nybegynder
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";
}
Avatar billede nielle Nybegynder
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;
}
Avatar billede clausga Nybegynder
24. oktober 2005 - 20:05 #18
så virker det....TAK for det... smid svar :)
Avatar billede nielle Nybegynder
24. oktober 2005 - 20:10 #19
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester