Minulla on Mysql:ssä tietueet:
|Merkki|Malli|Hinta|Vuosimalli|
|xxxxxx|xxxxx|xxxxx|xxxxxxxxxx|
Nyt ongelma on se että en saa haettua kannasta formiin syötetyillä arvoilla. Saan tulostettua vain sen minkä kirjoitan esim malli-kenttään, eli ihan sama mitä siihen kirjoitan. Olen jo pyyhkinyt ziljoonaan kertaan koodin pois, joten jäljellä on tämä ja tästä nyt pitäisi lähteä rakentaan johonkin suuntaan. Olisiko jollaki antaa vinkkiä miten lähtisin tästä eteenpäin?
Tiedän, että tämä varmaan ei ole sinne päinkään:D
Ja formissa on text-fieldid:
-merkki
-malli
-hinta
-vuosimalli
Formin suorituskomento:
<form action="query.php" method="GET" enctype="multipart/form-data" name="form1" target="mainframe">
<?PHP //query.php if(isset($_GET['Etsi'])) { $link = mysql_connect("localhost", "xxxxxxx", "xxxxxxxx") or die("Yhteys epäonnistui"); mysql_select_db("xxxxxxx") or die("Ei saatu yhteyttä valittuu kantaan"); $query = "SELECT Merkki, Malli, Vuosimalli, Hinta FROM vaihtoautot"; $result = mysql_query($query)or die("Haku epäonnistui"); $tulos=$_GET['$merkki']; print ("$tulos"); } ?>
Eli olen aika hakoteillä vielä, mutta vinkkejä otetaan vastaan :)
Tarkoitus on yksinkertainen, formiin syötetään halutut haku-kriteerit ja sen jälkeen "search"-namikkaa joka näyttää löydetyt tulokset.
$query = mysql_query($result);
Oliskohan tuossa $result ja $query muuttujat vaihtaneet paikkaa
mysql_query($query) -> mysql_query($query,$link)
eli $link sinne mukaan, muistaakseni php-dokkarissa sanottiin, että kuuluu laittaa, muuten ei välttämättä toimi...
Varmaan auttaisi asiaa jos tulostaisit yleensäkin nuo kannasta mahdollisesti saadut tiedot :)
Olga kirjoitti:
Varmaan auttaisi asiaa jos tulostaisit yleensäkin nuo kannasta mahdollisesti saadut tiedot :)
No mutta sen teen :D Kiitän ja kumarran !
Nythän se tekee silleen että tulostaa koko kannan.
Millä tavalla saan, että se ottaa huomioon hakukriteerit ja hakee niillä?
Vinkkejä otetaan lisää vastaan.
Laitat ne formilta tulevat hakukriteerit sinne SQL-kyselyyn mukaan :) Avain sana on WHERE-lause. Putkan php-oppaasta löytyy esimerkkejä.
ajv kirjoitti:
Laitat ne formilta tulevat hakukriteerit sinne SQL-kyselyyn mukaan :) Avain sana on WHERE-lause. Putkan php-oppaasta löytyy esimerkkejä.
hmm...
<?PHP $query = "SELECT * FROM vaihtoautot WHERE Merkki,Malli,Vuosimalli,hinta LIKE '%Qmerkki%', '%Qmalli%', '%QVuosimalli%', '%QHinta%'"; ?>
Tuollainen kävi mielessä, mutta lienekkö oikein?
Tai sitten...
<? $query = "SELECT * FROM vaihtoautot WHERE Merkki, Malli, Vuosimalli, Hinta LIKE '%".mysql_escape_string($_GET['QMerkki','QMalli','QVuosimalli','QHinta'])."%'"; ?>
Voe mahoton ko meinaa lapin äijälle olla mahoton tehtävä :)
Ihan mielenkiinnosta, missä vaiheessa syötät hakuehtoihin ne lomakkeelta saamasi tiedot?
Näytät postittavan ne GET metodilla ja oletettavasti register_globals ei ole päällä tietoturvasyistä?
Itse rustaisin hakulausekkeen jotenkin näin esimerkiksi tilanteessa jossa kaikki hakuehdot on saatu:
$query = "SELECT * FROM vaihtoautot WHERE Merkki={$Merkki}, Malli={$Malli}, Vuosimalli={$Vuosimalli}, Hinta={$Hinta}";
lapm kirjoitti:
Ihan mielenkiinnosta, missä vaiheessa syötät hakuehtoihin ne lomakkeelta saamasi tiedot?
No tämähän tässä juuri minulla on ongelma.
Kun laitan formiin haun kriteerit, pitäisi osata tehdä haku niillä kannasta.
Selaimen osoite tällainen:
query.php?merkki=bmw&malli=520&vuosimalli=1996&search=Etsi
Kuhasta löytynyttä.
Tätä olisi varmaan nyt helppo soveltaa?
<?php $hakuId = $_POST['haku_id']; $kysely = "SELECT * FROM asiakas WHERE asiakas.as_tunnus LIKE '$hakuId';"; $haku = mysql_query($kysely, $hae_asiakas) or die(mysql_error()); $row_haku = mysql_fetch_assoc($haku); $totalRows_haku = mysql_num_rows($haku); ?>
Extreme kirjoitti:
Selaimen osoite tällainen:
query.php?merkki=bmw&malli=520&vuosimalli=1996&search=EtsiKuhasta löytynyttä.
Tätä olisi varmaan nyt helppo soveltaa?<?php $hakuId = $_POST['haku_id']; $kysely = "SELECT * FROM asiakas WHERE asiakas.as_tunnus LIKE '$hakuId';"; $haku = mysql_query($kysely, $hae_asiakas) or die(mysql_error()); $row_haku = mysql_fetch_assoc($haku); $totalRows_haku = mysql_num_rows($haku); ?>
Selaimen osoitteen perusteellä käytät GET-metodia, ja php koodisi perusteella POSt-metodia joten ei ihme ettet saa parametrejä lomakkeelta. :)
Muutappa: $hakuId = $_POST['haku_id'];
Muotoon: $hakuId = $_GET['haku_id'];
Ja kokeiles mitä tapahtuu.
Toisaalta sinulla ei osoiterivillä ole muuttujaa haku_id.
merkki,malli,vuosimalli ja search muuttujat sen sijaan löytyisivät.
Jolloin $Muuttuja = $_GET['merkki']; palauttausi Muutujassa merkin saaman arvon.
Käytän GET-metodia. Tuo on vain kuhasta löytynyt esimerkki.
Tän hetken tilanne. Kokeilen ensin vain "merkki" -hakua.
<?PHP //query.php $link = mysql_connect("localhost", "xxxxx", "xxxxx") or die("Yhteys epäonnistui"); mysql_select_db("xxxxx") or die("Ei saatu yhteyttä valittuu kantaan"); $haku = $_GET['merkki']; $query = "SELECT * FROM vaihtoautot WHERE merkki LIKE '$haku';"; $result = mysql_query($query,$link)or die("Haku epäonnistui"); if(mysql_num_rows($result) == 0) // Tähän viesti, kun tuloksia ei löydy.. echo 'Hakusi <b> '.$_GET['merkki'].' </b> ei tuottanut tulosta'; else { // Tähän viesti, kun tuloksia löytyy. echo 'Hakusanallasi <b>'.$_GET['merkki'].' </b> löytyi '.mysql_num_rows($result).' tulosta.'; } // Näytetään tulokset. while($rivi = mysql_fetch_assoc($result)) { print $rivi['Merkki'] . ", " . $rivi['Malli'] . ", " . $rivi['Vuosimalli'] . ", " . $rivi['Hinta'] . ", " .$rivi['Id']. "<br/>"; } ?>
Saan tulostettua lukumäärän kannasta mutta en merkkiä,mallia etc.
Tiedän että tuossa tulostamisessa on jotain pahasti vialla mutta en ole vielä keksinyt että mikä.
Eli jos kirjoitan hakuun bmw, sen pitäisi näyttää kaikki bmw:t kannasta.
Extreme kirjoitti:
Käytän GET-metodia. Tuo on vain kuhasta löytynyt esimerkki.
Huoh, siis kysyt missä vika ja annat esimerkkinä ihan eri koodia kuin missä vika on? Voi huoh sentään.
Ei siis ihme ettemme oikein tunnu pääsevän tässä auttamisessasi eteenpäin.
:D Ei herneitä.
Se oli vain esimerkki koodi, ja laitoin sen vain siihen ilmaistakseni että voiko sitä hyödyntää?
Mutta tuossa sun yläpuolella on viimeisin aikaansaannokseni.
Onko sulla tuohon antaa vinkkejä?
kirjoita rivi[ oikea solunnimi ], niin alat saamaan niitä oikeita tuloksia. Oikea solunnimi pitää olla just tismalleen samalla tavalla kirjoitettu kuin mySQL-kannaskin.
muuta alin while lause muotoon
$osumat = array(); while($rivi = mysql_fetch_assoc($result)) { $osumat[] = $rivi; } echo '<pre>'; print_r ($osumat); echo '</pre>';
Kiitos Lebe80 !
Nyt saan jo kannasta tulostettua.
Tosin joku merkki mulla vielä puuttuu.
Tulostaa tällaisen:
Hakusanallasi bmw löytyi 2 tulosta. Array ( [0] => Array ( [id] => 27 [merkki] => BMW [malli] => 520 [vuosimalli] => 1996 [ajomaara] => 135000 [lisatiedot] => [hinta] => 32 000 [reknro] => abc-123 [kuva] => ) [1] => Array ( [id] => 30 [merkki] => BMW [malli] => M5 [vuosimalli] => 2005 [ajomaara] => 40000 [lisatiedot] => Ei voi paljon enempää vaatia [hinta] => 120 000 [reknro] => ccc-111 [kuva] => ) )
Ei voinut enäämuokata edellistä viestiä.
Joten, vielä sellainen lisä on suunnitteilla että avaa tulokset linkkeinä. Sitten kun klikkaa linkkiä, avaa sen auton tiedot.
Esim.
Hakusanallasi BMW löytyi 2 tulosta.
BMW 520, 1996, 32000€
BMW M5, 2005, 120000€
Extreme kirjoitti:
Kiitos Lebe80 !
Nyt saan jo kannasta tulostettua.
Tosin joku merkki mulla vielä puuttuu.Tulostaa tällaisen:
Lukaiseppas ihan mielenkiinnosta mitä print_r funktio tarkalleen ottaen tekee. ;) Sehän tulostesi mukaan toimii juuri niinkuin sen pitääkin.
Eli joudut edelleen tulostamaan erikseen ne kentät siellä while lauseessa.
Mitä tulee linkkien lisäämiseen, niin teet vain linkin jolla scriptisi tuostaa halutun auton tiedot.
<?php print "<a href=\"?show={$Auton_id}\">".$Auton_tiedot."</a>"; ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.