Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] view maken in oudere versie (dus niet 5.0.1)

Anoniem
maIRnaairruJ
11 antwoorden
  • Hallo,

    Het onderwerp zeg het eigenlijk al, kan ik een view maken in mysql. Ik weet dat de optie view er nog niet in zit, maar kan het dat op een andere manier. Met behup van een table of een tekstfile. Het maakt me allemaal niet uit.

    [extra info]
    Wil een kalender maken voor een vrienden voetbalteam. Daarin moeten de wedstrijden komen die ik van de knvbsite haal en in een table zet en verjaardagen (dus de data die in m'n spelerstabel staat) en dan nog dingen die iedereen zelf kan toevoegen
    [/extra info]
  • Waarom zou het een view moeten zijn? Is het niet mogelijk om via een query met één (of meerdere) joins de gegevens op te halen?
  • eh via een union zou het kunnen, maar dan kan ik niet sorteren op datum (tenminste niet dat ik weet) en een join gaat ook niet echt omdat er geen relatie tussen de tabellen zit. Of ik moet het verkeerd begrepen hebben hoor.
  • Waarom zou je niet kunnen sorteren op datum? het hangt natuurlijk een beetje van je tabelopbouw af, maar ik stel zoiets voor:

    [b:fb4586bede]agenda[/b:fb4586bede]
    id, item_id, datum_van, datum_tot

    Als je dan alle items tussen een begin- en einddatum wil hebben, zoals bij een kalender dan doe je zoiets:

    [code:1:fb4586bede]
    SELECT *
    FROM agenda
    WHERE (
    (datum_van BETWEEN '$start_date' AND '$end_date')
    OR (datum_tot BETWEEN '$start_date' AND '$end_date')
    OR (datum_van < '$start_date' AND datum_tot > '$end_date')
    )
    ORDER BY datum_van
    [/code:1:fb4586bede]

    met eventueel een join naar de item_id

    niet getest, is meer voor het idee
  • Ja maar hoe kan ik daar dan de geboortedatums van de spelers en de knvbwedstrijden die in een aparte tabel moeten in joinen?
  • het zou eventueel kunnen door een hoop extra OR's waar je kijkt naar de dag en maand van de verjaardag, maar handiger lijkt mij om hier een 2e query voor te maken.
  • Hoe bedoel je een 2e query, dat je 2 kalenders krijgt, of op een andere manier?
  • Je hoeft niet alles in 1 query te doen. Je kunt meerdere queries maken naar de database, de resultaten van die queries bewaren in een array, en dan die array gebruiken om 1 kalender te maken.

    Of je zet de verjaardagen voor de komende 20 jaar in de agenda als agendapunt, dat is wat minder mooi, maar wel makkelijker.
  • Misschien wat domme opmerkingingen…
    Je hebt in 1 tabel de data met die wedstrijden en in een 2e de data van de verjaardagen. Eventueel kan je ook alles in 1 tabel flikkeren, dus heb je alles of in 1 of in 2 tabellen, met als grote gemene deler de datums van alles.
    Als je het in 2 tabellen doe kijk je gewoon in beide tabellen of die datum voorkomt.
    Heb je alles in 1 tabel, laat je gewoon de datum (bijvoorbeeld) 1 maand voorbijrennen en heb je alle data met gegevens van je wedstrijden, geboortedata en toevoegingen in 1 keer op je scherm.

    De datum maak je mmdd als decimal 4,0 en je hebt alles netjes geordend in 1 tabel

    Je print dit op je scherm met bijvoorbeeld een keuze van maand en jaar et voila
  • Opmerkingen zijn natuurlijk nooit dom (nou ja zolang het on subject is dan) en altijd welkom.

    Echter volg ik het nog niet helemaal.

    Ten eerste heb ik het probleem dat het niet in 1 tabel kan omdat ik automatisch de wedstrijden van de knvb site haal en die netjes in een tabel worden gezet. Om hierbij dubbelen te voorkomen en het niet al te lang te laten duren leegt het script de tabel voordat hij de gegevens van de knvb site haalt.

    Daarom moet ik dus voor de 2 of liever 3 tabellen gaan.
    Wat ik begrijp uit het ideee is dat ik een soort loop voor elke dag/maand maak door die tabellen heen en dan kijkt of er wat voorkomt. Als ik dit goed heb, vraag ik me meteen af of dat dan niet heel zwaar(qua tijd) wordt.

    Het idee van de array ga ik nog even mee spelen. Vond die dingen op school altijd een verschrikking, dus ben benieuwd :D
  • Kan iemand mij een beetje in de goede weg helpen met die array's. :lol:

    Ik heb nu het volgende gedaan:
    [code:1:9b88b3b248]
    $qry_verjaardagen = "SELECT SpelerVoornaam, SpelerGebdatum FROM Spelers";
    $dts_verjaardagen = mysql_query($qry_verjaardagen) or die(mysql_error());
    $row_verjaardagen = mysql_fetch_array($dts_verjaardagen);

    $qry_kalender = "SELECT AgendaItem, AgendaDatum FROM Agenda";
    $dts_kalender = mysql_query($qry_kalender) or die(mysql_error());
    $row_kalender = mysql_fetch_array($dts_kalender);

    $new_array = array_merge($row_verjaardagen, $row_kalender);

    $length = count($new_array);

    for($i=0;$i<=$length;$i++)
    {
    echo $new_array[0]." ".$new_array[1]."<br />";
    next($new_array);
    }
    [/code:1:9b88b3b248]

    maar dit geeft alleen het eerste record uit de eerste query 8 keer weer. de eerste query heeft 19 rijen en de 2e 17 rijen. Hoe komt ie op die 8 en waarom loopt ie niet verder.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.