Avatar billede kodak Mester
25. februar 2011 - 12:58 Der er 13 kommentarer og
1 løsning

en hurtig en

Der er et eller andet her i som jeg har over set

foreach ($videoer as $video) {
                if ($video == $row['id']) {
                echo'<input type="checkbox" name="ejer[]" value="' . $row['id'] . '" checked>' . $row['id'] . '';
                } else {
                echo'<input type="checkbox" name="ejer[]" value="' . $row['id'] . '">' . $row['id'] . '';
                }
            }

Det er meningen at den kun skal køre:
echo'<input type="checkbox" name="ejer[]" value="' . $row['id'] . '" checked>' . $row['id'] . '';
hvis der er en der matcher ellers skal den gø vidre og tjekke den næste

Hvis der ikke er en der matcher skal den køre:
echo'<input type="checkbox" name="ejer[]" value="' . $row['id'] . '">' . $row['id'] . '';

Hvis vi siger at jeg har

$videoer array(1 2 4 5 6 9)

Så viser den,
den har tjekket den uden match
og
den har tjekket den med match

det vi sige at den viser 6 checkbox'e
hvor den kun skal vise 1
Avatar billede majbom Novice
25. februar 2011 - 13:14 #1
hvis den slet ikke skal lave en checkbox, der hvor den ikke matcher, skal du jo bare fjerne din else...
Avatar billede kodak Mester
25. februar 2011 - 13:31 #2
efter mit eksempel:
$videoer array(1 2 4 5 6 9)

Skal den sørge for at checkbox'en for 1, 2, 4, 5, 6, og 9 er checked

Men hvis jeg ikke har en $row['id'] der matcher en af mine $video
skal den ikke være checked.
Avatar billede kodak Mester
25. februar 2011 - 15:51 #3
Hmm jeg trode det bare var et eller andet småt jeg havde placeret forkert eller mangel på samme.
Avatar billede majbom Novice
25. februar 2011 - 17:58 #4
den her linje skulle meget gerne generere en checkbox der IKKE er checked...

prøv lige at skrive "checked" efter $row['id'] i den linje der skal være checked og "unchecked" i den anden.

noget tyder på at den kun kommer ind i den ene uanset hvad
25. februar 2011 - 18:17 #5
Det er mig ikke helt tydeligt hvad du vil.  Ifoelge din kode har du en enkelt vaerdi af $row['id'], lad os sige 4.  Fordi der er seks vaerdier i arrayen laver du seks checkboxe, alle med vaerdien 4!  Fordi den tredje vaerdi i arrayen ogsaa er 4 bliver den tredje cehckbox checked og de andre ikke checked.  Altsaa din kode skulle give saadan et resultat:

4 ikke checked
4 ikke checked
4 checked
4 ikke checked
4 ikke checked
4 ikke checked

Er det hvad du faar eller faar du noget andet?

Nu tror jeg egenligt at det slet ikke er det du vil have, men at du har en database tabel med videoer, skal vi sige med vaerdierne 1, 2, 3, 4, 5, 6, og 7.  For hver af disse vil du have en checkbox, altsaa i dette tilfaelde 7 checkboxe med vaerdierne 1 til 7.  Hvis videoen matcher en af vaerdierne i arrayen skal den tilsvarende checkbox vaere checked, ellers ikke.  Saa du vil have dette (tror jeg):

1 checked
2 checked
3 ikke checked
4 checked
5 checked
6 checked
7 ikke checked

Hvis det er det du vil opnaa, saa maa du gribe det an paa en anden maade.  For hver af videoerne i databasen laver du en checkbox.  For hver af disse loeber du vaerdierne i arrayen igennem, og hvis en af dem matcher checker du checkboxen, ellers ikke.  Noge i denne henretning:

$result = mysql_query("SELECT id FROM Mintabel");
while($row = mysql_fetch_array($result))
{
  $match = false;
  $id = $row['id'];
  foreach($videoer as $video) if ($id == $video) $match = true;
  echo "<input type='checkbox' name='ejer[]' value='$id ";
  if($match) echo " checked ";
  echo ">$id";
}

Jeg har ikke testet koden, men den skulle virke.  Hvis det saadan du vil have det, men det gaar galt med koden, saa forklar.  Saa kikker vi igen.
Avatar billede kodak Mester
25. februar 2011 - 18:50 #6
Hvis der i min array står:
1 2 4 5 6 9
Skal den vise på følgendene måde.
1  checked box
2  checked box
3  ikke checked box
4  checked box
5  checked box
6  checked box
7  ikke checked box
8  ikke checked box
9  checked box
10 ikke checked box
25. februar 2011 - 19:05 #7
Som sagt, det resultat har ingen sammenhaeng med den kode du viser!  Du synes at have ti videomodeller gemt i en eller anden tabel, og du oensker en checkbox for hver af disse videomodeller.  Men i din kode bruger du kun id'en for en enkel af modellerne, og din kode laver en checkbox for hver vaerdi i arrayen, ikke for hver vaerdi i videotabellen.

Proev at vis resten af koden.  Den maa indeholde et udtraek af vaerdier fra en databasetabel saasom "$result = mysql_query(SELECT ..et eller andet fra en eller anden tabel).  For at komme videre saa lad os se den kode.  Og vis ogsaa opbygningen af den tabel du traekker vaerdier ud af.
Avatar billede kodak Mester
25. februar 2011 - 19:08 #8
Christian_Belgien
Ligner lidt noget jeg har prøvet men prøver den gerne. Når jeg kommer hjem lidt senere.

Bare lige så det er helt på det rene:
Mine:
$row['id']
Er fra en db tabel
og:
$videoer
fra en anden db tabel
25. februar 2011 - 19:20 #9
Hvis ikke du faar det til at virke saa vis din kode, inklusiv hvordan du henter vaerdier fra de to tabeller, og vis opbygningen af tabellerne.
Avatar billede kodak Mester
26. februar 2011 - 11:37 #10
Chrisrian_Belbien

{
$match = false;
$id = $row['id'];
foreach($videoer as $video) if ($id == $video) $match = true;
echo '<input type="checkbox" name="ejer[]" value="' . $id . '" ';
if($match) echo " checked ";
echo '>' . $row['id'] . '';
}

Er det korrekte svar til dig.

Takker for hjælpen.
Avatar billede kodak Mester
26. februar 2011 - 11:38 #11
Christian_Belgien - Sorry
26. februar 2011 - 11:53 #12
Hvis det virker saa opretter jeg her svar.
Avatar billede kodak Mester
26. februar 2011 - 12:25 #13
enu engang tak for hlælpen.
Avatar billede majbom Novice
26. februar 2011 - 14:29 #14
det ser ud til at din kodestump kommer fra en while der smider data fra en databasetabel over i et array.

i stedet for at bruge en foreach hver gang ti at finde ud af om den aktuelle række er i arrayet "$videoer", kan du bruge "in_array()"
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