04. april 2010 - 20:37Der er
30 kommentarer og 3 løsninger
Søge funktion med flere felter
Okay er ret sikker på der er spurgt om det før men har ledt siden i eftermiddags og synes ikke jeg har kunnet finde et tilfredsstillende svar så here goes:
Jeg skal lave en søge funktion har brugeren skal indtaste 2 ting
Lokalenr: Uge:
Hvor efter den skal søge i min tabel "Lektioner" og finde de lektioner hvor Lokalenr (LokaleID) og Uge stemmer over ens med søge kriterierne,
Altså søger du på Lokale 51 og Uge 14 skal den komme frem med det data hvor feltet LokaleID er lig med 51 og feltet Uge er lig med 14,
Hvordan ved du hvilket lokalenr og ugenummer brugeren har valgt? Har du en php side hvor du for eksempel gemmer brugerens valg i variabler saasom $lokalenr og $ugenr? Og soeger du php kode der kan udtraekke oplysningerne? Hvis din tabel Lektioner svarer til forslaget i http://www.eksperten.dk/spm/906121 saa vil jeg foreslaa noget i den henretning:
denniswiencken, jeg gaar ud fra at indlaeg #6 og 7 var reaktioner paa mit indlaeg. Men var mit indlaeg et brugbart svar paa dit spoergsmaal eller har jeg misforstaaet problemet? Det er saadan en reaktion der er nyttig nu.
Saa den gode nyhed er at jeg stort set gaettede rigtigt, du faar de to soegekriteria i php variable fra en html form.
Den daarlige nyhed er saa at du faar fejlmelding. Jeg vil gaette paa at du ikke faar noget output fra din query, muligvis fordi der er en mismatch med tabellen. Proev med "or die(mysql_error()" og se om det giver en fejlmelding, altsaa:
$result = mysql_query("SELECT * FROM Lokaler WHERE LokaleID = " . $lokalenr . "AND Uge = " . $ugenr ) or die(mysql_error());
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 Uge =' at line 1
Jeg taenkte nok at der var et problem med tabellen. Kan du give CREATE TABLE scriptet eller specificere precist hvilke kolonner der er med navne og datatyper?
Der har vi problemet: I din tabel lektion er baade LokaleID og Uge defineret som en tekst (VARCHAR) og ikke som et nummer. Har du allerede en masse vaerdier i tabellen lektion? I saa fald maa du have, for eksempel, Uge = "12", altsaa en tekst, i stedet for Uge = 12, altsaa et tal. Men det er tude tosset. Jeg vil foreslaa at du dropper tabellen ("DROP TABLE lektion") og opretter en ny hvor du laver LokaleID og Uge til INT. Nu vi er i gang, hvad bruger du feltet Nr til? Jeg vil gaette paa at det ogsaa burde vaere INT. Og Dag? Hvad har du staaende i Elever? Det burde vaere en reference, en "fremmednoegle", til tabellen elever og derfor ogsaa INT. Det bliver saaledes til dette:
$query3 = 'CREATE TABLE lektion( '. 'id INT NOT NULL AUTO_INCREMENT, '. 'LokaleID INT NOT NULL, '. 'Nr INT NOT NULL, '. 'Dag INT NOT NULL, '. 'Uge INT NOT NULL, '. 'Elever INT NOT NULL, '. 'PRIMARY KEY(id))';
Efter denne rettelse burde queryen i #1 virke.
Proev det af og fortael mig hvordan det gaar. Jeg naar nok ikke mere i aften, men jeg er med igen i morgen tidlig.
$query3 = 'CREATE TABLE lektion( '. 'id INT NOT NULL AUTO_INCREMENT, '. 'LokaleID INT NOT NULL, '. 'Nr INT NOT NULL, '. 'Dag INT NOT NULL, '. 'Uge INT NOT NULL, '. 'Elever INT NOT NULL, '. 'PRIMARY KEY(id))';
fejl: 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 Uge =' at line 1
Det er haardnaekket. Jeg gaar ud fra at du heller ikke faar nogen fejlmelding fra "..or die(mysql_error()).
Det var maaske et forsoeg vaerd at se hvad der staar i de to variable. Proev at echo dem som vist nedenfor og se hvad der staar og se efter at du har disse vaerdier i din tabel.
Det var super. (Jeg naaede ikke at smutte, det goer jeg nu.) Her er et svar fra mig. (Der var to andre medlemmer der efter min mening leverede afgoerenden indlaeg, en der rettede min fejl hvor der ingen mellemrum var foer AND og en der kikkede paa $_POST[''] som jeg ikke havde taenkt paa da jeg koncentrerede mig om selve sql saetningen.)
The_Buzz -> Har du prøvet at køre denne: select * from lektioner where LokaleID is like %%searchfield%% or Uge is like %%searchfield2%%
Mangler du ikke nogle bogstaver i linket under dit brugernavn ? www.lottostatistik.dk :O)
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.