Avatar billede crabber Nybegynder
23. maj 2007 - 15:24 Der er 9 kommentarer og
1 løsning

Hvad er problemet med denne foreach løkke?

Jeg har lavet ren foreach løkke her som laver en streng ud fra hvad jeg vælger af punkter fra min checkboxe i formen, men har har nogel problemer.
Den laver ikke strengen ordenligt.

Hvad har jeg gjordt galt???

KODEN::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if(isset($_POST['sog2']))
{
    if(isset($_POST['tema']))
    {
        foreach ($_POST['tema'] as $pt)
        { 
            $in = "'" . $pt . "',";
        }
        $string = substr($in,0,strlen($pt)-1);
        echo $string;
    }
   
    $query = mysql_query("SELECT * FROM sogeord WHERE tema IN (" . $string . ") AND aar BETWEEN " . $_POST[fra] . " AND " . $_POST[til] ) or die(mysql_error());
    while($result = mysql_fetch_assoc($query))
    {
        echo $result['aar'] . ' ';
        echo $result['tema'] . '<br /><br />';
    }

}
SLUT:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Mvh Casper
Avatar billede sw_red_6 Nybegynder
23. maj 2007 - 15:25 #1
hvordan laver den strengen forkert?
Avatar billede sw_red_6 Nybegynder
23. maj 2007 - 15:30 #2
har du testet at det ikke er i din substr() du har fejlen?
Jeg er nemlig ikke sikker på at du kan bruge en variabel, som er oprettet på den måde, uden for din foreach
Avatar billede jakobdo Ekspert
23. maj 2007 - 15:31 #3
Prøv at erstat:
if(isset($_POST['tema']))
{
    foreach ($_POST['tema'] as $pt)
    {
        $in = "'" . $pt . "',";
    }
    $string = substr($in,0,strlen($pt)-1);
    echo $string;
}

Med:
$string = "'" . implode("','",$_POST['tema']) . "'";
Avatar billede jakobdo Ekspert
23. maj 2007 - 15:31 #4
Dog bør du også lave noget tjek at input, da du kan risikere sql injections.
Avatar billede erikjacobsen Ekspert
23. maj 2007 - 15:34 #5
Din fejl er vel at
    $in = "'" . $pt . "',";
skal være
    $in .= "'" . $pt . "',";
Men som du så også ser: det kan laves lidt simplere...
Avatar billede crabber Nybegynder
23. maj 2007 - 15:35 #6
Ja det virkede og bruge min kode istedet.. Kunne være galt med min foreach løkke?
Avatar billede crabber Nybegynder
23. maj 2007 - 15:37 #7
Smid en svar så for du dine point.. Mange tak
Avatar billede jakobdo Ekspert
23. maj 2007 - 15:44 #8
Svar!
Hvilket indhold er det der kommer fra $_POST['tema'] er det tal eller tekst?
Avatar billede crabber Nybegynder
23. maj 2007 - 15:50 #9
tekst
Avatar billede jakobdo Ekspert
23. maj 2007 - 16:04 #10
Du bør evt. escape input, så du ikke kan udsættes for sql injections.

Måske noget i denne stil:

if(isset($_POST['tema']))
{
    $output = array();
    foreach($_POST['tema'] as $pt)
    {
        if(!empty($pt))
        {
            $output = mysql_real_escape_string($pt);
        }
    }
    $string = "'" . implode("','",$output) . "'";
}

Og takker for point.
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