Avatar billede sinnet Nybegynder
09. maj 2002 - 20:08 Der er 23 kommentarer og
1 løsning

<select>, <option> & MySQL

Jeg er igang med en movie database i php/mysql, men har et problem:

Jeg har en side hvor der kan addes film med en combobox til at vælge format:

<select name="format">
<option selected>DivX</option>
<option>DVD</option>
<option>VCD</option>
<option>SVCD</option>
<option>XVCD</option>
<option>miniDVD</option>
</select>

Fint nok, det bliver så smidt over i MySQL, men jeg vil så ha en side hvor man kan rette disse oplysninger, men hvordan får jeg generet en combobox med det som den henter i MySQL som default ?? fx. hvis der i MySQL står at format = SVCD så skulle comboboxen på edit siden gerne se sådan ud:

<select name="format">
<option>DivX</option>
<option>DVD</option>
<option>VCD</option>
<option selected>SVCD</option>
<option>XVCD</option>
<option>miniDVD</option>
</select>

Skal jeg igang med den vilde switch eller if/else thingy ??
Avatar billede shjorth Nybegynder
09. maj 2002 - 20:11 #1
if($row[format] == "svcd") { $var = "selected"; }
<option VALUE="x" $var>.....
ellerr???
Avatar billede sinnet Nybegynder
09. maj 2002 - 20:13 #2
den skal jo tjekke hvilken value i format der er hentet i MySQL og så genere en combobox ud fra dette med format som default...
Avatar billede shjorth Nybegynder
09. maj 2002 - 20:17 #3
jeg kan ikke lige forstå hvad du mener.. men den laver en box med:

$get = mysql_query("select * from noget order by noget limit 0,1");
print("<select name='fdf'>");
while($row = mysql_fetch_array($get)) {
print("<option value='".$row[noget]."'>".$row[noget]."</option");
}
print("</select>");
Avatar billede sinnet Nybegynder
09. maj 2002 - 20:19 #4
Kan bruges men alt for besværlig...nemmere måde ?

switch ($row['format']) {
    case 'SVCD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option>DVD</option>";
    print "<option>VCD</option>";
    print "<option selected>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'DVD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option selected>DVD</option>";
    print "<option>VCD</option>";
    print "<option>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
}
osv. osv.
Avatar billede Slettet bruger
09. maj 2002 - 20:57 #5
websources.dk har fat i det rigtige....
Avatar billede Slettet bruger
09. maj 2002 - 20:58 #6
$get = mysql_query("select * from noget order by noget");
print("<select name='fdf'>");
while($row = mysql_fetch_array($get)) {

if($row[format] == "svcd") { $var = "selected"; }

print("<option value='".$row[noget]. $var ."'>".$row[noget]."</option");
}
print("</select>");
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:12 #7
men så skal man da lave en if for hver entry i comboboxen fx.:

$get = mysql_query("select * from noget order by noget");
print("<select name='fdf'>");
while($row = mysql_fetch_array($get)) {

if($row[format] == "svcd") { $var = "selected"; }
if($row[format] == "divx") { $var = "selected"; }
if($row[format] == "dvd") { $var = "selected"; }

print("<option value='".$row[noget]. $var ."'>".$row[noget]."</option");
}
print("</select>");
Avatar billede Slettet bruger
09. maj 2002 - 21:18 #8
Ja, men prøv nu lige at tænke :)

Du laver jo en eller anden form for udtræk inden alt det her. Du har vel en bestemt post du gerne vil rette, som kunne være sådan her:

$result = mysql_query("select * from noget_andet WHERE id = $id");
$raekke = mysql_fetch_array($result));

echo $raekke[overskrift];

$get = mysql_query("select * from noget order by noget");
print("<select name='fdf'>");
while($row = mysql_fetch_array($get)) {

if($row[format] == "raekke[format]") { $var = "selected"; }

print("<option value='".$row[noget]. $var ."'>".$row[noget]."</option");
}
print("</select>");
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:19 #9
Comboboxen ser sådan ud :

<select name="format">
<option>DivX</option>
<option>DVD</option>
<option>VCD</option>
<option>SVCD</option>
<option>XVCD</option>
<option>miniDVD</option>
</select>

men det er så valuen i $row['format'] der skal afgøre hvilken af dem der skal være default "<option selected>"...jeg håber at det er bedre forklaret
Avatar billede Slettet bruger
09. maj 2002 - 21:22 #10
Giv mig koden for hele den side hvor du vil rette, så skal jeg lave det for dig. Jeg ved godt det kan være lidt svært at forstå/forklare.
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:25 #11
Avatar billede Slettet bruger
09. maj 2002 - 21:28 #12
PHP koden skal jeg bruge. Ellers skal du selv prøve at rette det jeg har givet dig.
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:28 #13
som du kan i edit mode er det DivX der er valgt automatisk men med følgende kode :

function print_format($default){
switch ($default) {
    case 'DivX':
    print "<select name=\"format\">";
        print "<option selected>DivX</option>";
        print "<option>DVD</option>";
    print "<option>VCD</option>";
    print "<option>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'DVD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option selected>DVD</option>";
    print "<option>VCD</option>";
    print "<option>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'VCD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option>DVD</option>";
    print "<option selected>VCD</option>";
    print "<option>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'SVCD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option>DVD</option>";
    print "<option>VCD</option>";
    print "<option selected>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'XVCD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option>DVD</option>";
    print "<option>VCD</option>";
    print "<option>SVCD</option>";
    print "<option selected>XVCD</option>";
    print "<option>miniDVD</option>";
    print "</select>";
        break;
    case 'miniDVD':
    print "<select name=\"format\">";
        print "<option>DivX</option>";
        print "<option>DVD</option>";
    print "<option>VCD</option>";
    print "<option>SVCD</option>";
    print "<option>XVCD</option>";
    print "<option selected>miniDVD</option>";
    print "</select>";
        break;
}
}


