webForumDet fria alternativet

Sökfunktion

12 svar · 665 visningar · startad av Emil W

Emil WMedlem sedan mars 2009512 inlägg
#1

Kommer inte på hur jag ska bygga en sök funktion. Jag tänkte att man ska kunna välja mellan att söka efter artnr,namn eller tillverkare.

Hur löser man det ?

Här kommer formulär koden

<form action="sok.php" method="post">
<table align="center">
<tr><td><b>Sök:</b></td><td><input type="text" name="sok" size="50"></td></tr>
<tr><td><b>Sök efter:</b></td><td>Artnr<input type="radio" name="alt1" value="art"> Namn<input type="radio" name="alt1" value="namn"> Tillverkare<input type="radio" name="alt1" value="tillv"></td></tr>
<tr><td align="right" colspan="2"><input type="submit" name="starta" value="Sök"></td></tr>
</form>
rhdfMedlem sedan okt. 2007446 inlägg
#2

du kollar helt enkelt i sok.php vilken radiobutton som är vald
utifrån det så konstruerar du din sql, alternativt har en fråga/alternativ.

Artnr <input type="radio" name="alt1" value="1">
Namn <input type="radio" name="alt1" value="2"> 
Tillverkare<input type="radio" name="alt1" value="3">

Pseudokod ( inte en susning om exakt syntax)

switch ($post["alt1] {
    case 1:
        SearchField="art"        
        break;
    case 1:
        SearchField="namn"        
        break;
    case 2:
        SearchField="tillv"        
        break;
}
$sqlQuery="SELECT * FROM tabellen WHERE".SearchField."LIKE%". $post["sok"]."%";
Emil WMedlem sedan mars 2009512 inlägg
#3

Jag har provat koden nu.

Edit: har hittat små fel i koden.

rhdfMedlem sedan okt. 2007446 inlägg
#4

inte det minsta förvånad att du hittade fel i koden från mitt inlägg
notera denna lilla rad
Pseudokod ( inte en susning om exakt syntax)

dock underlättar det ju för någon som KAN php om du talar om vilka fel du hittat

Emil WMedlem sedan mars 2009512 inlägg
#5

Jag orkar inte skriva alla fel.

Någon som vet varför den inte funkar, jag har inte hittat alla fel än och kommer inte på alla ?

voigtann1Medlem sedan juni 20019 519 inlägg
#6

du skrev att du hade fixat en del, det hade underlättat att veta vad du hade fixat, sql frågan exempelvis saknar ett mellanslag, kan vara det, få du något felmeddelande så underlättar det också.

Emil WMedlem sedan mars 2009512 inlägg
#7

Här kommer koden

<?php
include('bcon.php');

$con = mysql_connect($server,$user,$pass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($data,$con);

if(isset($_POST['starta']))
{
switch ($_POST['alt1']) {
    case 1;
        SearchField="art";
        break;
    case 2;
        SearchField="namn";
        break;
    case 3;
        SearchField="tillv";
        break;
}

$sok = mysql_real_escape_string($_POST['sok']);
$sqlQuery="SELECT namn FROM sok WHERE ".SearchField."'%$sok%'";

while($row = mysql_fetch_array($result))
{
echo htmlspecialchars($row['namn']);
}
}
?>

Det här felmeddelandet får jag.

Parse error: parse error in C:\wamp\www\testar.php on line 16

voigtann1Medlem sedan juni 20019 519 inlägg
#8

vilken rad är 16?

$sqlQuery="SELECT namn FROM sok WHERE ".SearchField." [b]LIKE[/b] '%$sok%'";

du skall nog även ha LIKE i din SQL fråga.

Sen vet jag inte hur det är med PHP men Request är väl ändå en sträng? så Switch satsen kan också vara fel?

Emil WMedlem sedan mars 2009512 inlägg
#9

Rad 16 är den här.

SearchField="art";
voigtann1Medlem sedan juni 20019 519 inlägg
#10

Är det inte typ $SearchField du vill ha som en variabel i PHP?

Emil WMedlem sedan mars 2009512 inlägg
#11

Tack så mycket för hjälpen det var att det skulle vara $SearchField och LIKE.

Så nu funkar sökfunktionen.

voigtann1Medlem sedan juni 20019 519 inlägg
#12

du saknade även } i din switch fråga ser det ut som.

sen switch case skall väl vara med ":" och inte ";"?

Emil WMedlem sedan mars 2009512 inlägg
#13

jag kör med ; och det funkar bra och sen fattades mysql_query.

128 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)