Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-16 19:49:04 - Sebastian Aguilera, i forum php, Tråden har 22 Kommentarer och lästs av 700 personer

Hej!

Har en annonssida som har en sökfunktion. Får inte denna att fungera ordentligt. Den är uppbyggd med en sökruta med fritextsökning och fyra dropdownlister där man väljer villkor.

Problemet är att om jag väljer till exempel annonstyp och Län så söker den bara på annonstyp.....

Fattar inte varför....

Skulle gärna också vilja ha hjälp med en paging-funktion.... Har läst mig till att man bör ändra till GET för det så det ska jag fixa....

KOD:

<H1 class="marginal">Sök annonser</H1><br>
<form action="index.php?link=sok" method="post" name="sokannons">
<table class="huvudsida marginal" width="20%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td valign="top">
Söktext:<br>
<input type="text" size="20" name="soktext">
</td>
<td>&nbsp;</td>
<td valign="top">
Annonstyp:<br>
<select name="annonstyp" size="1">
<option selected>Finnes</option>
<option>Sökes</option>
</select>
</td>
</tr>

<tr>
<td valign="top">
Län:<br>
<select name="lan" size="1">
<option selected>Alla Län</option>
<option>Blekinge</option>
<option>Dalarna</option>
<option>osv...</option>
</select>
</td>
<td>&nbsp;</td>
<td valign="top">
Kategori:<br>
<select name="kategori" size="1">
<option selected>Alla Kategorier</option>
<option>Bygg, Anläggning</option>
<option>Ekonomi, Finans</option>
<option>osv...</option>
</select>
</td>
</tr>

<tr>
<td valign="top">
Annonsör:<br>
<select name="annonsor" size="1">
<option selected>Alla</option>
<option>Företag</option>
<option>Privatperson</option>
</select>
</td>
</tr>

<tr>
<td valign="top" colspan="2">
<input type="submit" name="submitsearch" value="Sök">
</td>
</tr>

<tr>
<td colspan="2">



PHP:

