login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Na keuze jaar laden met uitslagen (Opgelost)

Offline Braatje - 06/10/2008 11:30
Avatar van BraatjeMySQL interesse Ik hoor jullie al denken daar heb je hem weer.
Ik heb een pagina met uitslagen, waar alle uitslagen van het huidige jaar worden getoond.
http://www.plaatscode.be/31559

Nu zou ik willen dat je bovenaan kunt kiezen uit welk jaar deze de uitslagen moet tonen.
Mijn datum is opgeslagen als DATE.
Dus ik wil in een lijst de jaartallen uitlezen die in mijn database staan ( niet dat ik ieder jaar de keuze zelf moet gaan aanpassen )
bijv. 2008
2007
2006

En als je daar een keuze maakt dat dan de uitslagen van dat betreffende jaar geladen worden.

Maar ik heb geen idee hoe ik dat moet aanpakken.
Dus ik hoopte dat jullie mij nog wilden helpen?

38 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 06/10/2008 11:38
Avatar van Kr4nKz1n Onbekend Je wilt eerst elk jaar apart pakken.

  1. SELECT YEAR(datum) AS jaar FROM wedstrijden GROUP BY YEAR(datum); // Ik denk dat dit wel kan, weet het niet zeker, werk niet met date


En dan alles van dat jaar pakken
  1. SELECT * FROM wedstrijden WHERE YEAR(datum) = $jaar // Ik denk dat dit wel kan, weet het niet zeker, werk niet met date
Offline Braatje - 06/10/2008 12:48 (laatste wijziging 06/10/2008 12:53)
Avatar van Braatje MySQL interesse Het is me op deze manier gelukt

Alleen het lukt niet om die in een dropdownlist te krijgen ik dacht dat het z moest maar datwerkt niet
  1. <?
  2. $query = "SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ";
  5. $result = mysql_query($query) or die(mysql_error());
  6. while ($row = mysql_fetch_assoc($result))
  7. {
  8. ?>
  9. <select>
  10. <option><? echo $row['jaar'] ?></option>
  11. </select>
  12. <?
  13. }
  14. ?>


Alleen nu wil ik deze in een dropdownlist stoppen en als er een keuze gemaakt is wil ik dat de uitslagen uit dat jaar geladen is.
Maar daar loop ik vast?
Offline Rens - 06/10/2008 13:00
Avatar van Rens Gouden medaille

Crew algemeen
Je zit al in de goeie richting, je maakt echter een klein foutje.
Je maakt telkens een nieuwe select-box aan, je hoeft alleen maar een nieuwe option aan te maken:
  1. <?
  2. $query = "SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ";
  5. $result = mysql_query($query) or die(mysql_error());
  6. ?>
  7. <select name="jaar">
  8. <?PHP
  9. while ($row = mysql_fetch_assoc($result))
  10. {
  11. ?>
  12. <option><? echo $row['jaar'] ?></option>
  13. <?
  14. }
  15. ?>
  16. </select>


En natuurlijk niet vergeten om je select een naam te geven 
Offline Kr4nKz1n - 06/10/2008 13:03
Avatar van Kr4nKz1n Onbekend
  1. <?
  2. $query = Mysql_Query("SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ") or Die(Mysql_Error());
  5. echo '<select name="jaar">';
  6. while ($row = Mysql_Fetch_Assoc($result))
  7. {
  8. echo '<option option="'.$row['jaar'].'">'.$row['jaar'].'</option>';
  9. }
  10. echo '</select>';
  11. ?>


Gewoon je HTML in PHP zetten, veel makkelijker.
Offline Rens - 06/10/2008 13:06
Avatar van Rens Gouden medaille

Crew algemeen
Beetje doelloos om je html te laten parsen door PHP en vervolgens ook nog eens door de browser hè...
Offline Kr4nKz1n - 06/10/2008 13:07 (laatste wijziging 06/10/2008 13:08)
Avatar van Kr4nKz1n Onbekend Ik vind het erg lelijk en onnodig om telkens je php code af te sluiten en te starten.

Edit
Dus met andere woorden jij gebruikt geen echo ?
Offline Rens - 06/10/2008 13:10
Avatar van Rens Gouden medaille

