Avatar billede danco Nybegynder
28. december 2009 - 03:38 Der er 9 kommentarer og
1 løsning

Php ComboBox selection

Hejsa,
jeg sidder og er ved at bygge et system til håndtering sider på min hjemmeside, denne side skal kunne redigere diverse oplysninger.
Alle oplysninger findes naturligvis i min database hvor jeg henter dem fra når brugeren åbner siden.
Min rediger side skal fungere således at man vælger en side i en combobox, og herefter henter den oplysninger i databasen og sætter i de øvrige felter.
På nuværende tidspunkt har fået hentet sidenavne ud i min combobox og mangler derfor blot en måde at opdatere siden på når der bliver valgt noget i comboboksen.
jeg smider min nuværende kode herunder.
- jeg anser mig selv som rimelig habil i PHP, dog vil forklaring være ønskelig, gerne med kode eksempler.
Avatar billede danco Nybegynder
28. december 2009 - 03:44 #1
<form action="edit.php" method="post">
<p><span class="overskrift"> Vælg en side:
    <select name="valg" onchange="this.src">
      <?php
              $sql="SELECT * FROM sider";
$result=mysql_query($sql) or die (mysql_error());
                    if(mysql_num_rows($result)) {                    while($row = mysql_fetch_row($result))
    {
print("<option value=\"edit.php?side=$row[0]\">$row[0]</option>");
    }
        }
else {
print("<option value=\"\">Ingen sider i Databasen</option>");
    }
               
?>
        </select>
      </span></p>
      <p>Primært side navn:
        <input name="PK" disabled="disabled" value="<?=$row['side']?>" />
      </p>
      <p>Header :
        <input type="text" name="header" value="<?=$row['header']?>" />
      </p>
      <p>Overskrift:
        <input name="overskrift" value="<?php echo "$row[overskrift]" ?>" width="206" />
      </p>
      <p>Prim&aelig;r tekst:</p>
      <p align="center">
        <textarea style="border:none; background-color:transparent;" rows="25" cols="40" name="txt"><?php echo $row['tekst'] ?></textarea>
      </p>
      <p align="center">
        <input type="submit" value="Gem!" />
      </p>
    </form>


Undskyld den rodede opsætning, mine indryk gjorde koden lidt uoverskuelig herinde, så hvis i har behov for det kan jeg ligge den online i en mere overskue udgave
Avatar billede Slettet bruger
28. december 2009 - 15:25 #2
Du skal benytte onchange='this.form.submit();' på din select (dropdown).

/1
Avatar billede danco Nybegynder
28. december 2009 - 15:46 #3
Kan du uddybe lidt mere? :)

Jeg er ikke sikker på jeg kan se hvor du vil hen
Avatar billede Slettet bruger
28. december 2009 - 16:04 #4
Der er mindst to løsninger på dit problem:

1: Den nemme, som jeg foreslog i mit indlæg, er at du poster din form, når din select skifter værdi (onchange).

Du skal så benytte den postede værdi fra din select til at hente information om de andre felter i databasen.

2: Den mere komplicerede er at benytte AJAX til at hente information uden siden reloader.

/1
Avatar billede danco Nybegynder
28. december 2009 - 17:21 #5
Okay, ja nu forstår jeg hvad du mener,
Hvad jeg får ud af det er at den returnere hele stegen (edit.php?side=profil)
Og jeg skal kun bruge profil i til at hente fra min database.

Findes der en måde at trimme denne på?
Avatar billede Slettet bruger
28. december 2009 - 17:31 #6
Ja: $_GET['side']

Men det undrer mig, at du får det i din URL, når du bruger method='post' i din form. Det skulle ikke være i din URL, men i din post variabel.

method='post' sender til $_POST arrayet
method='get' sender til $_GET arrayet

Har du ændret i din method?

/1
Avatar billede danco Nybegynder
28. december 2009 - 17:46 #7
Jeg får ikke noget i min URL,
jeg bruger stadig post som min method.
men hvis jeg laver en simpel:

$sidevalg = $_POST['valg'];
echo "$sidevalg";

Bliver resultatet edit.php?side=profil

hvilket jeg ikke kan forstå en pind af.
Avatar billede Slettet bruger
28. december 2009 - 17:51 #8
Det er fordi du sætter value til hele URL'en:
  print("<option value=\"edit.php?side=$row[0]\">$row[0]</option>");
Lav det om til:
print("<option value=\"$row[0]\">$row[0]</option>");

/1
Avatar billede danco Nybegynder
28. december 2009 - 18:08 #9
Arg ja, hvordan kunne jeg overse det.
Det virker som jeg ville have det til.

Smider du svar? så får du point :)
Avatar billede Slettet bruger
28. december 2009 - 18:14 #10
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