Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomake-painikkeen ja enter-painikkeen erot?

Sivun loppuun

kettu [10.05.2004 16:10:04]

#

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...

kasetti [10.05.2004 16:25:30]

#

Uskoisin että esim. javascriptilla voi tehdä niin että nappi toimii vain hiiren klikkauksella, ei entterillä.

kasetti [10.05.2004 16:32:20]

#

tuolta löytyy vielä esimerkki:

http://www.cs.tut.fi/~jkorpela/forms/enter.html

Antti Laaksonen [10.05.2004 18:45:27]

#

Vika tuskin on PHP-koodissa. Mitä selainta käytät ja miltä lomakkeesi HTML-koodi näyttää?

kettu [11.05.2004 10:33:41]

#

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?

folio [11.05.2004 10:47:53]

#

>> 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?

kettu [11.05.2004 11:36:54]

#

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)....

Olga [11.05.2004 11:47:22]

#

mysql_num_rows() - funktio on ystäväsi.

kettu [11.05.2004 14:47:13]

#

Heips!

No joo, niin on. Taidan vähän olla turhan väsynyt, kun en heti ensimiettimällä hokaa perusjuttuja!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta