11. april 2005 - 23:53Der er
70 kommentarer og 2 løsninger
Søgning i database med flere søgefelter
Hej med jer, Jeg har en side hvor jeg har 8 "fritekst" søgefelter og 3 specifikke søge felter. Disse søge felter kan man selvfølgelig skrive nogle søge ord ind i og herefter er det meningen at der skal søges i en tabel i en database. Denne tabel har 35 rækker hvor der skal kunne søges på ord der står i disse. Jeg aner bare ikke lige hvordan jeg skal lave denne søgnings-kode! Er der nogle der har nogle gode forslag?? Her er min side:
Først skal du selvfølgelig lave et og andet tjek på om alt er sat så din sql ikke giver fejl. Dernæst tror jeg at du skal lave et View først på de tre sidste felter ..noget ala CREATE VIEW [Alder køn og sted] AS SELECT * FROM din_tabel WHERE region = $_POST['region'] AND kon = $_POST['kon'] AND alder BETWEEN $_POST['alderfra'] AND $_POST['aldertil']
Det finder alle dem med givent køn, region og alder Dernæst kan du søge på dine søgeord iblandt de funde ala SELECT * FROM [Alder køn og sted] WHERE felt1 LIKE '%fritekst1% OR felt1 LIKE '%fritekst2% .. osvosv
Jeg vil lige tilføje, at alle felter er valgfrie. Dvs. at man må selom hvilke felter man vil udfylde! Man SKAL ikke udfylde alder, region, køn og fritekst1-8! Men takker busschou, jeg roder med det - men hvis der er andre som har ideer, må de meget gerne poste, også gerne hvis der er nogen der gider at sætte noget kode sammen!?!
$fritekst1 = $_POST['fritekst1']; if ($fritekst1 != '') { $where .= " AND ID LIKE '%$fritekst1%' OR RefNr1 LIKE '%$fritekst1%' OR RefNr2 LIKE '%$fritekst1%' OR RefNr3 LIKE '%$fritekst1%' OR ForNavn LIKE '%$fritekst1%' OR EfterNavn LIKE '%$fritekst1%' OR Adressse LIKE '%$fritekst1%' OR PostNr LIKE '%$fritekst1%' OR Town LIKE '%$fritekst1%' OR HjemmeTlf LIKE '%$fritekst1%' OR ArbejdsTlf LIKE '%$fritekst1%' OR MobilTlf LIKE '%$fritekst1%' OR Email LIKE '%$fritekst1%' OR Interesser LIKE '%$fritekst1%' OR Rygte LIKE '%$fritekst1%' OR Udd LIKE '%$fritekst1%' OR Sprog LIKE '%$fritekst1%' OR ArbejdsErfaring LIKE '%$fritekst1%' OR IT LIKE '%$fritekst1%' OR Referencer LIKE '%$fritekst1%' OR Job LIKE '%$fritekst1%' OR Kommentar LIKE '%$fritekst1%' OR Lon LIKE '%$fritekst1%' OR Dato LIKE '%$fritekst1%'"; } $fritekst2 = $_POST['fritekst2']; if ($fritekst2 != '') { $where .= " AND ID LIKE '%$fritekst2%' OR RefNr1 LIKE '%$fritekst2%' OR RefNr2 LIKE '%$fritekst2%' OR RefNr3 LIKE '%$fritekst2%' OR ForNavn LIKE '%$fritekst2%' OR EfterNavn LIKE '%$fritekst2%' OR Adressse LIKE '%$fritekst2%' OR PostNr LIKE '%$fritekst2%' OR Town LIKE '%$fritekst2%' OR HjemmeTlf LIKE '%$fritekst2%' OR ArbejdsTlf LIKE '%$fritekst2%' OR MobilTlf LIKE '%$fritekst2%' OR Email LIKE '%$fritekst2%' OR Interesser LIKE '%$fritekst2%' OR Rygte LIKE '%$fritekst2%' OR Udd LIKE '%$fritekst2%' OR Sprog LIKE '%$fritekst2%' OR ArbejdsErfaring LIKE '%$fritekst2%' OR IT LIKE '%$fritekst2%' OR Referencer LIKE '%$fritekst2%' OR Job LIKE '%$fritekst2%' OR Kommentar LIKE '%$fritekst2%' OR Lon LIKE '%$fritekst2%' OR Dato LIKE '%$fritekst2%'"; } $fritekst3 = $_POST['fritekst3']; if ($fritekst3 != '') { $where .= " AND ID LIKE '%$fritekst3%' OR RefNr1 LIKE '%$fritekst3%' OR RefNr2 LIKE '%$fritekst3%' OR RefNr3 LIKE '%$fritekst3%' OR ForNavn LIKE '%$fritekst3%' OR EfterNavn LIKE '%$fritekst3%' OR Adressse LIKE '%$fritekst3%' OR PostNr LIKE '%$fritekst3%' OR Town LIKE '%$fritekst3%' OR HjemmeTlf LIKE '%$fritekst3%' OR ArbejdsTlf LIKE '%$fritekst3%' OR MobilTlf LIKE '%$fritekst3%' OR Email LIKE '%$fritekst3%' OR Interesser LIKE '%$fritekst3%' OR Rygte LIKE '%$fritekst3%' OR Udd LIKE '%$fritekst3%' OR Sprog LIKE '%$fritekst3%' OR ArbejdsErfaring LIKE '%$fritekst3%' OR IT LIKE '%$fritekst3%' OR Referencer LIKE '%$fritekst3%' OR Job LIKE '%$fritekst3%' OR Kommentar LIKE '%$fritekst3%' OR Lon LIKE '%$fritekst3%' OR Dato LIKE '%$fritekst3%'"; } $fritekst4 = $_POST['fritekst4']; if ($fritekst4 != '') { $where .= " AND ID LIKE '%$fritekst4%' OR RefNr1 LIKE '%$fritekst4%' OR RefNr2 LIKE '%$fritekst4%' OR RefNr3 LIKE '%$fritekst4%' OR ForNavn LIKE '%$fritekst4%' OR EfterNavn LIKE '%$fritekst4%' OR Adressse LIKE '%$fritekst4%' OR PostNr LIKE '%$fritekst4%' OR Town LIKE '%$fritekst4%' OR HjemmeTlf LIKE '%$fritekst4%' OR ArbejdsTlf LIKE '%$fritekst4%' OR MobilTlf LIKE '%$fritekst4%' OR Email LIKE '%$fritekst4%' OR Interesser LIKE '%$fritekst4%' OR Rygte LIKE '%$fritekst4%' OR Udd LIKE '%$fritekst4%' OR Sprog LIKE '%$fritekst4%' OR ArbejdsErfaring LIKE '%$fritekst4%' OR IT LIKE '%$fritekst4%' OR Referencer LIKE '%$fritekst4%' OR Job LIKE '%$fritekst4%' OR Kommentar LIKE '%$fritekst4%' OR Lon LIKE '%$fritekst4%' OR Dato LIKE '%$fritekst4%'"; } $fritekst5 = $_POST['fritekst5']; if ($fritekst5 != '') { $where .= " AND ID LIKE '%$fritekst5%' OR RefNr1 LIKE '%$fritekst5%' OR RefNr2 LIKE '%$fritekst5%' OR RefNr3 LIKE '%$fritekst5%' OR ForNavn LIKE '%$fritekst5%' OR EfterNavn LIKE '%$fritekst5%' OR Adressse LIKE '%$fritekst5%' OR PostNr LIKE '%$fritekst5%' OR Town LIKE '%$fritekst5%' OR HjemmeTlf LIKE '%$fritekst5%' OR ArbejdsTlf LIKE '%$fritekst5%' OR MobilTlf LIKE '%$fritekst5%' OR Email LIKE '%$fritekst5%' OR Interesser LIKE '%$fritekst5%' OR Rygte LIKE '%$fritekst5%' OR Udd LIKE '%$fritekst5%' OR Sprog LIKE '%$fritekst5%' OR ArbejdsErfaring LIKE '%$fritekst5%' OR IT LIKE '%$fritekst5%' OR Referencer LIKE '%$fritekst5%' OR Job LIKE '%$fritekst5%' OR Kommentar LIKE '%$fritekst5%' OR Lon LIKE '%$fritekst5%' OR Dato LIKE '%$fritekst5%'"; } $fritekst6 = $_POST['fritekst6']; if ($fritekst6 != '') { $where .= " AND ID LIKE '%$fritekst6%' OR RefNr1 LIKE '%$fritekst6%' OR RefNr2 LIKE '%$fritekst6%' OR RefNr3 LIKE '%$fritekst6%' OR ForNavn LIKE '%$fritekst6%' OR EfterNavn LIKE '%$fritekst6%' OR Adressse LIKE '%$fritekst6%' OR PostNr LIKE '%$fritekst6%' OR Town LIKE '%$fritekst6%' OR HjemmeTlf LIKE '%$fritekst6%' OR ArbejdsTlf LIKE '%$fritekst6%' OR MobilTlf LIKE '%$fritekst6%' OR Email LIKE '%$fritekst6%' OR Interesser LIKE '%$fritekst6%' OR Rygte LIKE '%$fritekst6%' OR Udd LIKE '%$fritekst6%' OR Sprog LIKE '%$fritekst6%' OR ArbejdsErfaring LIKE '%$fritekst6%' OR IT LIKE '%$fritekst6%' OR Referencer LIKE '%$fritekst6%' OR Job LIKE '%$fritekst6%' OR Kommentar LIKE '%$fritekst6%' OR Lon LIKE '%$fritekst6%' OR Dato LIKE '%$fritekst6%'"; } $fritekst7 = $_POST['fritekst7']; if ($fritekst7 != '') { $where .= " AND ID LIKE '%$fritekst7%' OR RefNr1 LIKE '%$fritekst7%' OR RefNr2 LIKE '%$fritekst7%' OR RefNr3 LIKE '%$fritekst7%' OR ForNavn LIKE '%$fritekst7%' OR EfterNavn LIKE '%$fritekst7%' OR Adressse LIKE '%$fritekst7%' OR PostNr LIKE '%$fritekst7%' OR Town LIKE '%$fritekst7%' OR HjemmeTlf LIKE '%$fritekst7%' OR ArbejdsTlf LIKE '%$fritekst7%' OR MobilTlf LIKE '%$fritekst7%' OR Email LIKE '%$fritekst7%' OR Interesser LIKE '%$fritekst7%' OR Rygte LIKE '%$fritekst7%' OR Udd LIKE '%$fritekst7%' OR Sprog LIKE '%$fritekst7%' OR ArbejdsErfaring LIKE '%$fritekst7%' OR IT LIKE '%$fritekst7%' OR Referencer LIKE '%$fritekst7%' OR Job LIKE '%$fritekst7%' OR Kommentar LIKE '%$fritekst7%' OR Lon LIKE '%$fritekst7%' OR Dato LIKE '%$fritekst7%'"; } $fritekst8 = $_POST['fritekst8']; if ($fritekst8 != '') { $where .= " AND ID LIKE '%$fritekst8%' OR RefNr1 LIKE '%$fritekst8%' OR RefNr2 LIKE '%$fritekst8%' OR RefNr3 LIKE '%$fritekst8%' OR ForNavn LIKE '%$fritekst8%' OR EfterNavn LIKE '%$fritekst8%' OR Adressse LIKE '%$fritekst8%' OR PostNr LIKE '%$fritekst8%' OR Town LIKE '%$fritekst8%' OR HjemmeTlf LIKE '%$fritekst8%' OR ArbejdsTlf LIKE '%$fritekst8%' OR MobilTlf LIKE '%$fritekst8%' OR Email LIKE '%$fritekst8%' OR Interesser LIKE '%$fritekst8%' OR Rygte LIKE '%$fritekst8%' OR Udd LIKE '%$fritekst8%' OR Sprog LIKE '%$fritekst8%' OR ArbejdsErfaring LIKE '%$fritekst8%' OR IT LIKE '%$fritekst8%' OR Referencer LIKE '%$fritekst8%' OR Job LIKE '%$fritekst8%' OR Kommentar LIKE '%$fritekst8%' OR Lon LIKE '%$fritekst8%' OR Dato LIKE '%$fritekst8%'"; } $alderfra = $_POST['alderfra']; if ($alderfra != '') { $where .= " AND BirthYear LIKE '%$alderfra%'"; } $aldertil = $_POST['aldertil']; if ($aldertil != '') { $where .= " AND BirthYear LIKE '%$aldertil%'"; } $region = $_POST['region']; if ($region != '') { $where .= " AND Region1 LIKE '%$region%' OR Region2 LIKE '%$region%' OR Region3 LIKE '%$region%'"; } $mand = $_POST['mand']; if ($mand != '') { $where .= " AND Kon LIKE '%$kon%'"; } $kvinde = $_POST['kvinde']; if ($kvinde != '') { $where .= " AND Kon LIKE '%$kon%'"; } ?>
Hmm du får jo et problem med at din $where vil starte med AND Derudover skal du måske tænke over præcedens regler for AND og OR ...jeg ville nok selv sætte paranteser for at være sikker på de blev tolket korrekt
Du kunne lave en funktion som denne...og så kalde den med hver af dine POST variable som er sat...så er der kun et sted at rette hvis det er function createSQL($tekst){ $sql = " AND ID LIKE '%$tekst%' OR RefNr1 LIKE '%$tekst%' OR RefNr2 LIKE '%$tekst%' OR RefNr3 LIKE '%$tekst%' OR ForNavn LIKE '%$tekst%' OR EfterNavn LIKE '%$tekst%' OR Adressse LIKE '%$tekst%' OR PostNr LIKE '%$tekst%' OR Town LIKE '%$tekst%' OR HjemmeTlf LIKE '%$tekst%' OR ArbejdsTlf LIKE '%$tekst%' OR MobilTlf LIKE '%$tekst%' OR Email LIKE '%$tekst%' OR Interesser LIKE '%$tekst%' OR Rygte LIKE '%$tekst%' OR Udd LIKE '%$tekst%' OR Sprog LIKE '%$tekst%' OR ArbejdsErfaring LIKE '%$tekst%' OR IT LIKE '%$tekst%' OR Referencer LIKE '%$tekst%' OR Job LIKE '%$tekst%' OR Kommentar LIKE '%$tekst%' OR Lon LIKE '%$tekst%' OR Dato LIKE '%$tekst%'"; return $sql; }
Hvis du fjerner dit AND fra den function jeg foreslog så kan du bygge din sql op noget ala det her: ---- $sql = "Select * From din_tabel Where "; $tjek = "nej";
Så tjekker den samtidig om der er sat noget ind...hvis der er det skal den benytte AND Hvis ikke der er sat noget ind så er det det første i sql sætningen og derfor skriver den ikke AND
Arhhh OK! Hvordan skriver jeg så resultatet ud? Det skal jo være sådan at der kommer en linie for hvert søgeresultat, f.eks.: Søgeresultater: ID FORNAVN EFTERNAVN 1 sune broström vis resultat 2 arne andersen vis resultat
Hvis man trykker "vis resultat" kommer der en side hvor alle søgeresultaterne bliver udskrevet for den valgte række.
Jamen du laver din sql og udfører den ved $result = mysql_query($sql) or die(mysql_error); Dernæst laver du en tabel og kører en løkke ala ------- echo "<table>"; while ($row = mysql_fetch_array($result)) { echo "<tr><td>$row[ID]</td>"; echo "<td>$row[Fornavn]</td>"; echo "<td>$row[Efternavn]</td></tr>"; } echo "</table>";
Ja altså... hæ hæ! (Det er måske lidt uforståligt!) Man taster de ting ind i søgefelterne som man gerne vil finde i db'en. Herefter skal de "matches" udskrives, altså så man kan se hvor mange søge resultater der er, og så man kan vælge et af de søge resultater! Når man vælger et af søge resultaterne kommer man til en ny side hvor man kan se alt det data der fandtes i den valgt række (eller valgte søge resultat). Håber det var lidt mindre kryptisk!?! Hvis det ikke er for meget at forlange, kan du så ikke skrive de to koder sammen?? Jeg er temmelig newbee til det hersens php noget!
Skal lige være med...ligner en dating site eller noget Den søgning vi lige har lavet den finder personer? Derefter vil du vise de personer som blev fundet? Til sidst vil du kunne klikke på en af de personer og vise oplysninger om dem?
Det er nemlig rigtigt! Hæ hæ.. men det er ikke et dating site. Det er et projekt jeg er i gang med i forbindelse med eksamens projekt i min skole. Det er noget CV halløj, hvor brugeren af CV-admin delen skal kunne søge på de CV'er der er kommet ind! Der skal kunne laves fritekst søgning på alt hvad der ligger i CV'et, på nær region, køn og alder som søger direkte på de felter i db'en som hedder "Region", "Kon" og "BirthYear".
Ok men så vil jeg foreslå følgende Du har din søgning og resultaterne af den laver du i en tabel ala det jeg foreslog oven over. Der hvor du skal skrive vis resultat laver du så echo "<td><a href=\"enside.php?id=$row[ID]\"</a></td>"; Du kan evt lave target="_blank" hvis du vil åbne det i et nyt vindue På den side laver du så en $id = $_GET['id'] Dernæst kan du så lave en sql ala SQL = "Select * From din_tabel Where id="$id Og så derefter spytte de resultater ud
Okay.. Det lyder som en go' idé! Men kan du skrive den kode sammen som udføre søgningen? Du behøver selvfølgelig ikke skrive ALLE fritekst søgningerne ind, det kan jeg selv gøre. Men bare for at jeg kan se hvordan koden ser ud når den bliver samlet! Kan du det??? Det ville være rigtigt flinkt af dig ;-)
jamen du har jo din form helt fra start du har min funktion fra 12:09:50 hvor du bare skal fjerne det første AND og du har starten på koden som laver sql søgningen 12:17:37 12:42:28 har du også sammen med 13:12:00 kode til at lave en tabel over navnene :o) Så det burde være til at klare Jeg har ikke selv mulighed for at teste noget..ville gerne..men på en måde er det også lidt "learning by doing" .. :o)
Argghhhh.... Det værste er at du har ret! Hæ hæ... Jeg kigger lige på det, og vender tilbage hvis det driller... det plejer det at gøre!!! Men tak for hjælpen indtil videre busschou! Du har været til stor hjælp!! Skriver lige hvis du skal svare = hvis jeg har fået løst problemet!!! Ellers hører du fra mig ;oD Takker!!
Hehe sender hermed et svar... så kan du jo altid vurdere det :o) Hvis du skriver senere så er jeg desværre ikke tilstede i aften.. Måske en anden så kan hjælpe dig..ellers er jeg back i morgen :o)
Hmmm.... Der er fejl. Jeg kan ikke lige gennemskue hvad den skyldes:
$fritekst1 = $_POST['fritekst1']; if ($fritekst1 != '') { if $tjek == "nej"{ //DER SKULLE VÆRE EN FEJL I DENNE LINIE!?! $sql .= "(".createSQL($fritekst1).")"; $tjek = "ja"; }else{ $sql .= "AND (".createSQL($fritekst1).")"; } }
ja sådan vil jeg mene Du virker ret ny..hvad har du læst om php?...for så vil jeg da måske anbefale et par sites omkring det? eller er det mest database der er problem?
Jeg har skrevet det sådan, men så hopper den direkte til error! Ja, jeg er temmlig ny til php, men har sådan noglelunde styr på det (bop-bop) :-) Det er mest det her søge modul der er problemet, de andre ting har jeg styr på, det er bare det søgning der er så f..... irreterende!
ok ... or die(mysql_error) -- bør du altid have efter enhver database tilgang for så vil den fortælle dig hvad som er galt Hvis ikke du har det så giver den dig en fejl..men en ubrugelig fejlmedelelse Så du må lige poste din fejlmeddelelse for så er der nok noget galt med sql´en
ok så prøver du at udskrive din sql Oven over din linje med $result = mysql_query($sql) or die(mysql_error()); laver du en linje echo "$result"; For så kan vi se hvad det er den prøver at gøre Det er muligt at der er nogen af felterne som måske er tal i databasen men du sammenligner med tekst..osv..
Det ændre ingenting! Der står bare den samme fejl! Det skal siges at denne fejl kommer når siden loades, altså inden man skriver noget i nogle af søge felterne!
ok din submit knap har du kaldt for "senddata" kan jeg se Det er klart at du kan ikke bede den om at søge i databasen på ingen ting Din form skal have et name, action, og type Action kan du evt sætte til den side du er på Type sætter du til post Alt det kode du nu har under formen med functionen og opbygning af $sql og $result osv Det omkranser du af en if sætning på følgende måde if (isset($_POST['senddata'])){ //al den kode som skal udføres hvis formen er sendt } Så bliver koden kun udført hvis der er trykket på submit
Nu kører det!!!! Jeg havde sgu' ikke lige set det med min form!Havde dog også ændret den i mellem tiden, men det sidste hjalp! Det eneste der er at der ikke kommer noget link efter "EfterNavn"? Hmmm...
ser den sådan ud ? ---------- echo "<table>"; while ($row = mysql_fetch_array($result)) { echo "<tr><td>$row[ID]</td>"; echo "<td>$row[Fornavn]</td>"; echo "<td>$row[Efternavn]</td>"; echo "<td><a href=\"enside.php?id=$row[ID]\"</a></td></tr>"; } echo "</table>";
Det hjalp en hel del!! KANON! Jeg sidder og roder med at smide det ind i html tables, men der bliver kkun udskrevet linket når jeg gør det på denne måde, nogle forslag?: <?php echo "$result"; $result = mysql_query($sql) or die(mysql_error()); ?> <table> <tr> <td class="p"><?php echo $row["ID"]; ?></td> <td class="p"><?php echo $row["ForNavn"]; ?> </td> <td class="p"><?php echo $row["EfterNavn"]; ?></td> <td><a class="red" href="found_cv.php?id=<?php $row['ID']; ?>">Vis CV</a></td> </tr> </table> <?php } ?>
Jeg ville lave løkken uden om html tabellen! Jeg løste det på denne måde, men løkken virker ikke (altså hvis man skriver søgeord ind i flere søgefelter!) <?php echo "$result"; $result = mysql_query($sql) or die(mysql_error()); ?> <table align="center"> <tr><?php while ($row = mysql_fetch_array($result)) {?> <td class="p"><?php echo $row["ID"]; ?></td> <td class="p"><?php echo $row["ForNavn"]; ?> </td> <td class="p"><?php echo $row["EfterNavn"]; ?></td> <td><a class="red" href="found_cv.php?id=<?php $row['ID']; ?>">Vis CV</a></td> </tr><?php }?> </table> <?php } ?>
ok det forstår jeg ikke Fik du rettet det så du sår lavet din sql ud fra samtlige felter? eller tog du kun det to jeg lavede eksempel på? JEg må desværre smutte for idag Jeg håber du kan finde ud af lidt Ellers send gerne et link
Jeg har lavet det sådan at den skal søge på flere felter, men det virker ikke! Det virker kun hvis man søger på et felt! Vend tilbage når du kan/ har tid! 1000 tak for hjælpen indtil videre!
Hey Busschou! Det går fremad, men jeg har stadig problemer med at søge i flere søgefelter! Den kan ku søge i ét søgefelt som det er nu, så der er nogle problemer med: $sql = "Select * From din_tabel Where "; $tjek = "nej";
function createSQL($tekst){ $sql = " ID LIKE '%$tekst%' OR RefNr1 LIKE '%$tekst%' OR RefNr2 LIKE '%$tekst%' OR RefNr3 LIKE '%$tekst%' OR ForNavn LIKE '%$tekst%' OR EfterNavn LIKE '%$tekst%' OR Adresse LIKE '%$tekst%' OR PostNr LIKE '%$tekst%' OR Town LIKE '%$tekst%' OR HjemmeTlf LIKE '%$tekst%' OR ArbejdsTlf LIKE '%$tekst%' OR MobilTlf LIKE '%$tekst%' OR Email LIKE '%$tekst%' OR Interesser LIKE '%$tekst%' OR Rygte LIKE '%$tekst%' OR Udd LIKE '%$tekst%' OR Sprog LIKE '%$tekst%' OR ArbejdsErfaring LIKE '%$tekst%' OR IT LIKE '%$tekst%' OR Referencer LIKE '%$tekst%' OR Job1 LIKE '%$tekst%' OR Kommentar LIKE '%$tekst%' OR Lon LIKE '%$tekst%' OR Dato LIKE '%$tekst%'"; return $sql; }
$sql = "SELECT * FROM Kandidater WHERE "; $tjek = "nej";
$alderfra = $_POST['alderfra']; if ($alderfra != '') { $sql .= " AND (BirthYear LIKE '%$alderfra%')"; } $aldertil = $_POST['aldertil']; if ($aldertil != '') { $sql .= " AND (BirthYear LIKE '%$aldertil%')"; } $region = $_POST['region']; if ($region != '') { $sql .= " AND (Region1 LIKE '%$region%' OR Region2 LIKE '%$region%' OR Region3 LIKE '%$region%')"; } $mand = $_POST['mand']; if ($mand != '') { $sql .= " AND (Kon LIKE '%$kon%')"; } $kvinde = $_POST['kvinde']; if ($kvinde != '') { $sql .= " AND (Kon LIKE '%$kon%')"; }
echo "$sql"; $result = mysql_query($sql) or die(mysql_error());
så kommer alder,region mm også på Der er lige et par ting til de felter Hvad taster man i alderfra og aldertil feltet? taster man fx 20-22? For i databasen hedder det BirthYear og hvis det er et årstal så skal den lige laves om! Regionen bør være god nok Men kønnet hvordan står det i databasen? For hvis feltet blot har værdien "Kvinde" eller "Mand" så skal der jo ikke laves en like men et = :o)
Ja, det er jo lige det!!! Man skal skrive f.eks.: 1981 - 1979 og så skal den tage de rows hvor der er 1981 1980 1979. Køn står netop som mand eller kvinde :-) så jeg skal nok lige ændre "like" til "="!
hvis alderfra er udfyldt alene så vælger den alle som er større tilsvarende aldertil vælger alle som er mindre hvis begge er udfyldt vælger den dem imellem
Der er lige en overflødig ting så du får lige en til her om to sek :o)
Hmmm... Hvis jeg skriver "sune" i søgefelt 1 og "benny" i søgefelt 2 (disse navne ligger i db'en!) kommer følgende fejl: SELECT * FROM Kandidater WHERE ( ID LIKE '%sune%' OR RefNr1 LIKE '%sune%' OR RefNr2 LIKE '%sune%' OR RefNr3 LIKE '%sune%' OR ForNavn LIKE '%sune%' OR EfterNavn LIKE '%sune%' OR Adresse LIKE '%sune%' OR PostNr LIKE '%sune%' OR Town LIKE '%sune%' OR HjemmeTlf LIKE '%sune%' OR ArbejdsTlf LIKE '%sune%' OR MobilTlf LIKE '%sune%' OR Email LIKE '%sune%' OR Interesser LIKE '%sune%' OR Rygte LIKE '%sune%' OR Udd LIKE '%sune%' OR Sprog LIKE '%sune%' OR ArbejdsErfaring LIKE '%sune%' OR IT LIKE '%sune%' OR Referencer LIKE '%sune%' OR Job1 LIKE '%sune%' OR Kommentar LIKE '%sune%' OR Lon LIKE '%sune%' OR Dato LIKE '%sune%')AND ( ID LIKE '%benny%' OR RefNr1 LIKE '%benny%' OR RefNr2 LIKE '%benny%' OR RefNr3 LIKE '%benny%' OR ForNavn LIKE '%benny%' OR EfterNavn LIKE '%benny%' OR Adresse LIKE '%benny%' OR PostNr LIKE '%benny%' OR Town LIKE '%benny%' OR HjemmeTlf LIKE '%benny%' OR ArbejdsTlf LIKE '%benny%' OR MobilTlf LIKE '%benny%' OR Email LIKE '%benny%' OR Interesser LIKE '%benny%' OR Rygte LIKE '%benny%' OR Udd LIKE '%benny%' OR Sprog LIKE '%benny%' OR ArbejdsErfaring LIKE '%benny%' OR IT LIKE '%benny%' OR Referencer LIKE '%benny%' OR Job1 LIKE '%benny%' OR Kommentar LIKE '%benny%' OR Lon LIKE '%benny%' OR Dato LIKE '%benny%')Resource id #5
Hvis jeg udfylder alder, kommer følgende fejl: SELECT * FROM Kandidater WHERE AND (BirthYear BETWEEN 1981 AND 1980)You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND (BirthYear BETWEEN 1981 AND 1980)' at line 1
Og for region: SELECT * FROM Kandidater WHERE AND (Region1 = 'Østjylland' OR Region2 = 'Østjylland' OR Region3 = 'Østjylland')You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND (Region1 = 'Østjylland' OR Region2 = 'Østjylland' OR Region
og for køn: SELECT * FROM Kandidater WHERE You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Det hjalp lidt! Men når man laver 2 fritekst søgninger, er det kun søgningen i det sidste søgfelt der bliver vist! Endvidere viker Køn stadig ikke! ---------- Hmm... når man laver én fritekst søgning og også søger på f.eks. region, kan den godt tage begge søgninger med!
ahhhh doh Det er fordi vi bruger AND og ikke OR Så hvis du søger på sune og benny så leder den der hvor det både er sune og benny Jeg tror faktisk du kan rette alle AND til OR..prøv ad og lav en test og evt poste udskriften
Det hjalp!!! Nu kan der søges på flere fritekstsøgninger! Men køn virker stadig ikke! Skal AND rettes til OR her også?? Det med hjernen; bare rolig, sådan føler jeg det hele tiden :o) desuden er det jo søndag, dér skalman være lidt slatten i hovedet ;oD
ja klart det er mig som er en copy paste spade ;o) Alle AND skal være OR Der hvor jeg nu har skrevet TEKST der skal du skrive det som står i din database i feltet Kon - jeg troede der enten stod Mand eller Kvinde ? $mand = $_POST['mand']; if ($mand != '') { if ($tjek == "nej") { $sql .= " (Kon = 'TEKST')"; $tjek = "ja"; }else{ $sql .= " OR (Kon = 'TEKST')"; } } $kvinde = $_POST['kvinde']; if ($kvinde != '') { if ($tjek == "nej") { $sql .= " (Kon = 'TEKST')"; $tjek = "ja"; }else{ $sql .= " OR (Kon = 'TEKST')"; } }
I databasen står der enten mand eller kvinde, så det du skrev først var vel ok (på nær lige det med AND)!?! En ande ting; hvis jeg nu skriver "sune" i fritekstsøgningen og vælger 1980 i alder er det meningen at den KUN skal tage CV'er som har noget tekst med "sune" med en alder på 1980. Nu tager den CV'er med både "sune" og "1980."
ok godt så Så skal du finde ud af hvilke søgninger som hænger sammen så at sige Hvis alle er AND så afhænger alle af alle HVis alle er OR så afhænger ingen af nogen Så hvis du vil have at når du skriver "sune" og alderfra "1980" kun skal finde dem som hedder noget med sune og er ældre end 1980 så er det jo en anden sag end finde dem som enten hedder sune eller er fra 1980 og opad :o) Dvs så skal du rette OR til AND der hvor den ser på alderfra og aldertil Men du skal gøre op med dig selv om det også skal rettes andre steder
hvis jeg forstår dig korrekt så bør der vel være OR ved alle fritekst søgninger og AND ved køn, alder, region Således at man kan søge på en som enten hedder sune eller benny men uanset hvad er mand og uanset hvad bor i kbh
Jeps.... Det er nemlig rigtigt! Det har jeg også rettet det til og nu opfører den sig som jeg vil have - KANON Busschou! Men der er stadig probs med Køn, disse kan den ikke søge på! I databasen står der under Køn enten mand eller kvinde. Lige nu står der i koden for Køn AND (Kon = 'Kvinde') og AND (Kon = 'Mand'), det skulle vel være OK!??!
Hæ hæ!!! Det er iorden busschou, jeg vil gøre det samme!!! Du har været en kanon hjælp, så jeg vil selv lige prøve at kigge på det dér med de Køn!!! Hermed point givet!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.