webForumDet fria alternativet

2 selectboxar

29 svar · 513 visningar · startad av Thistel

ThistelMedlem sedan aug. 200482 inlägg
#1

Om man har 2 selectboxar på sidan "foo" och "flo". Hur gör man i koden för att sql-satsen skall köra antingen värdet från "flo"eller "foo" selectboxen?

<form action="?" method="post">
<select name="foo">
<option value="bar1">Värde 1</option>
<option value="bar2">Värde 2</option>
<option value="bar3">Värde 3</option>
<option value="bar4">Värde 4</option>
</select>
<input type="submit" value="Skicka!">
</form>
]<form action="?" method="post">
<select name="flo">
<option value="bar1">Värde 1</option>
<option value="bar2">Värde 2</option>
<option value="bar3">Värde 3</option>
<option value="bar4">Värde 4</option>
</select>
<input type="submit" value="Skicka!">
</form>

<?php
if(isset($_POST['foo']){
$result = mysql_query('select * from tabell where foo = ' . $_POST['foo']);
//osv..
}
?>
SnakesMedlem sedan okt. 2004386 inlägg
#2
<?php
if(isset($_POST['foo']){
$result = mysql_query('select * from tabell where foo = ' . $_POST['foo']);
osv..
} elseif(isset($_POST['flo']){
$result = mysql_query('select * from tabell where foo = ' . $_POST['flo']);
osv..
}
?>

om jag förstått dig rätt

ThistelMedlem sedan aug. 200482 inlägg
#3

Ja nästan. Tanken är rätt :) men kan man inte få in värdet från båda selectboxarna till samma sql sats?

SnakesMedlem sedan okt. 2004386 inlägg
#4
<?php

if(isset($_POST['foo'])) {
$value = $_POST['foo'];
} elseif(isset($_POST['flo'])) {
$value = $_POST['flo'];
}

if(!empty($value){
$result = mysql_query('select * from tabell where foo = ' . $value);
osv..
}
?>
aasahMedlem sedan mars 20033 451 inlägg
#5

Thistel skrev:

Ja nästan. Tanken är rätt :) men kan man inte få in värdet från båda selectboxarna till samma sql sats?

Hur menar du? :q Endast en av dem kommer att skickas iväg och ha ett värde på nästa sida. Eftersom endast en kommer att "submittas".

Om du vill att båda selectboxarna ska skickas iväg med värden i får du lägga dem i samma form. Alltså:

<form action="?" method="post">
<select name="foo">
<option value="bar1">Värde 1</option>
<option value="bar2">Värde 2</option>
<option value="bar3">Värde 3</option>
<option value="bar4">Värde 4</option>
</select>
<BR>
<select name="flo">
<option value="bar1">Värde 1</option>
<option value="bar2">Värde 2</option>
<option value="bar3">Värde 3</option>
<option value="bar4">Värde 4</option>
</select>
<input type="submit" value="Skicka!">
</form>
ThistelMedlem sedan aug. 200482 inlägg
#6

Mja. Tanken är att värdet ur "foo" eller ur "flo" skall skickas in i sql frågan på nästa sida för at lista upp resultatet därefter.
Så här prova jag med Snakes kod men det funkar inte.

$sql = 'SELECT tbl_37.Serial, tbl_colors.Colors, tbl_37_version.Version, tbl_37.In_service, tbl_37.Withdrawn, tbl_unit.Unit, tbl_37.Latest_code, tbl_37.Previous_codes, tbl_status.Status, tbl_37.Note, tbl_37_picture.Picture'
        . ' FROM tbl_37, tbl_colors, tbl_37_version, tbl_unit, tbl_status, tbl_37_picture'
        . ' WHERE ( ( tbl_colors.ColorsID = tbl_37.Colors ) AND ( tbl_unit.UnitID = tbl_37.Unit ) AND ( tbl_status.StatusID = tbl_37.Status ) AND ( tbl_37_picture.Serial = tbl_37.Serial ) AND ( tbl_37_version.VersionID = tbl_37.Version AND (( tbl_37.Version =  $value )OR ( tbl_37.Unit =  $value2 ) ) ) ORDER BY tbl_37.Serial '; 

if(isset($_POST['foo'])) {
$value = $_POST['foo'];
} elseif(isset($_POST['flo'])) {
$value2 = $_POST['flo'];
}
if(!empty($value){
$result = mysql_query("$sql");} 

?>

<table cellspacing="0" cellpadding="0" >
 <?
while ($rad = mysql_fetch_array("$result")) {
$bgColor = (++$i & 1) ? '#f6f7f7' : '#ffffff';

echo "<tr bgcolor=\"$bgColor\"> 
{
aasahMedlem sedan mars 20033 451 inlägg
#7

Du måste sätta värdet innan du kan använda det! Byt plats på if-satsen och tilldelningen av $sql. Nu har $value inget värde när den används ==> får värdet "" (tom sträng). EFTER det får $value ett värde, men $sql's värde ändras inte.

ThistelMedlem sedan aug. 200482 inlägg
#8

Ah..sant. Dock får jag parse error på sql satsen.

aasahMedlem sedan mars 20033 451 inlägg
#9

Får du parse error av PHP eller från databasen?

Vilken typ av värde har $value? Tal eller annat?

Om det inte är siffror måste value omgärdas av ' (till databasen) varvid det enklaste är att ersätta de yttre strängindikatorerna för PHP med ", alltså typ:

"SELECT tel FROM T WHERE Namn = '$namn' ";

ThistelMedlem sedan aug. 200482 inlägg
#10

Det är parse error från php.
den gillar inte { i
if(!empty($value){
$result = mysql_query........}

SteadyMedlem sedan dec. 2004202 inlägg
#11
if(!empty($value)) {
$result = mysql_query........}
ThistelMedlem sedan aug. 200482 inlägg
#12

Hmm..nu får jag ett nytt fel på mysql_fetch_array. "supplied argument is not a valid"

SteadyMedlem sedan dec. 2004202 inlägg
#13

Testa med

while ($rad = mysql_fetch_array($result)) {
ThistelMedlem sedan aug. 200482 inlägg
#14

$sql = 'SELECT tbl_37.Serial, tbl_colors.Colors, tbl_37_version.Version, tbl_37.In_service, tbl_37.Withdrawn, tbl_unit.Unit, tbl_37.Latest_code, tbl_37.Previous_codes, tbl_status.Status, tbl_37.Note, tbl_37_picture.Picture'
. ' FROM tbl_37, tbl_colors, tbl_37_version, tbl_unit, tbl_status, tbl_37_picture'
. ' WHERE ( ( tbl_colors.ColorsID = tbl_37.Colors ) AND ( tbl_unit.UnitID = tbl_37.Unit ) AND ( tbl_status.StatusID = tbl_37.Status ) AND ( tbl_37_picture.Serial = tbl_37.Serial ) AND ( tbl_37_version.VersionID = tbl_37.Version AND (( tbl_37.Version = $value )OR ( tbl_37.Unit = $value2 ) ) ) ORDER BY tbl_37.Serial ';

if(isset($_POST['foo'])) {
$value = $_POST['foo'];
} elseif(isset($_POST['flo'])) {
$value2 = $_POST['flo'];
}
if(!empty($value){
$result = mysql_query("$sql");}

?>

<table cellspacing="0" cellpadding="0" >
<?
while ($rad = mysql_fetch_array("$result")) {
$bgColor = (++$i & 1) ? '#f6f7f7' : '#ffffff';

echo "<tr bgcolor=\"$bgColor\">
{

SteadyMedlem sedan dec. 2004202 inlägg
#15

Kolla min redigering

ThistelMedlem sedan aug. 200482 inlägg
#16

får samma fel med eller utan ". Har även testat med ' istället.

SteadyMedlem sedan dec. 2004202 inlägg
#17

Okej, nu ska vi få lite klarhet i det. Såhär har du det nu.

if(isset($_POST['foo'])) {
$value = $_POST['foo'];
} elseif(isset($_POST['flo'])) {
$value2 = $_POST['flo'];
}
if(!empty($value){
$result = mysql_query("$sql");} 

?>

<table cellspacing="0" cellpadding="0" >
<?
while ($rad = mysql_fetch_array("$result")) {
$bgColor = (++$i & 1) ? '#f6f7f7' : '#ffffff';

echo "<tr bgcolor=\"$bgColor\"> 
{

Om du iställer skriver

if(isset($_POST['foo'])) {
    $value = $_POST['foo'];
} elseif(isset($_POST['flo'])) {
    $value2 = $_POST['flo'];
}
if(!empty($value)){
    $result = mysql_query($sql);
}
?>

<table cellspacing="0" cellpadding="0" >
<?
while ($rad = mysql_fetch_array("$result")) {
$bgColor = (++$i & 1) ? '#f6f7f7' : '#ffffff';

echo "<tr bgcolor=\"$bgColor\">;

Förstår inte va den sista klamrern gör? ({)

ThistelMedlem sedan aug. 200482 inlägg
#18

Den sista { är till kod som följer sedan. Den kom med av misstag bara. SQL satsen skall ligga efter if satsen med. Har inte nyaste koden här där jag är just.

SnakesMedlem sedan okt. 2004386 inlägg
#19

Vad får du för fel? och Infoga den nyaste koden är du snäll!

ThistelMedlem sedan aug. 200482 inlägg
#20

Så här har jag den nu:

<?

$länk = @mysql_connect("localhost", "root")
or die ("Kunde inte ansluta! Är MySQL igång?");
$databas = mysql_select_db("swaf");

if(isset($_POST['foo'])) {
$value = $_POST['foo'];
} 
elseif(isset($_POST['flo'])) {
$value2 = $_POST['flo'];
}
if(!empty($value))
{
$result = mysql_query('SELECT tbl_37.Serial, tbl_colors.Colors, tbl_37_version.Version, tbl_37.In_service, tbl_37.Withdrawn, tbl_unit.Unit, tbl_37.Latest_code, tbl_37.Previous_codes, tbl_status.Status, tbl_37.Note, tbl_37_picture.Picture'
        . ' FROM tbl_37, tbl_colors, tbl_37_version, tbl_unit, tbl_status, tbl_37_picture'
        . ' WHERE ( ( tbl_colors.ColorsID = tbl_37.Colors ) AND ( tbl_unit.UnitID = tbl_37.Unit ) AND ( tbl_status.StatusID = tbl_37.Status ) AND ( tbl_37_picture.Serial = tbl_37.Serial ) AND ( tbl_37_version.VersionID = tbl_37.Version)) AND (( tbl_37.Version =  $value )OR ( tbl_37.Unit =  $value2 ) )  ORDER BY tbl_37.Serial ' )
;
} 

?>

<table cellspacing="0" cellpadding="0" >
 <?
while ($rad = mysql_fetch_array("$result"))
{
$bgColor = (++$i & 1) ? '#f6f7f7' : '#ffffff';

echo "<tr bgcolor=\"$bgColor\"> 
    <td class=\"databastextBold\" width=\"90\" valign=\"top\">Serial</td>
    <td class=\"faktatext\" width=\"100\" valign=\"top\">".$rad["Serial"]."</td></tr>";
}
?>

</table>
<?
mysql_close($länk);
?>

Får fortfarande fel på raden med while($rad . $result får rätt värde iform av siffra.

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb