Avatar billede d.kryger Praktikant
26. august 2003 - 08:53 Der er 30 kommentarer og
1 løsning

Vælger ikke den aktuelle option

Hej...

Jeg har en side hvor jeg skal kunne vælge hvilken prisgruppe mine kunder tilhører vha. en rullemenu. Hvis de i forvejen har en prisgruppe skal den selvfølgelig "stå" i den. Men det kan jeg ikke få den til...

Hvad gør jeg galt?

Kode:
<select size="1" name="prisgruppe" class="input">
<option value='vaelg' <?php if (isset($_POST["prisgruppe"]) && $_POST["prisgruppe"]=="vaelg") print "selected"; ?>>(Vælg)</option>
<?php

$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

$result = mysql_query("SELECT gruppenr, navn FROM prisgrupper ORDER BY gruppenr");

$antal_grupper = mysql_num_rows($result);

$nr = 0;

while($row = mysql_fetch_array($result))
{

print "<option value='".$row["gruppenr"]."'";
if (isset($_POST["$row['gruppenr']"]) && $_POST["$row['gruppenr']"]=="$row['gruppenr']") print "selected";
print ">".$row["gruppenr"]." - ".$row["navn"]."</option>";

}

?>
</select>
Avatar billede erikjacobsen Ekspert
26. august 2003 - 09:00 #1
Det er et rent gæt, men:

if (isset($_POST['gruppenr']) && $_POST['gruppenr']=="$row['gruppenr']") print "selected";
Avatar billede erikjacobsen Ekspert
26. august 2003 - 09:00 #2
eller

if (isset($_POST['gruppenr']) && $_POST['gruppenr']==$row['gruppenr']) print "selected";
Avatar billede d.kryger Praktikant
26. august 2003 - 09:08 #3
Niken, ikke nogle af dem...
Avatar billede d.kryger Praktikant
26. august 2003 - 09:09 #4
Jeg gør sådan her med radio, men jeg ved ikke lige hvordan jeg skal få det over i en option:
<input type='radio' name='status' value='1' <?php if (isset($status) && trim($status)=="1") print "checked"; ?>>
Avatar billede erikjacobsen Ekspert
26. august 2003 - 09:12 #5
Måske du skal bruge $_POST["prisgruppe"] - men det er rent gætværk med
de oplysninger du giver os.
Avatar billede d.kryger Praktikant
26. august 2003 - 09:21 #6
Ok, jeg skriver lige en længere forklaring.
Avatar billede d.kryger Praktikant
26. august 2003 - 09:28 #7
Jeg har en side hvor jeg skal kunne vælge hvilken prisgruppe mine kunder tilhører vha. en rullemenu. Hvis de i forvejen har en prisgruppe skal den selvfølgelig "stå" i den.

I min database har jeg en tabel med alle mine kunder i. Den hedder kundenr og indeholder kunde nr., navn, beskrivelse og prisgruppe.
Jeg har også en tabel med alle prisgrupperne. Den hedder prisgrupper og indeholder gruppenr og navn, plus noget andet som ikke er relevant.

I følgende kode skal den så finde ud af hvilken prisgruppe kunden i forvejen har. Den finder kunde nr., navn og bemærkning via GET.

Hele koden:
<div align="center">
<center>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">
<p align="center">

<?php

$kundenr = "";

if (isset($_GET['id']))
{
$kundenr = $_GET['id'];
}
else
{
$kundenr = $_POST['id'];
}

$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

$result = mysql_query("SELECT kundenr, navn, beskrivelse, prisgruppe FROM kundenr WHERE kundenr='".$_GET["kundenr"]."'");

$kundenr = "";
$navn = "";
$beskrivelse = "";
$prisgruppe = "";

while($row = mysql_fetch_array($result))
{
$kundenr = str_replace ("<br />","", $row['kundenr']);
$navn = str_replace ("<br />","", $row['navn']);
$beskrivelse = str_replace ("<br />","", $row['beskrivelse']);
$prisgruppe = str_replace ("<br />","", $row['prisgruppe']);
}

