[php][mysql] 20 enquetes per pagina beperking

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals sommigen wel weten ben ik bezig met een mentor enquete: Leerlingen vullen een enquete in over hun mentor. Op dit moment ben ik met een stukje administratie bezig. Een admin moet aangemaakte enquetes kunnen zoeken. Het resultaat moet vervolgens worden weergegeven. Dit gaat goed met slechts enkele enquetes, maar dit wordt een gigantische rotzooi bij meer dan 50 stuks. Dan is het gewoon niet meer te overzien.

Vandaar dat ik er een soort forum van wil maken. Neem bijvoorbeeld www.hardwareforum.nl als voorbeeld. Deze print +/- 30 topics onder elkaar (heb ze niet nageteld :9). De volgende 30 topics komen op de volgende pagina. De pagina's kun je doorlopen door op de overeenkomende cijfers te drukken.

topic 1
topic 2
topic 3
topic 4

Ga naar pagina 1, 2, 3, 4, 5 Volgende

Dit idee wil ik graag toepassen op mijn enquetes. Het probleem is dat ik er niet helemaal uit kom. Ik heb vanmiddag een poging gewaagt maar het resultaat was niet helemaal zoals gewenst. Ik heb een vermoeden dat het probleem ook met veeel minder code kan worden opgelost 8)7 . Zou er iemand een compact stukje voorbeeld code kunnen geven zodat ik er een paar ideeën uit kan halen?

Eén van de grootste problemen waar ik mee vast liep:
De site met de zoekfunctie is: www.darkchaos.nl/test/index.php. Omdat ik dit naar de testdir heb gekopieerd zullen mogelijk niet alle functies werken. Gelieve ook geen rottigheid met deze bestanden uithalen!
De cijfers waren bij mij links: www.darkchaos.nl/test/index.php?page=1. Dit cijfer liet ik naar een onzichtbaar veld kopieren. Zodra ik een zoekfunctie liet uitvoeren werd pagina 1 mooi weergegeven. Maar zodra ik op een volgend cijfer klikte, opende hij de pagina opnieuw en was mijn zoekquery en de resultaten verdwenen :'(. Op zich zeer begrijpelijk. Het probleem is, hoe wordt dit probleem normaal opgelost? Zodra er iemand van deze zoekpagina naar een totaal andere pagina gaat (bijv de pagina om enquetes aan te maken) en later weer terugkeert, wil ik niet dat er nog zoekresultaten van een vorige zoekactie zichtbaar zijn. Hopelijk kan iemand mij vertellen hoe dit probleem normaal wordt opgelost.

bvd,

Deus

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Kijk eens naar het MySQL Statement LIMIT :)
En de techniek heet Paging, met Google moet dan ook wel genoeg te vinden zijn :)

[ Voor 49% gewijzigd door gorgi_19 op 13-02-2005 23:55 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah kijk, dat is nuttig. Eindelijk een goede zoekterm waarop ik kan googlen. Grappig is dat de scriptjes die ik nu zit te lezen allemaal min of meer werken zoals ik de mijne had opgebouwd. Alleen ontbreekt ook hier het lastigeste deel 8)7.
Bij deze scripts staat de mysql query met de limit vast. Dat is bij mij niet het geval. Mijn query wordt pas opgebouwd nadat de gebruiker zijn zoekopdracht heeft gegeven. Ik weet niet hoe ik deze zoekfunctie moet mee slepen naar de volgende page.
-In de url is niet verstandig. Nogal makkelijk te wijzigen.
-In een session lijkt me ook niet optimaal. De zoekopdracht mag niet bewaard blijven als de gebruiker de zoekpagina verlaat. Ik wil niet dat de gebruiker zijn oude zoekresultaten weer ziet als hij opnieuw de zoekpagina opent.
Naja over deze dingen ga ik morgen mijn hoofd wel weer breken.
:Z truste iedereen.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

-In de url is niet verstandig. Nogal makkelijk te wijzigen.
Dus? :? Een gebruiker heeft alleen zichzelf er mee; verder schade aan het systeem wordt toch niet berokkent. :) Lijkt me dat deze optie best kan? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Ik denk dat hij bedoeld dat je de hele query in de url mee moet nemen, wat inderdaad niet verstandig zou zijn :+ Maar dat hoeft ook niet, je moet alleen de zoekterm meenemen en de pagina nummer die opgevraagd wordt.

[ Voor 32% gewijzigd door Glashelder op 14-02-2005 00:47 ]

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 14 februari 2005 @ 00:38:
-In een session lijkt me ook niet optimaal. De zoekopdracht mag niet bewaard blijven als de gebruiker de zoekpagina verlaat. Ik wil niet dat de gebruiker zijn oude zoekresultaten weer ziet als hij opnieuw de zoekpagina opent.
Sessies worden standaard afgebroken nadat de browser gesloten wordt of een bepaalde tijd verstreken is. Wat dat betreft klopt je argument dus niet. :)

Verder kun je, zoals de heren hierboven al zeggen, beter gewoon de zoekterm in de URL opnemen. En waarom ook niet? Elke fatsoenlijke zoekmachine doet datzelfde. Kijk bijvoorbeeld maar eens naar Google. :) Uiteraard moet je, voordat je de zoekterm in een query stopt, wel eerst de zooi escapen, maar daarna is het dan ook gewoon veilig. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
www.bla.bla/pagina.php?page=1

code:
1
2
3
4
5
6
7
$aantalperpagina = 15;

$query = "SELECT
 *
FROM
 bla
LIMIT ".($aantalperpagina * $_REQUEST['page']).", ".$aantalperpagina;


Je moet een tweede query uitvoeren als je pagina nummertjes wilt maken, om te kijken hoeveel het totaal aantal rows is.

Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
ik zat met een probleem wat hier rakelings mee te maken heeft, zie de post [rml][ mysqll] results limiteren en pagen met left joins[/rml]

wat betreft de query meezenden... je kan toch gewoon alle params die de user mag besturen meesturen in de querystring en die vervolgens in de sql-select verwerken? en dan wel voordat je ze in de sql-select propt even valideren / filteren (bijv. van een param "rowsperpage" een (int) maken of ereg_replace("[^ a-z]", "", $zoekterm) op een zoekterm uitvoeren ofzow)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah bedankt voor jullie bijdrage. Hier kan ik een heel eind mee komen. Om makkelijker met dit script te werken probeer ik eerst het zoekscript in een functie te gieten. Ik heb een heel klein simpel vraagje over functies.

Neem de volgende functie:

code:
1
2
3
4
5
function search_tables ($mentor="1",$sorteer,$klas="2", $status="3",$sorteervolgorde)
{
$test= "$mentor,$klas, $status,$sorteer,$sorteervolgorde";
return $test;
}

Uit mijn phpboek heb ik begrepen dat mentor, klas en status respectievelijk de default waardes 1, 2, 3 meekrijgen. Nu wil ik de functie aanroepen maar als parameters wil ik alleen sorteer, status en sorteervolgorde een waarde meegeven. De overige variables moeten hun defaultwaardes aanhouden. Hoe krijg ik dit voor elkaar? Overal wordt uitgelegd hoe je variables in een functie stopt, maar nergens hoe je de defaultwaardes op deze manier kan gebruiken.

$sorteer=1;
$sorteervolgorde=2;
echo (search_tables('',$sorteer,'',5,$sorteervolgorde));
Dit werkt niet. Zo krijgen $mentor en $klas niet hun defaultwaardes. De '' tussen de comma's weglaten mag ook niet. Hoe maak ik dit dan duidelijk?

Acties:
  • 0 Henk 'm!

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
Dat gaat idd niet werken. Zie ook de www.php.net. Voorbeeld 17.8 en 17.9

http://nl3.php.net/manual...nctions.arguments.default

Er zit niks anders op dan de variabelen met default waarden achteraan te zetten.
PHP:
1
2
3
4
5
6
function bla($a,$b,$c=1,$d=2)
{}

bla(1,2);  //$a=1,$b=2,$c=1==default,$d=2==default
bla(1,2,3);  //$a=1,$b=2,$c=3,$d=2==default
bla(1,2,3,4);  //$a=1,$b=2,$c=3,$d=4


Wat jij wil kan zover ik weet niet(op deze manier). Je kan natuurlijk binnen je functie een check doen of de variabelen zinnig zijn en/of een waarde hebben. Dan kan je aan de hand daarvan kijken of je de default waarde wilt gebruiken.

[ Voor 50% gewijzigd door Viva Vince op 14-02-2005 23:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok dan ik het begrijpelijk waarom ik niets kon vinden/niet aan de praat kon krijgen. Ik heb mijn zoekscriptje in een functie ingebouwd. Morgen ga ik verder met het paging principe.

Truste iedereen. :z

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Met mijn functie ben ik er toch nog niet helemaal uit. Onderaan mijn zoekfunctie staat het volgende stukje code:

code:
1
2
3
4
5
6
7
8
9
$i=0;
while($i<$num)
{
    $resultmentor[$i] = mysql_result($result, $i, "mentor");
    $resultklas[$i] = mysql_result($result, $i, "klas");
    $resultdatum[$i] = mysql_result($result, $i, "datum");
    $resultstatus[$i] = mysql_result($result, $i, "status");
    $i++;
}


Nu moet mijn functie op de een of andere manier de array's (die in de functie zelf zijn aangemaakt en buiten de functie nog niet bestaan) $resultmentor, $resultklas, $resultdatum, $resultklas beschikbaar maken voor gebruik buiten deze functie. Het probleem is dat ik niet weet hoe ik deze arrays naar buiten kan krijgen. Een eind buiten de functie wil ik bijvoorbeeld deze code opnemen:
code:
1
2
3
4
5
$i=0;
while($i<sizeof($resultmentor)){
echo "<tr><td>$resultmentor[$i]</td><td>$resultklas[$i]</td><td>$resultdatum[$i]</td><td>$resultstatus[$i]</td></tr>";
$i++;
}


Hoe krijg ik deze arrays tegelijkertijd uit mijn functie?
Pagina: 1