Crew algemeen
Nee, ik gebruik voornamelijk templates.
Dan heb je dit gedoe niet 

En dat jij dat lelijk vind wil niet zeggen dat het beter is.
Het word trager (zal niet veel zijn op dit stuk, maar toch).
Je zou op jou manier eerst alle HTML door een PHP parser moeten halen en vervolgens moet de browser het nog parsen.
Als je geen echo gebruikt doet de PHP parser er niks mee en hoeft dus alleen de browser het te parsen. Op een stukje van 15 regels zal je dit niet merken, maar als je een heel groot script hebt met heel veel echo's ga je het verschil wel merken... 
Offline vinTage - 06/10/2008 13:11
Avatar van vinTage Nieuw lid Ik echo ook zo MIN mogelijk html, niet alleen is dit handiger in je "design" view, het scheelt ook gewoon parsetijd.

Voor een zon dropmenutje maakt het weinig uit, maar er zijn ook van die pappels die complete forms en tesxtvelden echoen...lekker handig, alles backslachen + onleesbare code in je script 
Offline Braatje - 06/10/2008 13:49
Avatar van Braatje MySQL interesse oke dat is dus gelukt.
De volgende stap.
Als ik een jaar selecteer dan moet deze de uitslagen laden van dat betreffende jaar.
Kan dat indezelfde pagina of moet ik dan een andere pagina laten openen?

Het liefst dat deze dan gewoon op dezelfde pagina blijft
Offline Mythix - 06/10/2008 14:04
Avatar van Mythix Nieuw lid Je kan best je select laten redirecten met een javascript iets in deze trend:
<select name="mijnlijst" onchange="window.href='pagina.php?jaar=' + this.value">

dan kan je het geselecteerde jaar uit de url halen
Offline Kr4nKz1n - 06/10/2008 14:11
Avatar van Kr4nKz1n Onbekend Hieronder zet je het scriptje om alles uit dat jaar op te halen met de queries die ik je eerder heb gegeven.
Offline Braatje - 06/10/2008 16:06
Avatar van Braatje MySQL interesse Hoe kan ik deze dan de opdracht geven om dat script uit te voeren om die uitslagen te laden?
  1. <?
  2. $query = "SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ";
  5. $result = mysql_query($query) or die(mysql_error());
  6. ?>
  7. <form>
  8. <select name="jaar" onchange="window.href='uitslagen.php?jaar=' + this.value">
  9. <?PHP
  10. while ($row = mysql_fetch_assoc($result))
  11. {
  12. ?>
  13. <option><? echo $row['jaar'] ?></option>
  14. <?
  15. }
  16. ?>
  17. </select>
  18. </form>


Dit script gebruik ik voor de uitslagen ( moet aangepast worden natuurlijk aan het jaar dat ik oproep?? )
http://www.plaatscode.be/31583/
Offline Kr4nKz1n - 06/10/2008 16:20
Avatar van Kr4nKz1n Onbekend
  1. $_GET['jaar']
Offline Braatje - 06/10/2008 16:24
Avatar van Braatje MySQL interesse Die snap ik niet helemaal?
waar moet ik die $_GET['jaar'] kwijt?
Offline Kr4nKz1n - 06/10/2008 16:35
Avatar van Kr4nKz1n Onbekend Heb jij de code Plaatscode: 31587 gemaakt?

Ja: geen idee hoe dat moet
Nee: In de SELECT query.
Offline Braatje - 06/10/2008 16:40 (laatste wijziging 07/10/2008 09:56)
Avatar van Braatje MySQL interesse Die code heb ik met behulp gemaakt.
Maar zoals ik al zei ik ben niet echt thuis op dit gebied.
en nog steeds snap ik hem niet.

Ik heb het nu zo even gedaan om te kijken of ik het jaartal eruit kan krijgen en op dezelfde pagina kan krijgen, en dat lukt in ieder geval.

  1. <?php
  2. $query = "SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ";
  5. $result = mysql_query($query) or die(mysql_error());
  6. ?>
  7. <form action="" method="post">
  8. <select name="jaar" value="<?= $_GET['jaar'] ?>">
  9. <?PHP
  10. while ($row = mysql_fetch_assoc($result))
  11. {
  12. ?>
  13. <option><? echo $row['jaar'] ?></option>
  14. <?
  15. }
  16. ?>
  17. <input type="submit" name="versturen" value="versturen">
  18. </form>
  19. <hr> <br>
  20. <?php
  21. // vanaf hier is het voor mij alleen maar om het duidelijker te maken voor mezelf
  22.  
  23. if (isset($_POST["jaar"])){
  24.  
  25. echo "". $_POST["jaar"] ." \n<br>";
  26. }
  27.  
  28. ?>


Nu moet ik die jaartal die ik geselecteerd heb in een query laden zodat de juiste uitslagen geladen worden.
Kan ik in bijv. de volgende query een functie oproepen zodat die jaartal geselecteerd word?
  1. $query = "SELECT datum, naam, lengte, start, uitslag FROM wedstrijden WHERE uitslag >0 ORDER BY datum DESC";
Offline Kr4nKz1n - 07/10/2008 09:17
Avatar van Kr4nKz1n Onbekend Je laatste if-statement moet verandert worden van _POST naar _GET
  1. SELECT * FROM wedstrijden WHERE YEAR(datum)=".Mysql_Real_Escape_String($_GET['jaar'])."
Offline Braatje - 07/10/2008 09:59
Avatar van Braatje MySQL interesse Hoe ik het dacht werkt het in ieder geval niet.
http://www.plaatscode.be/31643/
regel 27 is nu geworden
  1. if (isset($_GET["jaar"]))

en daarna wilde ik mijn sql code met de rest plaatsen maar dan geeft deze niks weer
Offline Kr4nKz1n - 07/10/2008 10:08 (laatste wijziging 07/10/2008 10:15)
Avatar van Kr4nKz1n Onbekend Probeer verschillende namen voor de queries te bedenken. Ook namen die bij de queries passen.

  1. $qUsers = Mysql_Query("SELECT name FROM users");
  2. $qMessages = Mysql_Query("SELECT title, message FROM messages WHERE id_user=".$user); //Als je ."" krijgt mag je het weg laten


Edit
Ook spaties zijn een niet erg overbodige luxe 

  1. if($i%2){
  2. $kleur="#FF9999";
  3. }
  4. else{
  5. $kleur="#F8F8F8";
  6. }


Kan korter als
  1. $kleur = If($i % 2) ? '#F99' : '#F8F8F8';


  1. $maandarray=array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');


Maak hem zo
  1. $maandarray=array(1 => 'januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');


Dan kan je dit
  1. $curmonth=$curmonth-1;

Weg halen

Maar dat kon sowieso korter als:
  1. $curmonth -= 1;


  1. <td><CENTER><? echo $row['uitslag'] ?>e</CENTER></td>

Kan als
  1. <td align="center"><? echo $row['uitslag'] ?>e</td>

Alle HTML lowercase.

Dit
  1. $datumarray[]=$datum2[1];

Is goed , maar kan ook als
  1. $datumarray = Array_Push($datum2[1]);


Je mag de _GET weer terug draaien naar _POST.
Ik dacht dat je het scriptje van *naam vergeten* had gebruikt.
Offline Braatje - 07/10/2008 10:16 (laatste wijziging 07/10/2008 10:27)
Avatar van Braatje MySQL interesse Op die manier ben ik is gaan testen alleen dan krijg ik bij de volgende script
  1. <?php
  2. $qJaren = Mysql_Query("SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ");
  5. $result = mysql_query($query) or die(mysql_error());
  6. ?>


De volgende code
Notice: Undefined variable: query in H:\Program Files\xampp\htdocs\marcobrus\uitslagen2.php on line 9
Query was empty

Dit heb ik alleen maar even aangepast of ik het zo ook werkend krijg

EDIT:
  1. <?
  2. }
  3. if($i%2){
  4. $kleur="#FF9999";
  5. }
  6. else{
  7. $kleur="#F8F8F8";
  8. }?>