if (isset($_POST["navn"]))
{
$fejl = false;

if (trim($_POST["navn"])=="")
{
print "<font face='Verdana' color='#FFFFFF' size='1'><b>Der skal indtastes et »Kundenavn«</b><br></font>";

$navn = $_POST["navn"];
$beskrivelse = $_POST["beskrivelse"];
$prisgruppe = $_POST["prisgruppe"];

$fejl = true;
}

if ($fejl==false)
{
$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

mysql_query("UPDATE kundenr SET navn='".$_POST["navn"]."', beskrivelse='".$_POST["beskrivelse"]."', prisgruppe='".$_POST["prisgruppe"]."' WHERE kundenr='$kundenr'");
mysql_close($connection);

print "<font face='Verdana' color='#FFFFFF' size='1'><b>Kunden er blevet opdateret.</b><br><br>";
print "[ <a href='vis_kunde.php?initialer=".$_GET["initialer"]."' class='hvid'>Klik her for at komme tilbage</a> ]</font>";
exit;
}
}

?>

</p>

<form action='<?php print "ret_kunde.php?kundenr=".$_GET["kundenr"]."&initialer=".$_GET["initialer"].""; ?>' method='post'>
<div align="center">
<center>
<table border="0" width="450" cellpadding="2" cellspacing="0">
<tr>
<td width="100%" align="center" colspan="2"><font face="Verdana" size="2" color="#FFFFFF"><b>Ret kunde</b></font><font face="Verdana" size="1"><br>
<br></font></td>
</tr>
<tr>
<td width="110" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1">Kundenummer:</font></td>
<td width="340" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1"><?php print $kundenr; ?></font></td>
</tr>
<tr>
<td width="110" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1">Kundenavn:</font></td>
<td width="340" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1"><input type="text" name="navn" size="50" class="input" value='<?php if (isset($navn)) print $navn; ?>'></font></td>
</tr>
<tr>
<td width="110" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1">Beskrivelse:</font></td>
<td width="340" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1"><input type="text" name="beskrivelse" size="50" class="input" value='<?php if (isset($beskrivelse)) print $beskrivelse; ?>'></font></td>
</tr>
<tr>
<td width="110" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1">Prisgruppe:</font></td>
<td width="340" bgcolor="#D9DDE0" height="30"><font face="Verdana" size="1">
<select size="1" name="prisgruppe" class="input">
<option value='vaelg' <?php if (isset($_POST["prisgruppe"]) && $_POST["prisgruppe"]=="vaelg") print "selected"; ?>>(Vælg)</option>
<?php

$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

$result = mysql_query("SELECT gruppenr, navn FROM prisgrupper ORDER BY gruppenr");

$antal_grupper = mysql_num_rows($result);

$nr = 0;

while($row = mysql_fetch_array($result))
{

print "<option value='".$row["gruppenr"]."'";
if (isset($_POST['gruppenr']) && $_POST['gruppenr']==$row['gruppenr']) print "selected";
print ">".$row["gruppenr"]." - ".$row["navn"]."</option>";

}

?>
</select>
</font></td>
</tr>
<tr>
<td width="450" align="center" bgcolor="#D9DDE0" colspan="2">
<input type='hidden' value='<?php print $kundenr; ?>' name='id'>
<input border="0" width="120" height="19" type="image" name="submit" src="/grafik/knapper/ret_kunde.gif"></td>
</tr>
<tr>
<td width="100%" align="center" colspan="5"><font face="Verdana" size="1" color="#FFFFFF"><br>
[ <a href="<?php print "vaelg.php?initialer=".$_GET["initialer"].""; ?>" class="hvid">Til forsiden</a> ]</font></td>
</tr>
</table>
</center>
</div>
</form>

</td>
</tr>
</table>
</center>
</div>
Avatar billede d.kryger Praktikant
26. august 2003 - 09:29 #8
Jeg kan godt rette i mine kunder. Også prisgruppen...
Avatar billede detox Nybegynder
26. august 2003 - 09:37 #9
Prøv lige at fjerne ' ' i den her:

print "<option value='".$row["gruppenr"]."'";
if (isset($_POST["$row[gruppenr]"]) && $_POST["$row[gruppenr]"]=="$row[gruppenr]") print "selected";
print ">".$row["gruppenr"]." - ".$row["navn"]."</option>";
Avatar billede d.kryger Praktikant
26. august 2003 - 09:41 #10
Så den ser sådan ud?:
print "<option value=".$row["gruppenr"]."";
if (isset($_POST["$row[gruppenr]"]) && $_POST["$row[gruppenr]"]=="$row[gruppenr]") print "selected";
print ">".$row["gruppenr"]." - ".$row["navn"]."</option>";

Det hjælper ikke.

