Avatar billede walkie84 Nybegynder
27. april 2010 - 22:52 Der er 8 kommentarer og
2 løsninger

PHP/MySQL problem

Hej,


Jeg har et problem med et SQL udtræk. Det drejer sig om at jeg skal kunne opdatere holdinformation, og der skal nogle checkbox'e være checked (checked="yes"), hvis de i forvejen er det i databasen (se "if" sætning).
$res2 indeholder 3 poster, dvs der er 3 checkbox'e som burde være checked, men kun den første bliver det.


Min kode:

$result1 = mysql_query("SELECT * FROM instruktoer") or die(mysql_error());
$result2 = mysql_query("SELECT * FROM hold_inst WHERE hold_navn = '$rhold_navn'") or die (mysql_error());
$res2 = mysql_fetch_array($result2);

while($rinstlist = mysql_fetch_array($result1)){

echo "<li><label for='$rinstlist[navn]'><input type='checkbox'";
if ($res2[inst_id] == $rinstlist[id]) { echo "checked='yes'"; }
echo " name='valgte[]' value='$rinstlist[id]' id='$rinstlist[navn]'> $rinstlist[navn]</label></li>";
}
mysql_close($result2);
mysql_close($result1);


Jeg har brug for nogle kloge øjne på det her, da jeg er ved at gå død :)

Mvh Morten
Avatar billede Slettet bruger
28. april 2010 - 00:54 #1
For det første mangler du et mellemrum i starten af denne echo:
echo "checked='yes'";
Dernæst så hedder det da vist "checked='checked'" hvis jeg ikke husker helt galt.
Håber det kan hjælpe dig på vej! :-)
Avatar billede walkie84 Nybegynder
28. april 2010 - 01:34 #2
Hej Roxki,

Jeg er ikke helt med. Hvor mangler der mellemrum?

Man kan bruge både checked og yes :) Det har jeg testet.

Mvh Morten
Avatar billede walkie84 Nybegynder
28. april 2010 - 01:37 #3
Aah, nu ved jeg hvad du mener :) Det hjalp desværre heller ikke.
Avatar billede Slettet bruger
28. april 2010 - 01:49 #4
Nu har jeg taget et kig på din kode, og det undrede mig lidt den måde du gør det på - nok fordi den ikke gir dig det resultat som du søger at få!

Jeg gætter på du gerne vil have et array af id's i $res2 som du så kan lave en tjek op imod med $rinstlist[id] - og det mener jeg ikke kan gøres på den måde du prøver på.

Du bliver nød til at lagre alle "inst_id"'s fra dit andet SQL kald i et array som du så kan søge i med f.eks. in_array()

Derudover så vil jeg råde dig til at quote al tekst inde i brackets så $res2[inst_id] bliver til $res["inst_id"] osv. da PHP ellers først læser dem som konstanter og da den ingen finder så prøver den at læse det som strenge.
Avatar billede jarner Nybegynder
28. april 2010 - 01:57 #5
så vidt jeg kan se giver din $res2 kun én række, da du ikke kører den inde i en løkke. Derfor vælger den kun én checkbox. En hurtig fix ville måske være at smide den ind i en while-løkke der looper det hele, men optimalt er nok at lægge det i en array og benytte in_array() som roxki bekriver det.
Avatar billede walkie84 Nybegynder
28. april 2010 - 11:20 #6
Ja, det er nok rigtig nok Roxki :) Tror måske jeg har brug for en hånd til at gøre det.

Jeg har forsøgt med nedenstående:

$result2 = mysql_query("SELECT * FROM hold_inst WHERE hold_navn = '$rhold[navn]'") or die (mysql_error());
$res2 = mysql_fetch_array($result2);

res2a = array();
while($res2 = mysql_fetch_array($result2)){
$res2a[]=$res2['inst_id'];
}

$result1 = mysql_query("SELECT * FROM profil") or die(mysql_error());
while($rinstlist = mysql_fetch_array($result1)){

echo "<li><label for='$rinstlist[navn]'><input type='checkbox' ";
if (in_array($rinstlist["id"],$res2a)) { echo "checked='checked'"; }
echo " name='valgte[]' value='$rinstlist[id]' id='$rinstlist[navn]'> $rinstlist[navn]</label></li>";

}
mysql_close($result2);
mysql_close($result1);



Men den er ikke helt god :)

Mvh Morten
Avatar billede jarner Nybegynder
28. april 2010 - 12:08 #7
Du mangler et $ ved res2a. Derefter skulle det virke.
Ellers er det en god idé at lave en "print_r();" på dine arrays for at se alt hvad de indeholder, til debug brug.

Følgende eksempel viser hvordan su kan lave et array og søge i det.

$arr = array();
$arr[] = 'test1';
$arr[] = 'test2';
$arr[] = 'test3';
print_r($arr);

if(in_array('test2',$arr)){echo 'Den er med!';}
Avatar billede walkie84 Nybegynder
28. april 2010 - 12:30 #8
Gaaaah, godt klaret :D

Tak for det jarner, det virker nu.

Vil i begge være søde at skrive et svar? Så må i dele pointene :)

Tusind tak for hjælpen

Mvh Morten
Avatar billede jarner Nybegynder
28. april 2010 - 13:43 #9
svar
Avatar billede Slettet bruger
28. april 2010 - 15:43 #10
Svar her
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