Terve.
Sinnikkäästi olen nyt yrittänyt arpoa keinoja, joilla saan allaolevasta taulukosta määrätyillä kriteereillä listattua tulokset, mutta en ole toimivaa ja/tai kätevää tapaa vielä löytänyt.
Eli kyseessä on autojen teknisiä tietoja sisältävä taulukko, ja taulukko on muotoa: |ID-numero|Merkki|Malli|Mallitarkennus|Vuosimalli|.. jne.
Teen tähän pienen esimerkkitaulun, jonka jälkeen selostan mitä haluaisin saada tulostettua ja miten.
+---+------------+--------+------------+ | ID| merkki | malli | mallitark. | +---+------------+--------+------------+ | 1 | Mitsubishi | Galant | GLSi 2.0 | | 2 | Mitsubishi | Galant | GLi 2.0 | | 3 | Mitsubishi | Galant | GL 1.6 | | 4 | Mitsubishi | Galant | V6-24 | | 3 | Mitsubishi | Lancer | 1.6 | | 4 | Mitsubishi | Lancer | 1.3 | | 4 | Mitsubishi | Starion| 2.6 | | 5 | Audi | A4 | 1.8 T | | 6 | Audi | A4 | 2.0 T | | 7 | Audi | A6 | 2.4 | +---+------------+--------+------------+
Oletetaan että taulukon alku on siis tällainen. Käyttäjä avaa Mitsubishin mallilistan. Tässä vaiheessa sivulle pitäisi ilmestyä lista Mitsubishin malleista, jotka tietokannasta löytyy. Eli tässä tapauksessa Galant, Lancer ja Starion. Ongelmana mulla on ollut, että miten saan koodin tulostamaan vain kerran jokaisen mallin, ettei samaa mallia tulostu useampaan kertaan. Lisäksi jokainen noista listatuista malleista pitäisi saada linkiksi, ja linkin kohteena $malli.php.
Mallisivulle mentäessä sitten haettaisiin kaikki rivit, joista vain löytyy malli-sarakkeesta tuo $malli.
En tiedä miten epäselvästi tämä oli kirjoitettu, mutta tuun infoamaan lisää jos kyselystäni ei saanut mitään selvää.
Jos jollakin muuten on vielä intoa neuvoa enemmän, niin mitenköhän saisin vielä laskettua tuon perusteella miten monta mallia kultakin merkiltä tietokannassa on? Em. esimerkissä Mitsun eri malleja siis olisi 3 ja Audin 2.
Kiitos jo nyt!
Tällä kyselyllä saat selville kaikki eri Mitsubishi-mallit:
SELECT DISTINCT malli FROM autot WHERE merkki = 'Mitsubishi'
malli ---------------- Galant Lancer Starion
Näin taas pystyt laskemaan eri merkkien mallien määrät:
SELECT merkki, COUNT(DISTINCT malli) FROM autot GROUP BY merkki
merkki COUNT(DISTINCT malli) --------------------------------------- Audi 2 Mitsubishi 3
PHP:n puolella tietyn merkin mallien listaus näyttää tältä:
$merkki = "Mitsubishi"; $tulos = mysql_query("SELECT DISTINCT malli FROM autot WHERE merkki = '$merkki'"); for ($i = 0; $i < mysql_num_rows($tulos); $i++) { $malli = mysql_result($tulos, $i); echo "<li><a href=\"malli.php?merkki=$merkki&malli=$malli\">$malli</a>"; }
Jos malli kertoo aina auton merkin, merkkiä ei tietenkään tarvitse lähettää sivulle malli.php.
Toimii täydellisesti! En tajunnut tuota DISTINCT:iä aikaisemmin, nyt sitten alkoi valkenemaan. Kiitos ja iso kumarrus, pelastit monen päivän harmituksen multa :)
Vieläpä tuli kysymys mieleen, samaa tietokantaa koskien mutta kysymyksen aihepiiri on ihan eri.
Olisi kätevä, kun tuota mallisivua selatessa ja hiiren linkin päälle vietäessä tulisi samanlainen tooltip-tyylinen esikatselu kuin esim. IRC-galleriassa. Eli joku 200*200px -kokoinen esikatselu, jossa näkyisi pari auton tärkeintä tietoa. Ei tarvisi sivua avata nähdäkseen ko. tiedon.
Tiedän, että tekniikka on toteutettu ilmeisesti xmlhttprequestilla, mutta onko olemassa jotain ihan elävää esimerkkiä, jotta maallikkokin ymmärtää mihin laittaa tietokanta-asetukset (josta tiedot ikkunaan haetaan), mihin ikkunan CSS-asetukset jne? Vai osaako joku kenties tällaisen havainnollistaa?
Joskus olen tarvinnut hieman samantapaista ja kokeilin tuolla tapaa.. Siitä ei kun soveltamaan.
Huom!! Testattu vain firefoxilla, joten ie kaipaa varmaan vähän säätöä
<html> <head> <style type="text/css"> #Sisalla{ position: absolute; background-color:rgb(204,255,255) !important; width: 500; height: 250px; overflow: hidden; font-size: bold; z-index: 999; border-width:1px 2px 2px 1px; border-style:solid; border-color:black; } </style> <script type="text/javascript"> function TuoEsiin(form) { var ikkuna2 = document.getElementById('Sisalla'); // Näiden tilalle, sinun tulee etsiä hiiren kursorin sijainti /* Suosittelen tutustumaan silloin prototypeen, sillä se menee näin http://www.prototypejs.org/api/event/pointerX pointerX(event) Returns the x coordinate of the mouse pointer on the page. pointerY(event) Returns the y coordinate of the mouse pointer on the page. */ ikkuna2.style.left = + 280 + "px"; ikkuna2.style.top = + 100 + "px"; // Tuodaan ikkuna esiin ikkuna2.style.display = "block"; } function Sulje(form) { var ikkuna2 = document.getElementById('Sisalla'); ikkuna2.style.display = "none"; } </script> <title></title> </head> <body> <form name="Esimerkki" method="post"> <b onmouseover="TuoEsiin(this.form);" onmouseout="Sulje(this.form);"> Tuo hiiri minun päälle </b> <div style="display:none;" id="Sisalla"> <font size="4"> Minun sisään sitten vain sql kyselyjä sekä tarpeesi mukaiset toiminnot. onmouseout jne.. </font> </div> </form> </body> </html>
Tai sitten tekee ihan CSS:llä. Googletus hakusanoilla "css tooltip" löysi esimerkiksi seuraavanlaisen toteutuksen (en sen kummemmin perehtynyt): http://trentrichardson.com/examples/csstooltips/
Ovela.. Eipä oo koskaan käynyt mielessä, että sen voisi tehdä noinkin.
Nostanpa tätä vähän ylös. Sovelsin tuon Olgan antaman linkin omiin tarpeisiini, mutta (yllätys yllätys) tuli selainten välisiä ristiriitoja. IE:llä, Firefoxilla ja Safarilla toimii ihan niin kuin pitäisikin, mutta Opera heittää vähän ikävän näköisesti nuo tooltipit.
Osaisiko joku neuvoa miten tuon saa pelaamaan Operalla oikein tai sitten jos se ei ole mahdollista, disabloida koko ominaisuus selaimen ollessa Opera?
Aihe on jo aika vanha, joten et voi enää vastata siihen.