webForumDet fria alternativet
Logga in / Bli medlem

Sökfunktion

PHP

12 svar · 665 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#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>
Medlem 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"]."%";
Medlem sedan mars 2009512 inlägg
#3

Jag har provat koden nu.

Edit: har hittat små fel i koden.

Medlem 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

Medlem 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 ?

Medlem 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å.

Medlem 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

Medlem 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?

Medlem sedan mars 2009512 inlägg
#9

Rad 16 är den här.

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

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

Medlem 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.

Medlem 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 ";"?

Medlem sedan mars 2009512 inlägg
#13

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

264 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)