/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problemer med mit sommerprojekt i PHP og M~
Fra : Jonas Voss


Dato : 14-07-02 15:41

Mit sommerprojekt er at lave en database over min pladesamling i PHP og
MySQL, men jeg har nogle problemer med at lave en søgefunktion der
virker ordentligt.

Jeg har via lidt copy/paste og læsning af diverse tutorials, nået from
til en kode der ser ud som dette:
<http://62.198.70.62/sommerprojekt.txt>

Denne if-sætning gentager jeg fire gange, en gang for hver søge-mulighed
(artist, title, format, released), og det er så her det mærkværdige
kommer ind i billedet.

Søger jeg på Artist, og f.eks. "Blackalicious" får jeg ingen hits (og
jeg har en CD med dem), men søger jeg på format og "CD" får jeg ganske
rigtig alle de poster der er CD'ere.

Laver jeg samme søgning via kommandolinien i MySQL med samme syntaks som
i PHP-scriptet får jeg ét hit, som der også skulle være.

Min søge-formular er rimlig ligetil, og burde så vidt jeg kan se passere
alle de variabler der er brug for til at afvikle søge funktionen. Den
kan ses her: http://62.198.70.62/divinyls/search.html

Nogen der har nogle forslag til hvad der går galt?

--
| Jonas @ 55.7,12.5 | <http://verture.net/> |

 
 
Søren Lund Jensen (14-07-2002)
Kommentar
Fra : Søren Lund Jensen


Dato : 14-07-02 16:36

"Jonas Voss" <spamthis@verture.net> wrote in message
news:1ffbjr3.y3aywq11ywbr4N%spamthis@verture.net...
> Denne if-sætning gentager jeg fire gange, en gang for hver søge-mulighed
> (artist, title, format, released), og det er så her det mærkværdige
> kommer ind i billedet.

Hvad med at lade SQL håndtere hele søgningen: "SELECT * FROM tblDivinyls
WHERE fname = \"$searchstr\" or f-et-eller-andet = '$str' o.s.v. ?



Jonas Voss (14-07-2002)
Kommentar
Fra : Jonas Voss


Dato : 14-07-02 17:19

Søren Lund Jensen <mufoxe@hotmail.com> wrote:

> "Jonas Voss" <spamthis@verture.net> wrote in message
> news:1ffbjr3.y3aywq11ywbr4N%spamthis@verture.net...
> > Denne if-sætning gentager jeg fire gange, en gang for hver søge-mulighed
> > (artist, title, format, released), og det er så her det mærkværdige
> > kommer ind i billedet.
>
> Hvad med at lade SQL håndtere hele søgningen: "SELECT * FROM tblDivinyls
> WHERE fname = \"$searchstr\" or f-et-eller-andet = '$str' o.s.v. ?

Meget snildt, det har jeg rettet nu, koden bliver en smule mere
overskuelig på den måde. Jeg har dog stadig problemet med at den ikke
returnerer noget når jeg søger på Title og Artist.

Meget mystiskt.

--
| Jonas @ 55.7,12.5 | <http://verture.net/> |

Søren Lund Jensen (14-07-2002)
Kommentar
Fra : Søren Lund Jensen


Dato : 14-07-02 20:35

"Jonas Voss" <spamthis@verture.net> wrote in message
news:1ffbovv.17mj7t81muoczgN%spamthis@verture.net...
> Meget snildt, det har jeg rettet nu, koden bliver en smule mere
> overskuelig på den måde. Jeg har dog stadig problemet med at den ikke
> returnerer noget når jeg søger på Title og Artist.

Sikker på at dine data er korrekte? Måske det er noget case-halløj?



Jonas Voss (15-07-2002)
Kommentar
Fra : Jonas Voss


Dato : 15-07-02 10:53

Søren Lund Jensen <mufoxe@hotmail.com> wrote:

> "Jonas Voss" <spamthis@verture.net> wrote in message
> news:1ffbovv.17mj7t81muoczgN%spamthis@verture.net...
> > Meget snildt, det har jeg rettet nu, koden bliver en smule mere
> > overskuelig på den måde. Jeg har dog stadig problemet med at den ikke
> > returnerer noget når jeg søger på Title og Artist.
>
> Sikker på at dine data er korrekte? Måske det er noget case-halløj?

Mener du case som i store og små bogstaver? I så fald er det ikke noget
problem, og jeg tror mine data er ok. Jeg kan nemlig sagtens lave
forespørgsler i prompten på MySQL, og får også de svar jeg forventer, og
det er ligegyldigt om det er med store eller små bogstaver.

--
| Jonas @ 55.7,12.5 | <http://verture.net/> |

