Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: select ja sql-kanta ja navigointilinkit

volume [11.02.2011 09:07:53]

#

miten pitäisi lähestyä seuraavaa ongelmaa:

1) minulla on siis sql-tietokanta, jossa valokuvia ja muodostan siitä selectillä valikoidun selauksen ja näytän sen alla olevalla echo:lla ihan perinteiseen tapaan:

echo "<table class=\"lines\" border=\"1\"><tr>
                                        <th>Nro</th>
                                        <th>Kuva esitt&auml;&auml;</th>
                                        <th>Ajoitus</th>
                                        <th>Luokka</th>
                                        <th>Luokan nimi</th>
                                        <th>Hakusanat</th>
                                        <th>Kuva</th>
                                       </tr>";

             // Luetaan SQL-kyselyn palauttamaa tietoa rivi rivilta
             while($mysql_tiedot = mysql_fetch_array($mysql_haun_tulos)){
             echo "<tr>
                    <td>". $mysql_tiedot["id"]."</td>
                    <td>". $mysql_tiedot["kuvaus"]."</td>
                    <td>". $mysql_tiedot["aika"]."</td>
                    <td>". $mysql_tiedot["status"]."</td>
                    <td>". $mysql_tiedot["statusnimi"]."</td>
                    <td>". $mysql_tiedot["hakusanat"]."</td>
                    <td><a href=\"kuvat/kuvasivu.php?kuva=".$mysql_tiedot["id"]."\">Avaa</a></td>
                   </tr>";}

             echo "</table>";

2) kuvasivulla on sitten koodi, jolla näytän halutun kuvan ja sen tietokantaan talletetut tunnistetiedot. kuvantietojen alla on navigointilinkit seuraavaa ja edelliseen kuvaan.

<a href="?kuva=<?php echo $jemma - 1;?>">Edellinen</a> <a href="?kuva=<?php echo $jemma + 1;?>">Seuraava</a> <a href="...">T&auml;st&auml; p&auml;&auml;sivulle</a>

scriptit toimivat hienosti, jos haen kaiken datan taulusta. nyt ongelma on kuitenkin se, että seuraava ja edellinen linkki selaavat tietysti taulua järjestyksessä välittämättä yhtään siitä, millaisella selectillä siitä on tietoja haettu. eli miten saan navigointilinkit ymmärtämään, että niiden pitää hakea seuraavaa tai edellistä kuvaa select-haun mukaan.

Metabolix [11.02.2011 09:33:50]

#

Tee sama haku, jolla olet hakenut itse kuvan tiedot, mutta hae pelkästään kuvan id ja lisää hakuun ehto "WHERE id > {$nykyinen_id}" seuraavalle kuvalle ja vastaavasti < edelliselle kuvalle. (Joudut siis tallentamaan tiedot hakuehdoista johonkin.) Toinen vaihtoehto on hakea kaikki id:t kerralla, jos niitä ei ole kauheasti.

volume [11.02.2011 09:43:13]

#

olisiko mitenkään järkevää tallettaa selectillä haettu kama temporary tableen ja hakea siellä sitten kylmästi next tai prev id?

Grez [11.02.2011 10:20:10]

#

Itse laittaisin ehkä hakutuloksessa olevat ID:t talteen käyttäjän istuntoon ja selaus tapahtuisi ko. taulukon indeksillä.

Tämä sillä oletuksella, että käytäjällä on istunto. Hyvä puoli olisi että siivoaminen hoituisi samalla vaivalla kuin istunnot muutenkin siivotaan. Tietokannassa temp-taulu täytyisi poistaakin. (Tai jos se poistuu itsestään kantayhteyden katketessa, niin sitä ei ole siellä edes silloin kun tarvittaisiin)

volume [11.02.2011 12:32:31]

#

en haluaisi käyttää istuntoja tai/tai evästeitä, koska ne tunne niitä riittävän hyvin ja sitä kautta en välttämättä osaa ottaa kaikkea huomioon. tässä navigoinnissa on mielestäni ongelma: jos käyttäjiä on monta yhtäaikaa, niin silloin jokaiselle pitäisi tallettaa oma sql-hakulause palvelimelle tai sitten oma temp-table palvelimelle ja milläs talletan jos ei ole istuntoa tms.

jotenkin tulee mieleen, että on varmaan ehkä helpompaa rakentaa scriptit siten, että kannasta haettu taulukko ja sen solusta valittu kuva näkyvät samalla sivulla, jolloin ei tarvitse mitään navigointia, vaan voidaan toimia koko ajan jo haetun taulukon kanssa.

onko tässä hiventäkään itua? jos on niin vikki miten saan kuvasivun aukeamaan samalle sivulle itse taulukon kanssa? onnistuuko sivun jakaminen lohkoihin esim css:n kanssa siten että tämä toteutuisi?

LaNu [11.02.2011 16:46:43]

#

volume kirjoitti:

en haluaisi käyttää istuntoja tai/tai evästeitä, koska ne tunne niitä riittävän hyvin ja sitä kautta en välttämättä osaa ottaa kaikkea huomioon. tässä navigoinnissa on mielestäni ongelma: jos käyttäjiä on monta yhtäaikaa, niin silloin jokaiselle pitäisi tallettaa oma sql-hakulause palvelimelle tai sitten oma temp-table palvelimelle ja milläs talletan jos ei ole istuntoa tms.

Minusta kuulostaa vähän overkill-ratkaisulta, jos yhden linkin eteen pitää sessiot tai peräti tietokantataulu pystyttää :D Yleensä on paljon helpompaa, jos sivusto on tilaton.

lainaus:

jotenkin tulee mieleen, että on varmaan ehkä helpompaa rakentaa scriptit siten, että kannasta haettu taulukko ja sen solusta valittu kuva näkyvät samalla sivulla, jolloin ei tarvitse mitään navigointia, vaan voidaan toimia koko ajan jo haetun taulukon kanssa.

onko tässä hiventäkään itua? jos on niin vikki miten saan kuvasivun aukeamaan samalle sivulle itse taulukon kanssa? onnistuuko sivun jakaminen lohkoihin esim css:n kanssa siten että tämä toteutuisi?

Miten se haku siis alunperin tapahtuu? Se on aika olennainen osa ratkaisua. Miksei noiden ?kuva=id -linkkien perään voi purkaa sen selectin mukaisia ehtoja? Tai jos tarvitaan post-metodia, pistetään linkin tilalle lomake hidden-inputeilla.

peg [12.02.2011 14:54:17]

#

Putkassa on hyvä opas istunnoista https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj7
Tee noin kuin Grez ehdotti.

Vastaus

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

Tietoa sivustosta