og her er lidt at tablen :

<td valign="top" align="left"><?php print_format($row['format']); ?></td>
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:30 #14
men kunne man ikke lave et array med "DivX, DVD, SVCD, osv." i og så køre det igennem en løkke ?
Avatar billede Slettet bruger
09. maj 2002 - 21:33 #15
Du henter med andre ord ikke mulighederne fra en database?

Så kan du bruge det jeg har på min side:

<tr><td align=right>Type:</td><td><SELECT name="typen" style="width: 200px">
<option value="3ivX" <?PHP if ($row[type] == '3ivX') { echo "selected"; } ?>>3ivX</option>
<option value="ASF" <?PHP if ($row[type] == 'ASF') { echo "selected"; } ?>>ASF</option>
<option value="DAT" <?PHP if ($row[type] == 'DAT') { echo "selected"; } ?>>DAT</option>
<option value="DivX" <?PHP if ($row[type] == 'DivX') { echo "selected"; } ?>>DivX</option>
<OPTION VALUE="DivXXX" <?PHP if ($row[type] == 'DivXXX') { echo "selected"; } ?>>DivXXX</OPTION>
<option value="DVD" <?PHP if ($row[type] == 'DVD') { echo "selected"; } ?>>DVD</option>
<option value="M2V" <?PHP if ($row[type] == 'M2V') { echo "selected"; } ?>>M2V</option>
<option value="MOV" <?PHP if ($row[type] == 'MOV') { echo "selected"; } ?>>MOV</option>
<option value="MPEG" <?PHP if ($row[type] == 'MPEG') { echo "selected"; } ?>>MPEG</option>
<option value="RAM" <?PHP if ($row[type] == 'RAM') { echo "selected"; } ?>>RAM</option>
<option value="SMR" <?PHP if ($row[type] == 'SMR') { echo "selected"; } ?>>SMR</option>
<option value="SVCD" <?PHP if ($row[type] == 'SVCD') { echo "selected"; } ?>>SVCD</option>
<option value="VCD" <?PHP if ($row[type] == 'VCD') { echo "selected"; } ?>>VCD</option>
<option value="WMV" <?PHP if ($row[type] == 'WMV') { echo "selected"; } ?>>WMV</option>
<option value="XVCD" <?PHP if ($row[type] == 'XVCD') { echo "selected"; } ?>>XVCD</option>
</SELECT></td>
</tr>

Det er lidt grimt, men det er eneste mulighed når du ikke henter mulighederne fra databasen.
Avatar billede Slettet bruger
09. maj 2002 - 21:34 #16
Det med array kunne man godt.
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:36 #17
det er nemlig det jeg ikke gør! så fik vi det på plads ;)
Avatar billede sinnet Nybegynder
09. maj 2002 - 21:37 #18
Jeg ville bare lave en function der var lidt nemmere end den med case...forslag hvordan det kunne laves med en array løkke ?
Avatar billede Slettet bruger
09. maj 2002 - 23:41 #19
<select name="format">

<?PHP
$array[] = "SVCD, DVD, osv";

$antal = count($array);

for ($i = 0; $i < $antal;$i++) {

echo '<option value="$array[$i]"';

if($row[format] == $array[$]) {
echo " selected";
}
echo ">"$array[$i]</option>";

}?>
</select>

Alt sammen utestet *G*
Avatar billede Slettet bruger
09. maj 2002 - 23:47 #20
Denne her har ikke de 27 fejl:

<select name="format">

<?PHP

$row[format] = "DVD";

$array = array ("SVCD","DVD","DivX");

$antal = count($array);
$i = 0;
while ($i < $antal) {

echo '<option value="' . $array[$i] . '"';

if($row[format] == $array[$i]) {
echo " selected";
}
echo ">$array[$i]</option>";
$i++;
}?>
</select>
Avatar billede sinnet Nybegynder
10. maj 2002 - 00:00 #21
Det er sq iorden...det funker ! takker..og el barto hvis du vil ha dine 60 point så opret lige et svar ;)
Avatar billede Slettet bruger
10. maj 2002 - 00:09 #22
:) Det tog jo lidt tid at få på plads!
Avatar billede Slettet bruger
10. maj 2002 - 00:13 #23
Tak for det :)
Avatar billede sinnet Nybegynder
10. maj 2002 - 00:13 #24
Sådan! Gjorde lige koden mere "overskuelig" ;)

function print_format($format){
  echo "<select name=\"format\">\n";
  $array = array("DivX","DVD","VCD","SVCD","XVCD","miniDVD");
  $antal = count($array);
  $i = 0;
  while ($i < $antal) {
    echo "<option ";
    if($format == $array[$i]) {
      echo "selected ";
    }
  echo "value=\"".$array[$i]."\">$array[$i]</option>\n";
  $i++;
  }
echo "</select>\n";
}

hvis nogen skulle få lyst til at bruge det ;)
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