<?php
if ($_POST['submitsearch'])
{
//Koppla upp mot MySQL
$dbh=mysql_connect ("$host", "$user", "$pass") or die (mysql_error());
mysql_select_db ("$dbname");

$query = "SELECT Annonsnummer, Datum, Tid, Bild, Rubrik, Kategori, Lan, Annonsor FROM annons WHERE Annonstyp = '{$_POST['annonstyp']}' || Lan = '{$_POST['lan']}' || Annonsor = '{$_POST['annonsor']}' || Kategori = '{$_POST['kategori']}' || Annonstext LIKE '{$_POST['soktext']}' ORDER BY Datum DESC, Tid DESC";

$result = mysql_query($query) or die('Kunde inte söka annonser:<br>'.mysql_error());
$soktraffar = MYSQL_AFFECTED_ROWS();
if ($soktraffar == 0)
{
echo '</tr>';
echo '<tr>';
echo '<td nowrap><br><B>Hittade inga annonser som motsvarar din sökning...</B></td>';
echo '</tr>';
}
else
{
echo '<br>Sökträffar: 1-'.$soktraffar.' av '.$soktraffar;
echo '</tr>';
echo '<tr>';
echo '<td nowrap>|<B>Datum och Tid</B></td>';
echo '<td>|<B>Bild</B></td>';
echo '<td>|<B>Rubrik</B></td>';
echo '<td>|<B>Kategori</B></td>';
echo '<td>|<B>Län</B></td>';
echo '<td>|<B>Annonsör</B></td>';
echo '</tr>';
}
//Hämta datan från databasen och skriva ut den
$result = mysql_query($query) or die ("Kunde inte hämta data ".mysql_error());

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo '<tr>';
echo '<td nowrap>|'.$row['Datum'].' '.$row['Tid'].'</td>';
echo '<td><img src="/bilder/'.$row['Annonsnummer'].'.jpg" border="0"></td>';
echo '<td>|<a class="soktraff" href="index.php?link=visatraff&id='.$row['Rubrik'].'" target="_new">'.$row['Rubrik'].'</a></td>';
echo '<td nowrap>|'.$row['Kategori'].'</td>';
echo '<td nowrap>|'.$row['Lan'].'</td>';
echo '<td nowrap>|'.$row['Annonsor'].'</td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="6">';
echo '<hr>';
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
else
{
return false;
}
?>


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-16 23:41:34 - Per Persson

Börja med att kolla om alla fält skickas över till sökskriptet:

<?php
echo '<pre>'; print_r($_POST); echo '</pre>';
if ($_POST['submitsearch'])
{



Sedan förstår jag inte varifrån ofoget att sätta alla strängvariabler inom citationstecken (speciellt vid databasuppkopplingen) kommer ifrån... Det räcker gott med
//Koppla upp mot MySQL
$dbh=mysql_connect ($host, $user, $pass) or die (mysql_error());
mysql_select_db ($dbname);


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-17 13:53:13 - Sebastian Aguilera

Alla fält skickas med vad jag kan se... Hur bygger jag SQL-satsen? Har en tanke om att kanske köra olika elseif som bygger ihop WHERE klausulen... Vad tror du?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-17 19:08:26 - Per Persson

Det blir lätt en himla massa elseif-grenar. Man kan använda en loop i stället:

<?php
$alla_fält = array('annonstyp', 'lan', 'annonsor', 'kategori', 'annonstext');

$where = array();
foreach($alla_fält as $fält) {
    if(!empty($_POST[$fält])) {
        $value = mysql_escape_string($_POST[$fält]);
        $where[] = "$fält = '$value'";
    }
}

if(count($where) > 0)
    $where = 'WHERE ' . implode(' AND ', $where);
else
    $where = '';

$query = "SELECT Annonsnummer, Datum, Tid, Bild, Rubrik, Kategori, Lan, Annonsor FROM annons $where ORDER BY Datum DESC, Tid DESC";


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 12:50:22 - Sebastian Aguilera

Hej!

Tack för ditt tips... Tyvärr så fungerar inte loopen... Det händer ingenting när man "submittar" nu... Kopierade rakt av så nu ser detr ut så här....

<?php
if ($_POST['submit'])
{
	$alla_fält = array('annonstyp', 'lan', 'annonsor', 'kategori', 'annonstext');
	$where = array();
	foreach($alla_fält as $fält) 
	{
		if(!empty($_POST[$fält])) 
		{
			$value = mysql_escape_string($_POST[$fält]);
			$where[] = "$fält = '$value'";
		}
	}
										
	if(count($where) > 0)
	$where = 'WHERE ' . implode(' AND ', $where);
	else
	$where = '';
										
	$query = "SELECT Annonsnummer, Datum, Tid, Bild, Rubrik, Kategori, Lan, Annonsor FROM annons $where ORDER BY Datum DESC, Tid DESC";
								


Vad kan bråka?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 12:59:00 - Per Persson

En sak glömde jag nämna:
Byt namn på
<b><input type="text" size="20" name="soktext"> </b>
till
<b><input type="text" size="20" name="annonstext"></b>

Om inte det hjälper, skriv ut SQL-satsen som den ser ut efter att $where har satts in:

$query = "...";
echo $query;


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 13:21:26 - Sebastian Aguilera

Hmmm, nu stämmer allt som det ska, men vad jag än väljer så hittas ingenting i databasen... Skumt... Även när jag vill göra en "tom " sökning så hitttas ingenting.... Funderar på det med AND och OR.... Om man har AND måste ju alla kriterier uppfyllas så kanske är det det som strular?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 14:53:15 - Per Persson

Jag trodde att du gjort fel och egentligen ville ha AND. Men det var kanske jag som var för snabb där... Byt ut det till OR och se om det är det du vill ha.


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 15:02:45 - Sebastian Aguilera

Hej!

Nu fungerar sökfunktionen men nu är allt tillbaka från början igen.... Bara första sökkriteriet tas med i sökningen, detta beror säkert på att det är OR emellan, första kriteriet uppfylls så struntar den i resten.... Kan man skriva SQL-satsen på något annat sätt?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-22 19:09:31 - Per Persson

Ja, om det är OR och första villkoret är uppfyllt, så spelar resten inte någon roll. Men om första villkoret inte är uppfyllt, så skall resterande villkor ha betydelse.

Hur vill du egentligen att det skall vara? Skall alla villkor vara uppfyllda eller räcker det med ett av dem? Eller skall det vara blandat på något vis?

Du kanske kan ge exempel på vilka data som finns, vad du söker på och vilka poster som då skall synas?


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-23 10:39:24 - Sebastian Aguilera

Så borde det vara ja....

Tanken är att jag vill ha någon blandning... På sidan kan man välja att söka på fritext, Annonstyp(sökes/finnes), Län, Kategori och Annonsör(Företag/Privatperson)

Som standardval är fritext tom, Annonstyp=Finnes, Län=Alla Län, Kategori=Alla Kategorier och Annonsör=Alla. Då ska en sökning på alla annonser med annonstyp Finnes göras. Om man sedan ändrar på någon av sökkriterierna ska sökning på alla annonser med vald annonstyp+ valfritt sökkriterium.

Ex. Annonstyp=Finnes och Län=Stockholm ska hitta alla annonser av annonstyp Finnes med Län = Stockholm, Kategori = Alla Kategorier och Annonsör = Alla

Sökfunktionen ligger uppe på www.jobbkompis.se/index.php?link=sok så kan du kolla hur den är uppbyggd.

Ska nog också lägga till en Annonstyp = Alla så att man kan söka både på Finnes och Sökes...


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-23 13:03:43 - Per Persson

Till att börja med kan du pröva att sätta <b>value=""</b> på alla "alla-val":
<code><option selected >Alla Län</option></code>
Då borde ett fält som man satt "alla" på inte komma med i sökvillkoren.


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-23 20:45:49 - Sebastian Aguilera

Hej!

Ska testa det... En kompis till mig gav tipset att man kunde sätta parenteser runt alla villkor + parenteser runt hela uttrycket... Var lägger jag till parenteserna i satsen som bygger upp where-satsen?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-23 21:04:56 - Per Persson

$where[] = "($fält = '$value')";
och
$where = 'WHERE (' . implode(' AND ', $where) . ')';
men det skall inte behövas eftersom = har binder hårdare än såväl AND som OR.


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-23 21:14:41 - Sebastian Aguilera

Men du föreslår att man ska skriva <option value=""> blablabla </option> eller?


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-24 06:56:00 - Per Persson

Ja, med tomt value på "alla-valen" (t.ex. "Alla län"). För <b>if(!empty($_POST[$fält])) {</b> gör att endast de fält som inte är tomma tas med i sökningen.


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-24 09:53:56 - Sebastian Aguilera

Hej! Det hjälpte inte att sätta value="" på alla Alla-fält... Det blir samma som innan.... Jag har så här nu:
<code><option value="" selected> Alla Län </option></code>


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-24 22:56:10 - Per Persson

Skriv ut SQL-satsen, så jag får se hur den blev:

echo $query;


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-25 18:21:15 - Sebastian Aguilera

Så här blir SQL-satsen:

SELECT Annonsnummer, Datum, Tid, Bild, Rubrik, Kategori, Lan, Annonsor FROM annons WHERE ((annonstyp = 'Finnes') OR (annonsor = 'Alla')) AND Status = 'Godkänd' ORDER BY Datum DESC, Tid DESC

Det verkar som om value på annonsor inte sätts till tomt.... eller nått....


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-25 18:27:56 - Per Persson

Har du satt <b>value=""</b> för annonsörvalet Alla?

<select name="annonsor" size="1">
<option value="" selected>Alla</option>
<option>Företag</option>
<option>Privatperson</option>
</select> 


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-25 18:37:03 - Sebastian Aguilera

Det var ett syntax-fel i min kod. Detta är nu åtgärdat men problemet är kvar. Väljer jag något mer alternativ, till exempel Län, så kommer ändå sökträffar med alla län med...
?????


Svara

Sv: Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-25 19:25:42 - Per Persson

Du vill nog ha <b>AND</b> mellan villkoren, inte <b>OR</b>.


Svara

Sv:Problem med sökfunktion - använder bara första villkoret....

Postades av 2005-08-26 08:38:28 - Sebastian Aguilera

NU FUNKAR DET!!!!

Tack så otroligt mycket för all hjälp! Du är fantastisk!


Svara

Nyligen

  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 878
27 965
271 771
672
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies