webForumDet fria alternativet

2 selectboxar

PHPur PHP

29 svar · 513 visningar · startad av Thistel

Medlem sedan aug. 200470 inlägg
Frågan#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..
}
?>
Medlem sedan okt. 2004392 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

Medlem sedan aug. 200470 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?

Medlem sedan okt. 2004392 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..
}
?>
Medlem sedan mars 20034 471 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>
Medlem sedan aug. 200470 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\"> 
{
Medlem sedan mars 20034 471 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.

Medlem sedan aug. 200470 inlägg
#8

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

Medlem sedan mars 20034 471 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' ";

Medlem sedan aug. 200470 inlägg
#10

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

Medlem sedan dec. 2004225 inlägg
#11
if(!empty($value)) {
$result = mysql_query........}
Medlem sedan aug. 200470 inlägg
#12

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

Medlem sedan dec. 2004225 inlägg
#13

Testa med

while ($rad = mysql_fetch_array($result)) {
Medlem sedan aug. 200470 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\">
{

Medlem sedan dec. 2004225 inlägg
#15

Kolla min redigering

Medlem sedan aug. 200470 inlägg
#16

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

Medlem sedan dec. 2004225 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? ({)

Medlem sedan aug. 200470 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.

Medlem sedan okt. 2004392 inlägg
#19

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

Medlem sedan aug. 200470 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.

140 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)