Jeg finder jo heller ikke prisgruppen for kunden i denne linie, men jeg ved ikke hvordan den skal se ud?:
$result = mysql_query("SELECT gruppenr, navn FROM prisgrupper ORDER BY gruppenr");
Avatar billede detox Nybegynder
26. august 2003 - 09:43 #11
Jamen får du slet ikke noget i din selectbox?
Avatar billede detox Nybegynder
26. august 2003 - 09:44 #12
Men ja, den ser bedre ud nu. Der var syntaxerror.
Avatar billede d.kryger Praktikant
26. august 2003 - 09:45 #13
Jo, jeg får de muligheder jeg skal have, men den vælger ikke den som kunde allerede har
Avatar billede detox Nybegynder
26. august 2003 - 09:56 #14
Skal det så ikke være:

print "<option value='".$row["gruppenr"]."'";
if (isset($_POST["prisgruppe"]) && $_POST["prisgruppe"]=="$row[gruppenr]") print "selected";
print ">".$row["gruppenr"]." - ".$row["navn"]."</option>";
Avatar billede d.kryger Praktikant
26. august 2003 - 10:03 #15
Det kan godt være, men er der ikke noget galt med denne kode:
$result = mysql_query("SELECT gruppenr, navn FROM prisgrupper ORDER BY gruppenr");

Den får jo ikke af vide hvilken gruppe kunder er medlem af, eller hva?
Avatar billede detox Nybegynder
26. august 2003 - 10:26 #16
Tja, du vælger jo gruppenr og navn. Det er vel det du mener med 'gruppe' og 'kunder'?
Avatar billede d.kryger Praktikant
26. august 2003 - 10:31 #17
Ja, men i tabellen kundenr er der jo en række der hedder prisgruppe, det er jo den der skal bestemme hvilken gruppe den skal "stå" på.
Avatar billede detox Nybegynder
26. august 2003 - 10:36 #18
OK, ja så må du jo hive den ud. Det kan vel gøres med en join i din forespørgsel.
Avatar billede d.kryger Praktikant
26. august 2003 - 10:43 #19
Muligt, men det er det jeg ikke kan finde ud af.
Vil du hjælpe mig?
Avatar billede detox Nybegynder
26. august 2003 - 10:57 #20
Jeg kan da prøve. Kan du lave et strukturdump af dine to tabeller?
Avatar billede d.kryger Praktikant
26. august 2003 - 11:04 #21
Jo, det er her:

Krisgrupper:
gruppenr, int
navn, varchar

Kundenr:
kundenr, varchar
navn, varchar
beskrivelse, varchar
prisgruppe, int
Avatar billede d.kryger Praktikant
26. august 2003 - 11:08 #22
Det er selvfølgelig Prisgrupper, istedet for Krisgrupper...
Avatar billede detox Nybegynder
26. august 2003 - 11:08 #23
Ja, er det 'navn' der er den fælles reference?
Avatar billede d.kryger Praktikant
26. august 2003 - 11:10 #24
Nej, det er gruppenr og prisgruppe...
Avatar billede d.kryger Praktikant
26. august 2003 - 11:10 #25
Navnet i Prisgrupper er navnet på prisgruppen.
Navnet i Kundenr er navnet på kunden.
Avatar billede detox Nybegynder
26. august 2003 - 11:22 #26
Hmm, jeg synes det er let at miste overblikket her. Men du har vel så brug for at hente 'navn' fra Kundenr, hvor 'navn' = $_POST['navn'].
Avatar billede detox Nybegynder
26. august 2003 - 11:24 #27
Næ, nærmere 'prisgruppe' fra Kundenr, hvor 'navn' = $_POST['navn'].
Avatar billede d.kryger Praktikant
26. august 2003 - 11:36 #28
Jeg giver op...
Jeg må have lavet det lidt mere simpelt.
Læg et svar og du får point for indsatsen.
Avatar billede detox Nybegynder
26. august 2003 - 11:55 #29
Jeg er ikke ligefrem ekspert i MySQL, så jeg er ikke sikker på hvordan det skal gøres. Du kunne selvfølgelig trække en ekstra række ud, med 'prisgruppe' fra Kundenr, hvor 'navn' = $_POST['navn'].
Prøv evt at lave naturlig indrykning i din kode, det kan hjælpe lidt på overblikket.
Avatar billede detox Nybegynder
26. august 2003 - 11:57 #30
Jeg står over med point denne gang c",)
Avatar billede d.kryger Praktikant
26. august 2003 - 11:58 #31
OK, så tager jeg dem selv.
Endnu engang tak for hjælpen.
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