Hei!
Olen kyhännyt hakukonetta ja se pelaa juuri niinukuin haluan, paitsi silloin kun painan hakulomakkeen painikkeen sijasta vaikka näppiksen enteriä laittaakseni kyselyn eteenpäin. Silloin tulee mm. herjauksia hakutoiminnoista, mitkä pelaavat silloin kun painaa lomakkeen nappia enterin sijaan. Mistä tämä johtuu? Voiko tätä välttää. Ei ole kovin käyttäjäystävällistä ja uskottavaa käytöstä hakukoneelta. Luen ns. haun linkkiotsikot seuraavalla systeemillä listaksi:
while($tulos=mysql_fetc_row($kysely))
{ tulostaa linkkejä...}
Voiko tällä olla merkitystä, tosin en itse usko...
Uskoisin että esim. javascriptilla voi tehdä niin että nappi toimii vain hiiren klikkauksella, ei entterillä.
tuolta löytyy vielä esimerkki:
Vika tuskin on PHP-koodissa. Mitä selainta käytät ja miltä lomakkeesi HTML-koodi näyttää?
Lomakkeeni on seuraavanlainen:
<form name="form2" method="post" action="hakukone.php"> <table> <tr> <td class="hakukone">Anna hakusana:</td> </tr> <tr> <td class="hakukone"><input type="text" name="hakuavain"></td> </tr> <tr> <td class="hakukone"> <input type="submit" name="nappi" value="Hae"> </td> </tr> </table> </form>
Ja tavara menee eteenpäin seuraavasti:
<?php require "pohjustus.php"; // luetaan muuttujaan submit-napin painalluksen luoma muuttujan arvo $nappi = $_POST['nappi']; // luetaan muuttujaan käyttäjän antama hakuavain $hakuavain = $_POST['hakuavain']; if ($nappi=='Hae') { $hakukysely1 = mysql_query("select * from uutiset where (nimi like '%$hakuavain%') or (kuvaus like '%$hakuavain%') or (paivays like '%hakuavain%') order by pvm desc"); $hakukysely2 = mysql_query("select * from ajankohtainen where (nimi like '%$hakuavain%') or (kuvaus like '%$hakuavain%') or (paivays like '%hakuavain%') order by pvm desc"); } else { echo "Virhe! Hakukysely ei onnistunut!"; } //tulostetaan tavaraa if($hakukysely1) { echo "<p>Uutiset:</p>"; echo "<ul>"; while ($tulos = mysql_fetch_row($hakukysely1)) { echo "<li><a href=\"uutiset.php?id=$tulos[0]\">$tulos[1]</a></li>"; } echo "</ul>"; } if($hakukysely2) { //ja niin pois päin.... }
Voisko if-ehdot haitata?
>> Silloin tulee mm. herjauksia hakutoiminnoista, mitkä pelaavat silloin kun painaa lomakkeen nappia enterin sijaan.
Huomattavasti informatiivisempaa olisi kertoa mitä siinä virheilmoituksessa lukee =/
No jokatauaksesa kannattaa tarkistaa palauttaako nuo mysql_query:t arvon false, ja siinä tapauksessa katsoa mysql_error-funktiolla mikä meni vikaan.
Löytyykö esimerkkiurlia?
Heips!
Sain homman pelaamaan, muuttelin if-lausekkeiden ehtoja. Yritän vain edelleen keksiä kuinka luen todeksi hakulausekkeen tulosksen. Siis haluan että if-lauseke toteutuu vain jos $hakukysely1 on tuottanut jonkin tuloksen (eli löytänyt tietokannan taulusta jotain hakusanaa vastaavaa), muulloin siirrytään else kohtaan. En ainakaan saa useammalla erinimisellä kyselyllä samassa tiedostossa pelaamaan if-lausekkeita.
Esim.
if($hakukysely1=='true') Vaikka kysely tapahtuu, taulusta ei välttämättä löydy mitään haettavaa tietoa, jolloin ei siirrytä else kohtaan, vaikka niin yritän saada käymään. Mikä olisi oikea ehto, joka ymmärtäisi että taulusta on löytynyt jotain?
Ja valitettavasti urlia ei löydy.
Koodinpätkääni vielä...
$hakukysely1 = mysql_query("select * from uutinen where (otsikko like '%$hakuavain%') or (kuvaus like '%$hakuavain%') or (paivays like '%hakuavain%') order by pvm desc");
if(taulusta löyty jotain???)
{
tulostusta($hakukysely1)....
mysql_num_rows() - funktio on ystäväsi.
Heips!
No joo, niin on. Taidan vähän olla turhan väsynyt, kun en heti ensimiettimällä hokaa perusjuttuja!
Aihe on jo aika vanha, joten et voi enää vastata siihen.