die krijg ik nog niet aangepast zoals jij het zei de rest wel.
Behalve van die Query
Offline marten - 07/10/2008 10:32
Avatar van marten Beheerder regel vijf roep je de verkeerde variabele aan. Dit is basiskennis debuggen braatje komop hé.
Offline Kr4nKz1n - 07/10/2008 10:34
Avatar van Kr4nKz1n Onbekend je zegt $qJaren en dan gebruik je $query in de mysql_query functie.
Offline Braatje - 07/10/2008 10:46
Avatar van Braatje MySQL interesse Zoiets dan?
  1. <?php
  2. $qJaren = Mysql_Query("SELECT DISTINCT YEAR(datum) AS jaar
  3. FROM wedstrijden
  4. ORDER BY jaar ");
  5. $result = mysql_query($qJaren) or die(mysql_error());
  6. ?>


Alleen dan heb ik weer een foutmelding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #4' at line 1
Offline Kr4nKz1n - 07/10/2008 10:55
Avatar van Kr4nKz1n Onbekend Nu haal je de query 2 keer door mysql_query heen

  1. $qJaren = Mysql_Query("SELECT DISTINCT YEAR(datum) AS jaar
  2. FROM wedstrijden
  3. ORDER BY jaar ");

Dat is genoeg.
Offline Braatje - 07/10/2008 11:04 (laatste wijziging 07/10/2008 11:04)
Avatar van Braatje MySQL interesse Op die manier.
Alleen nu werkt de rest natuurlijk niet goed meer   

Hij laat de jaren nu niet meer zien in de dropdown box.
http://www.plaatscode.be/31645/

Kan het beter aan andere overlaten die er verstand van hebben haha.
Ben er al 2 dagen mee bezig om de uitslagen per jaar te laten selecteren en weergeven 

Offline Kr4nKz1n - 07/10/2008 11:52
Avatar van Kr4nKz1n Onbekend Plaatscode: 31650
Offline Braatje - 07/10/2008 13:10
Avatar van Braatje MySQL interesse bedankt dat je zoveel moeite voor me doet.
Alleen het werkt nog steeds niet.
Als ik een jaar selecteer en klik op versturen dan krijg ik de volgende melding:
Notice: Undefined index: jaar in H:\Program Files\xampp\htdocs\marcobrus\uitslagen2.php on line 32
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Offline TomJansen - 08/10/2008 16:19 (laatste wijziging 08/10/2008 16:21)
Avatar van TomJansen Nieuw lid Ik zie iets staan van:
  1. if (isset($_POST["jaar"]))
  2. {
  3. /*...*/ $_GET['jaar'] /*...*/
  4. }
Nou mag je van mij kiezen: GET of POST.
Ik ben wel blij dat je E_NOTICE aan hebt staan, want anders was het een ramp geweest om die foutjes te vinden!
Offline Kr4nKz1n - 08/10/2008 16:21
Avatar van Kr4nKz1n Onbekend ik zou voor COOKIE gaan.

Sorry, dit duurt te lang
Offline Braatje - 09/10/2008 13:04
Avatar van Braatje MySQL interesse Beetje lang geduurd maar ik heb hier een script.Even helemaal overnieuw gemaakt. En werkend.
http://www.plaatscode.be/31835/
Er zijn nu nog 3 puntjes, en dan ben ik klaar.
-*- Ik had eerst dat er automatisch per maand de maand erboven kwam te staan alleen Alleen dat werkt nu niet echt.
Nu komt er bij iedere uitslag in die maand de naam van de maand erboven te staan.
.Het scriptje staat een stuk bij de query regel 35,36 en 37 en regel 61 t/m 69 Op regel 71,72 staat het stukje waarmee ik die maand oproep

-*-Wat moet ik aanpassen om de jaartallen in die dropdownlist in omgekeerde volgorde te krijgen? code regel 16 t/m 31

-*-En is het mogelijk om aan te geven dat hij automatisch de uitslagen van het huidig jaar laat zien en pas na een keuze van jaartal het andere jaar.

Misschien zien jullie nog wat anders waar julie van zeggen dat kunnen jullie beter zo doen?

Dit is nog het laatste
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.476s