Jesper Brunholm (14-07-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 14-07-02 20:44

Søren Lund Jensen wrote:
> "Jonas Voss" <spamthis@verture.net> wrote in message
> news:1ffbjr3.y3aywq11ywbr4N%spamthis@verture.net...
>
>>Denne if-sætning gentager jeg fire gange, en gang for hver søge-mulighed
>>(artist, title, format, released), og det er så her det mærkværdige
>>kommer ind i billedet.
>
>
> Hvad med at lade SQL håndtere hele søgningen: "SELECT * FROM tblDivinyls
> WHERE fname = \"$searchstr\" or f-et-eller-andet = '$str' o.s.v. ?

og du kan endda gøre den mere "tolerant" med

where fname LIKE \"$searchstr\" or ...

mvh

Jesper Brunholm


Brian Poulsen (14-07-2002)
Kommentar
Fra : Brian Poulsen


Dato : 14-07-02 21:11

Jesper Brunholm wrote:
> Søren Lund Jensen wrote:
>
>> "Jonas Voss" <spamthis@verture.net> wrote in message
>> news:1ffbjr3.y3aywq11ywbr4N%spamthis@verture.net...
>>
>>> Denne if-sætning gentager jeg fire gange, en gang for hver søge-mulighed
>>> (artist, title, format, released), og det er så her det mærkværdige
>>> kommer ind i billedet.
>>
>>
>>
>> Hvad med at lade SQL håndtere hele søgningen: "SELECT * FROM tblDivinyls
>> WHERE fname = \"$searchstr\" or f-et-eller-andet = '$str' o.s.v. ?
>
>
> og du kan endda gøre den mere "tolerant" med
>
> where fname LIKE \"$searchstr\" or ...
>
> mvh
>
> Jesper Brunholm
>

det er \"%$searchstr%\" der skal bruges så vidt jeg ved.

Brian Poulsen
-------------
http://fuz.dk


Jesper Brunholm (15-07-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 15-07-02 06:39

Brian Poulsen wrote:
> Jesper Brunholm wrote:

>> og du kan endda gøre den mere "tolerant" med
>>
>> where fname LIKE \"$searchstr\" or ...

>
> det er \"%$searchstr%\" der skal bruges så vidt jeg ved.

selvfølgelig - my bad...

mvh

Jesper Brunholm


Tonni Aagesen (14-07-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 14-07-02 16:50

Jonas Voss wrote:

> Nogen der har nogle forslag til hvad der går galt?

Prøv denne her:
$sql = "SELECT * FROM tblDivinyls WHERE fname='$searchstr'";


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>


Jonas Voss (14-07-2002)
Kommentar
Fra : Jonas Voss


Dato : 14-07-02 17:19

Tonni Aagesen <use.my@signature.please> wrote:

> Jonas Voss wrote:
>
> > Nogen der har nogle forslag til hvad der går galt?
>
> Prøv denne her:
> $sql = "SELECT * FROM tblDivinyls WHERE fname='$searchstr'";

Det virker, men det hjælper desværre ikke på problemet med at den ikke
returnerer noget når jeg søger på Artist og Title fra søge-formularen.

--
| Jonas @ 55.7,12.5 | <http://verture.net/> |

Nezar Nielsen (15-07-2002)
Kommentar
Fra : Nezar Nielsen


Dato : 15-07-02 12:23

Jonas Voss wrote:
....
> Søger jeg på Artist, og f.eks. "Blackalicious" får jeg ingen hits (og
> jeg har en CD med dem), men søger jeg på format og "CD" får jeg ganske
> rigtig alle de poster der er CD'ere.
>
> Laver jeg samme søgning via kommandolinien i MySQL med samme syntaks som
> i PHP-scriptet får jeg ét hit, som der også skulle være.

Har du prøvet at udskrive det sql der bliver sendt til mysql? (print
$sql;) så burde du kunne se hvad det er der går galt.. (ved at kopiere
den sætning den sender - ikke det du tror den sender).

Husk også altid at kontrollere for fejl:

$result = mysql_query($sql) or die("Fejl: ".mysql_error());

Iøvrigt vil den aldrig returnere den første række på den måde du gør det
på. Måden du finder ud af om der var nogle hits, gør du ved at sige

if($row=mysql_fetch_array($result))

dvs. den første række bliver lagt i $row, som du aldrig udskriver...

prøv i stedet at rette til:

if ( $searchtype == "artist" ){
   $sql = "SELECT * FROM tblDivinyls WHERE fname = \"$searchstr\"";
   $result = mysql_query($sql) or die("Fejl: ".mysql_error());
   if (mysql_num_rows($result) > 0){
      echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\"
width=\"100%\">\n";
      echo
"<tr><td>Artist</td><td>title</td><td>Format</td><td>Released</td></tr>\n";

      do {
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",
$myrow["fname"], $myrow["title"], $myrow["format"], $myrow["released"]);
      } while ($myrow = mysql_fetch_array($result));
      echo "</table>\n";
   } else {
      print "Sorry, no records were found with \"$searchstr\" in it when
searching on $searchtype";}
}

--
Mvh. Nezar Nielsen

Nano - Advanced Simplicity
http://www.nano.dk/


Jonas Voss (15-07-2002)
Kommentar
Fra : Jonas Voss


Dato : 15-07-02 13:14

Nezar Nielsen <tumpen@fez.dk> wrote:

[snip]...

> prøv i stedet at rette til:
>
> if ( $searchtype == "artist" ){
> $sql = "SELECT * FROM tblDivinyls WHERE fname = \"$searchstr\"";
> $result = mysql_query($sql) or die("Fejl: ".mysql_error());
> if (mysql_num_rows($result) > 0){
> echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\"
> width=\"100%\">\n";
> echo
> "<tr><td>Artist</td><td>title</td><td>Format</td><td>Released</td></tr>\n";
>
> do {
> printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",
> $myrow["fname"], $myrow["title"], $myrow["format"], $myrow["released"]);
> } while ($myrow = mysql_fetch_array($result));
> echo "</table>\n";
> } else {
> print "Sorry, no records were found with \"$searchstr\" in it when
> searching on $searchtype";}
> }

Det var lige det der skulle til, mange, mange, mange tak!

--
| Jonas @ 55.7,12.5 | <http://verture.net/> |

Søg
Reklame
Statistik
Spørgsmål : 177505
Tips : 31968
Nyheder : 719565
Indlæg : 6408554
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste