T Thistel Medlem sedan aug. 2004 70 inlägg Frågan 9 jan. 2005 20:43 #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..
}
?>
S Snakes Medlem sedan okt. 2004 392 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
T Thistel Medlem sedan aug. 2004 70 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?
S Snakes Medlem sedan okt. 2004 392 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..
}
?>
A aasah Medlem sedan mars 2003 4 471 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>
T Thistel Medlem sedan aug. 2004 70 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\">
{
A aasah Medlem sedan mars 2003 4 471 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.
T Thistel Medlem sedan aug. 2004 70 inlägg Ah..sant. Dock får jag parse error på sql satsen.
A aasah Medlem sedan mars 2003 4 471 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' ";
T Thistel Medlem sedan aug. 2004 70 inlägg Det är parse error från php.
den gillar inte { i
if(!empty($value){
$result = mysql_query........}
S Steady Medlem sedan dec. 2004 225 inlägg if(!empty($value)) {
$result = mysql_query........}
T Thistel Medlem sedan aug. 2004 70 inlägg Hmm..nu får jag ett nytt fel på mysql_fetch_array. "supplied argument is not a valid"
S Steady Medlem sedan dec. 2004 225 inlägg Testa med
while ($rad = mysql_fetch_array($result)) {
T Thistel Medlem sedan aug. 2004 70 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\">
{
T Thistel Medlem sedan aug. 2004 70 inlägg får samma fel med eller utan ". Har även testat med ' istället.
S Steady Medlem sedan dec. 2004 225 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? ({)
T Thistel Medlem sedan aug. 2004 70 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.
S Snakes Medlem sedan okt. 2004 392 inlägg Vad får du för fel? och Infoga den nyaste koden är du snäll!
T Thistel Medlem sedan aug. 2004 70 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.