ThistelMedlem sedan aug. 200482 inlägg
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
<?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
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
<?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
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
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
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
Ah..sant. Dock får jag parse error på sql satsen.
aasahMedlem sedan mars 20033 451 inlägg
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
Det är parse error från php.
den gillar inte { i
if(!empty($value){
$result = mysql_query........}
SteadyMedlem sedan dec. 2004202 inlägg
if(!empty($value)) {
$result = mysql_query........}
ThistelMedlem sedan aug. 200482 inlägg
Hmm..nu får jag ett nytt fel på mysql_fetch_array. "supplied argument is not a valid"
SteadyMedlem sedan dec. 2004202 inlägg
Testa med
while ($rad = mysql_fetch_array($result)) {
ThistelMedlem sedan aug. 200482 inlägg
$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
ThistelMedlem sedan aug. 200482 inlägg
får samma fel med eller utan ". Har även testat med ' istället.
SteadyMedlem sedan dec. 2004202 inlägg
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
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
Vad får du för fel? och Infoga den nyaste koden är du snäll!
ThistelMedlem sedan aug. 200482 inlägg
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.