Avatar billede DonDaase Novice
25. oktober 2014 - 23:19 Der er 5 kommentarer og
2 løsninger

"Option selected value" ved data fra MySQL

Hey eksperter.

Jeg er i gang med at lave et lille simpelt website der bla. skal hente data fra en MySQL og smide det i en DropDown. Når der er valgt en værdi i DD'en kalder jeg den samme side med en knap. Mit problem er at få den "selected" value til at være den værdi i DD'en jeg har kaldt siden med. Hvad gør jeg forkert

Jeg er totalt nybegynder så beklager hvis svaret er simpelt. Men here goes:

Funktion der henter data til DropDown:

// Hent konti til Drop Down
function konti_ReadAllKonti() {
    $ar = array();
    $con = Con2DB();
    $result_konti = mysqli_query($con, "SELECT kkontonr, knavn FROM konti");
       
    while ($konti = mysqli_fetch_array($result_konti)) {
        $ar[] = $konti;
    }
   
    mysqli_close($con);
    return $ar;
}


Her bruger jeg funktionen og kalder samme side med "knap". Hvad gør jeg galt? Umiddelbart virker det som at "if ($_POST['konti_dd'] = $konti[$i]['kkontonr'])" altid er sand?

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="submit" name="knap"    value="Vis Poster">
  <input type="date"  name="fradato" value="<?php echo date('Y-m-d'); ?>">
  <?php
      $konti = konti_ReadAllKonti();
      echo "<select name='konti_dd'>";
        for ($i = 0, $lng = count($konti); $i < $lng; $i++) {
            if ($_POST['konti_dd'] = $konti[$i]['kkontonr']) {
          echo "<option selected value='" . $konti[$i]['kkontonr'] . "'>" . $konti[$i]['kkontonr'] . "</option>";
        } else {
          echo "<option value='" . $konti[$i]['kkontonr'] . "'>" . $konti[$i]['kkontonr'] . "</option>";
        }
    }
      echo "</select>";
           
  ?>
</form>
Avatar billede arne_v Ekspert
26. oktober 2014 - 02:08 #1
Er du sikker paa at du vil bruge = og ikke == eller === ?
26. oktober 2014 - 10:24 #2
arne_v, undskyld at jeg blander mig, men hvis jan_moller81 erklærer sig som total nybegynder er dit indlæg måske lovlig kortfattet.  jan_moller81, i PHP bruges lighedstegnet som 'assignment operator'.  Hvis du for eksempel vil give en variabel $x værdien 5 skriver du $x = 5.  Så med koden $_POST['konti_dd'] = $konti[$i]['kkontonr'] ændrer du værdien af $_POST['konti_dd'] til samme værdi som er i $konti[$i]['kkontonr'] .  For at udtrykke 'er lig med' skal du i PHP bruge to lighedstegn.  Med koden
'if ($_POST['konti_dd'] == $konti[$i]['kkontonr'])', altså med to lighedstegn, vil du teste om de to variabler er ens.
Det er en hel almindelig fejl som amatører som jeg selv (og nu du) dumper i igen og igen.  Der er andre programmeringssprog, såsom Pascal, hvor = betyder 'lig med' og hvor man bruger := som assignment.
Avatar billede DonDaase Novice
26. oktober 2014 - 20:06 #3
Tak for hjælpen begge to. Man lærer jo noget hele tiden. Det var lige præcis det der skulle til :-)

Kanon beskrivelse. Så giver det mening også. arne_v skriver noget om "==="? Hvad bruger man den til så?

Hvad siger i til hvis i deler pointene? Smider i et svar begge to?
26. oktober 2014 - 21:00 #4
Svar fra mig.  (arne_v, svarer du på ===?)
Avatar billede arne_v Ekspert
26. oktober 2014 - 23:06 #5
Avatar billede arne_v Ekspert
26. oktober 2014 - 23:06 #6
og et svar
Avatar billede arne_v Ekspert
26. oktober 2014 - 23:16 #7
<?php
// where it makes sense
$a = 0;
$b = "";
if($a==$b) echo "== returns true\r\n"; else echo "== returns false\r\n";
if($a===$b) echo "=== returns true\r\n"; else echo "=== returns false\r\n";
// more questionable usage
$c = 0;
$d = false;
if($c==$d) echo "== returns true\r\n"; else echo "== returns false\r\n";
if($c===$d) echo "=== returns true\r\n"; else echo "=== returns false\r\n";
$e = 0;
$f = "";
if($e==$f) echo "== returns true\r\n"; else echo "== returns false\r\n";
if($e===$f) echo "=== returns true\r\n"; else echo "=== returns false\r\n";
?>
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

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