abonnementen ibood.com bol.com Coolblue
pi_141393425
registreer om deze reclame te verbergen
lghnBlb.png
Ik ben bezig met een website waarop statistieken van de forumcrew staan. Van (ex-)crew wordt er een overzicht gemaakt van zijn/haar functies, met daarbij een start- en een einddatum (mits aanwezig). Ook wordt er weergegeven hoeveel dagen iemand crew is (geweest) en is er aan de hand daarvan een ranglijst. Van fora worden er ook overzichten gemaakt. De website is te bereiken op http://fok.zevkiselim.nl/crew/.

Momenteel wordt alles met de hand gedaan. De overzichten, de grafieken, de ranglijst - kortom alles - wordt per geval opgezocht, berekend en gecodeerd. Ik zou dit graag (deels) willen automatiseren en daarbij kan ik jullie hulp wel gebruiken.

C2mD9KB.png
Ik wil met hulp uit dit topic dit project omzetten van handmatig naar dynamisch, met behulp van PHP en MySQL.

Het project staat op GitHub: https://github.com/zarGonnn/FOK-crewgeschiedenis. Hier is altijd de laatste versie van het project te vinden. Ik heb hulp nodig, dus mocht je kunnen helpen: graag!

De dynamische versie is te zien op http://fok.zevkiselim.nl/crew2.0/.

Meer info:
- Readme op GitHub.
- Wiki op GitHub.

[ Bericht 43% gewijzigd door zarGon op 05-07-2014 13:31:14 ]
jouw neus is perfect
voor mijn klit
pi_141393452
Ik update de OP later.
jouw neus is perfect
voor mijn klit
pi_141393782
quote:
14s.gif Op zondag 22 juni 2014 00:13 schreef bondage het volgende:

[..]

Dat kun je natuurlijk ook gewoon meegeven in de hash en afvangen in de handleLocationHash functie.
Volgens mij is de uitdaging nu vooral de visuele weergave.

Neem Bart bijvoorbeeld. In de oude indeling was er alleen 'Forum' en 'FOK!' als onderverdeling.

In de nieuwe zou het zo worden:
- Forum: GAM / MEN / DIG
- Games: Redactie Games
- FOK!: PR

Weergave kan door tonen van meerdere grafieken per subsite. Dan heb je in dit geval dus 3 tabellen, 3 pie charts en 3 timelines, onder elkaar.

Of, tabs. Heb je 3 tabs, met elk 3 grafieken. ZIet er visueel ook beter uit, niet?
jouw neus is perfect
voor mijn klit
pi_141393956
registreer om deze reclame te verbergen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    
var jsonTimelineData;
    $.
ajax({
        
url"content/getchartdata/user-timeline.php",
        
dataType"JSON",
        
asyncfalse,
        
data: {
            
usernum
        
},
        
success: function(callback) {
            
jsonTimelineData callback;
        }
    });
?>

Levert niks op. Is er een reden dat hierbij een functie wordt gebruikt om de gegevens door te sluizen en bij de tabel en taartgrafiek gewoon de responsetext?
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141394369
quote:
0s.gif Op zondag 22 juni 2014 00:29 schreef Nattekat het volgende:

[ code verwijderd ]

Levert niks op. Is er een reden dat hierbij een functie wordt gebruikt om de gegevens door te sluizen en bij de tabel en taartgrafiek gewoon de responsetext?
 Ik heb een half uurtje geleden of zo een commit gedaan.   het goed is heb je de een-na-laatste commit, toch?  Verschil is dat de URL na selectie  ?type=user#user=1 was, en nu ?type=user#id=1 is.

De timeline kreeg ik niet werkend. esv7 heeft dat werkend gekregen. Na zijn fix is deze code erbij gekomen.

esv7, zou je hier een antwoord op kunnen geven?
jouw neus is perfect
voor mijn klit
pi_141394554
quote:
0s.gif Op zondag 22 juni 2014 00:41 schreef zarGon het volgende:

[..]

Ik heb een half uurtje geleden of zo een commit gedaan. het goed is heb je de een-na-laatste commit, toch? Verschil is dat de URL na selectie ?type=user#user=1 was, en nu ?type=user#id=1 is.

De timeline kreeg ik niet werkend. esv7 heeft dat werkend gekregen. Na zijn fix is deze code erbij gekomen.

esv7, zou je hier een antwoord op kunnen geven?
type=user#user=5 zit ik op, dat zou dus kunnen. Ik ben nu alvast aan een fix aan het werken, mocht het nodig zijn upload ik die wel.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141394681
registreer om deze reclame te verbergen
quote:
0s.gif Op zondag 22 juni 2014 00:46 schreef Nattekat het volgende:

[..]

type=user#user=5 zit ik op, dat zou dus kunnen. Ik ben nu alvast aan een fix aan het werken, mocht het nodig zijn upload ik die wel.
:9.

Zou je kunnen updaten naar de laatste commit? Kleine wijzigingen. Voorkomt eventueel gedoe later. :P.
jouw neus is perfect
voor mijn klit
pi_141394795
quote:
0s.gif Op zondag 22 juni 2014 00:50 schreef zarGon het volgende:

[..]

:9.

Zou je kunnen updaten naar de laatste commit? Kleine wijzigingen. Voorkomt eventueel gedoe later. :P.
Ik pas het in github's eigen editor aan om dat te voorkomen, maak je geen zorgen daarover :P
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141394808
quote:
0s.gif Op zondag 22 juni 2014 00:53 schreef Nattekat het volgende:

[..]

Ik pas het in github's eigen editor aan om dat te voorkomen, maak je geen zorgen daarover :P
Okidoki!
jouw neus is perfect
voor mijn klit
pi_141395250
SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Zolang dit niet als array gezien wordt houdt het op :P
Werk voor morgen dan maar.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141403878
user-timeline.php en googlecharts.js gepdated. Wel een beetje zitten kloten met de github branches, mag gerust gefixt worden.
Was een stuk makkelijker geweest als ik gewoon al mijn eigen bestanden kon uploaden, er is iets foutgegaan en ik weet niet wat.

[ Bericht 34% gewijzigd door Nattekat op 22-06-2014 13:23:40 ]
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141404456
quote:
0s.gif Op zondag 22 juni 2014 13:14 schreef Nattekat het volgende:
user-timeline.php en googlecharts.js gepdated. Wel een beetje zitten kloten met de github branches, mag gerust gefixt worden.
Was een stuk makkelijker geweest als ik gewoon al mijn eigen bestanden kon uploaden, er is iets foutgegaan en ik weet niet wat.
Ja, met die branhes heb ik ook zitten kloten toen ik een branch voor esv7 had aangemaakt. Vond 't ook irritant werken.

We kunnen 2 dingen doen:
- jij maakt je eigen branch (heb je al gedaan), en doet al je wijzigingen daarop. De master branch neemt jouw toevoegingen over. Voordeel hiervan is dat je helemaal los kunt gaan binnen je eigen branch.
- jij voegt je verbeteringen gewoon toe aan de master branch. Voordeel is dat verbeteringen sneller doorgevoerd worden zonder gedoe, nadeel is dat je wel moet opletten dat de master niet kaput gaat. In dit geval kun je dus je eigen bestanden ook gewoon toevoegen (let wel op dat je config.php niet meeneemt).

Wat mij betreft voeg je je verbeteringen direct toe op de master branch (en verwijder je die nieuwe branch).

Kun je mij vertellen wat jouw verbetering op de timeline precies inhoudt?
jouw neus is perfect
voor mijn klit
pi_141404491
quote:
0s.gif Op zondag 22 juni 2014 13:33 schreef zarGon het volgende:

[..]

Ja, met die branhes heb ik ook zitten kloten toen ik een branch voor esv7 had aangemaakt. Vond 't ook irritant werken.

We kunnen 2 dingen doen:
- jij maakt je eigen branch (heb je al gedaan), en doet al je wijzigingen daarop. De master branch neemt jouw toevoegingen over. Voordeel hiervan is dat je helemaal los kunt gaan binnen je eigen branch.
- jij voegt je verbeteringen gewoon toe aan de master branch. Voordeel is dat verbeteringen sneller doorgevoerd worden zonder gedoe, nadeel is dat je wel moet opletten dat de master niet kaput gaat. In dit geval kun je dus je eigen bestanden ook gewoon toevoegen (let wel op dat je config.php niet meeneemt).

Wat mij betreft voeg je je verbeteringen direct toe op de master branch (en verwijder je die nieuwe branch).

Kun je mij vertellen wat jouw verbetering op de timeline precies inhoudt?
Eerst verscheen die hele timeline niet, hij zou nu wel moeten verschijnen maar ik heb mijn eigen sql database net kapotgemaakt :@
Zou jij het kunnen testen eventueel? In principe zou het moeten werken, hij deed het ook toen ik het testte op een oudere versie.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141404634
Ik zie het probleem al; ik ben vergeten user naar id te veranderen bij de call in googlecharts.js.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141405300
Jep. Dat had ik in de laatste commit gewijzigd (zoals hierboven gemeld). :P.

Maar... Wat heb je nu toegevoegd en hoe werkt hetgeen wat je hebt toegevoegd? De timeline die er nu is werkt gewoon.

Je bent bezig geweest met de 'tabs' en toen werkte het niet meer. Als ik het goed begrijp wijzig je de timeline om het werkend te krijgen na jouw toevoegingen?
jouw neus is perfect
voor mijn klit
pi_141405563
quote:
0s.gif Op zondag 22 juni 2014 13:55 schreef zarGon het volgende:
Jep. Dat had ik in de laatste commit gewijzigd (zoals hierboven gemeld). :P.

Maar... Wat heb je nu toegevoegd en hoe werkt hetgeen wat je hebt toegevoegd? De timeline die er nu is werkt gewoon.

Je bent bezig geweest met de 'tabs' en toen werkte het niet meer. Als ik het goed begrijp wijzig je de timeline om het werkend te krijgen na jouw toevoegingen?
Die hele timeline verscheen niet, mijn aanpassingen zitten in aparte bestanden, welke ik dus gewoon uit kan zetten. Toen ik de update uploadde was het ook de verkeerde versie.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141405657
quote:
1s.gif Op zondag 22 juni 2014 14:03 schreef Nattekat het volgende:

[..]

Die hele timeline verscheen niet
Ook niet in de versies die je had gedownload? (v0.0.5)

Heel raar, ik test die 'grondig'. Hm.

quote:
, mijn aanpassingen zitten in aparte bestanden, welke ik dus gewoon uit kan zetten. Toen ik de update uploadde was het ook de verkeerde versie.
In de branche die je had aangemaakt, toch? Dat maakt dan niet zoveel uit, hehe.
jouw neus is perfect
voor mijn klit
pi_141405767
quote:
0s.gif Op zondag 22 juni 2014 14:05 schreef zarGon het volgende:

[..]

Ook niet in de versies die je had gedownload? (v0.0.5)

Heel raar, ik test die 'grondig'. Hm.

[..]

In de branche die je had aangemaakt, toch? Dat maakt dan niet zoveel uit, hehe.
Ik kan nu niet meer zien welke versie ik had, de bestanden stonden al in aparte mappen.

Ik weet zeker dat de enige update na mij die van user => id was.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141405848
quote:
1s.gif Op zondag 22 juni 2014 14:09 schreef Nattekat het volgende:

[..]

Ik kan nu niet meer zien welke versie ik had, de bestanden stonden al in aparte mappen.

Ik weet zeker dat de enige update na mij die van user => id was.
Het wordt een beetje rommelig en onduidelijk voor mij...

Kun je even iets proberen? https://github.com/zarGonnn/FOK-crewgeschiedenis/releases. Download v0.0.5 eens. Werkt timeline wel of niet bij jou?
jouw neus is perfect
voor mijn klit
pi_141405986
quote:
0s.gif Op zondag 22 juni 2014 14:11 schreef zarGon het volgende:

[..]

Het wordt een beetje rommelig en onduidelijk voor mij...

Kun je even iets proberen? https://github.com/zarGonnn/FOK-crewgeschiedenis/releases. Download v0.0.5 eens. Werkt timeline wel of niet bij jou?
Kan dat nu even niet doen. Wel enorm vaag als het wel werkt voor jou. Over een uurtje of 2 kan ik het testen.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141406035
quote:
1s.gif Op zondag 22 juni 2014 14:15 schreef Nattekat het volgende:

[..]

Kan dat nu even niet doen. Wel enorm vaag als het wel werkt voor jou. Over een uurtje of 2 kan ik het testen.
Ik moet wel zeggen: ik test het door op de website te plaatsen. Jij test lokaal. Zou het daaraan kunnen liggen?
jouw neus is perfect
voor mijn klit
pi_141406132
quote:
0s.gif Op zondag 22 juni 2014 14:17 schreef zarGon het volgende:

[..]

Ik moet wel zeggen: ik test het door op de website te plaatsen. Jij test lokaal. Zou het daaraan kunnen liggen?
Ik denk het niet, mijn browser gaf de foutmelding. Het komt dus echt van de code af. Dan ligt de oorzaak bij mijn php versie of apache.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141406465
quote:
1s.gif Op zondag 22 juni 2014 14:20 schreef Nattekat het volgende:

[..]

Ik denk het niet, mijn browser gaf de foutmelding. Het komt dus echt van de code af. Dan ligt de oorzaak bij mijn php versie of apache.
Mijn PHP-versie is 5.3.27 en de Apache-versie kan ik niet achterhalen... Hmpf.
jouw neus is perfect
voor mijn klit
pi_141406550
quote:
0s.gif Op zondag 22 juni 2014 14:31 schreef zarGon het volgende:

[..]

Mijn PHP-versie is 5.3.27 en de Apache-versie kan ik niet achterhalen... Hmpf.
PHP 5.4 en Apache 2.2 hier...
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141409403
quote:
0s.gif Op zondag 22 juni 2014 14:11 schreef zarGon het volgende:

[..]

Het wordt een beetje rommelig en onduidelijk voor mij...

Kun je even iets proberen? https://github.com/zarGonnn/FOK-crewgeschiedenis/releases. Download v0.0.5 eens. Werkt timeline wel of niet bij jou?
Die doet het wel ja. Erg raar dit, de versie die ik heb heeft ook al die extra mappen. Ik kan iig verder met de overzichten per forum :)
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141447376
quote:
11s.gif Op zaterdag 21 juni 2014 23:47 schreef bondage het volgende:

[..]

Die zou je in de selectUser functie naar een div kunnen schrijven, die is daar immers bekend.
Zou je me hier iets meer over kunnen vertellen? :@.

Ik heb zelf wat geprobeerd (o.a. http://stackoverflow.com/(...)ite-to-a-div-element), maar dat gaf niet het gewenste resultaat.
jouw neus is perfect
voor mijn klit
pi_141448002
quote:
0s.gif Op maandag 23 juni 2014 13:29 schreef zarGon het volgende:

[..]

Zou je me hier iets meer over kunnen vertellen? :@.

Ik heb zelf wat geprobeerd (o.a. http://stackoverflow.com/(...)ite-to-a-div-element), maar dat gaf niet het gewenste resultaat.
Gewoon via jQuery: $("#id_van_je_divje").html(var_met_userid);
pi_141448063
quote:
14s.gif Op maandag 23 juni 2014 13:45 schreef bondage het volgende:

[..]

Gewoon via jQuery: $("#id_van_je_divje").html(var_met_userid);
Waar moet dit geplaatst worden?

Op de user-pagina of op de index (samen bij de rest van de js)?
jouw neus is perfect
voor mijn klit
pi_141453184
quote:
1s.gif Op maandag 23 juni 2014 13:46 schreef zarGon het volgende:

[..]

Waar moet dit geplaatst worden?

Op de user-pagina of op de index (samen bij de rest van de js)?
In de functie selectUser, daar is het ID namelijk bekend.
pi_141455043
quote:
11s.gif Op maandag 23 juni 2014 16:06 schreef bondage het volgende:

[..]

In de functie selectUser, daar is het ID namelijk bekend.
http://fok.zevkiselim.nl/crew2.0/?type=user#id=151187.

*O*.

Nu de rest er nog omheen bouwen.
jouw neus is perfect
voor mijn klit
pi_141483314
quote:
11s.gif Op maandag 23 juni 2014 16:06 schreef bondage het volgende:

[..]

In de functie selectUser, daar is het ID namelijk bekend.
1
2
3
4
5
6
function selectUser(user_id) {
    $("#userselect").hide();
    $("#userinfo").show();
    $("#userid").show(); $("#userid").html(user_id);
    drawItems(user_id);
}
Bedoeling van dit stukje:
- regel 2 verbergt de lijst van users
- regel 3 toont de userinfo (gebruikersnaam/userid/registratiedatum etc.)
- regel 4 toont de userid specifiek voor de SQL-query.
- regel 5 tekent de grafieken.

Gaat nu vooral om regel 3 en 4.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<div class="page-header" id="userinfo" style="display:none;">
        <?php 
        
try {
            require(
'config.php'); 
            
            
$UserID '<span id="userid"></span>';
            echo 
$UserID;
            
$con= new PDO"mysql:host=" $settings["dbserver"] . ";dbname=" $settings["dbname"], $settings["dbuser"], $settings["dbpass"]);  
            
$sql=    "SELECT
                          PK_Gebruiker
                        , Gebruikersnaam
                        , UserID
                    FROM Gebruiker
                    WHERE UserID = " 
$UserID " "
                    
            
$stmt=$con->prepare($sql);
            
$stmt->execute(); 
    
            while(
$row $stmt->fetch(PDO::FETCH_ASSOC)) {  
                echo 
'<h1>LOL</h1>';
                
//echo $row['Gebruikersnaam'];
            
}
        } 
        
        
// Errorafhandeling
        
catch(PDOException $e) {
            echo 
'<pre>';
            echo 
'Regel: '.$e->getLine(). '<br />';
            echo 
'Bestand: '.$e->getFile(). '<br />'
            echo 
'Foutmelding: '.$e->getMessage();
            echo 
'</pre>'
        }                
        
?>
    </div>
Ik weet dat de code veel beter kan.

- $UserID is de UserID van geselecteerde user (regel 4 van de js-code).
- $UserID werkt als ik een echo doe, ik zie dan de geselecteerde UserID.
- $sql zou de Gebruikersnaam moeten ophalen op basis van $UserID.
- Voor elke record (in dit geval maar eentje) zou er 'LOL' zichtbaar moeten zijn.
- De query werkt wel als ik handmatig een UserID invul en geen $UserID gebruik.

Dit werkt helaas niet. Jij/iemand een idee waarom niet?

Ik wil in de while() de userinfo tonen.

Hoe kan dit makkelijker/beter?
jouw neus is perfect
voor mijn klit
pi_141483411
quote:
0s.gif Op dinsdag 24 juni 2014 11:25 schreef zarGon het volgende:
$UserID = '<span id="userid"></span>';
Gequote stukje gaat nooit werken natuurlijk, je geeft nu een string zonder betekenis mee aan je query. Is het de bedoeling dat de naam van de user wordt opgehaald adhv het ID die geselecteerd is?
pi_141483570
quote:
11s.gif Op dinsdag 24 juni 2014 11:28 schreef bondage het volgende:

[..]

Gequote stukje gaat nooit werken natuurlijk, je geeft nu een string zonder betekenis mee aan je query. Is het de bedoeling dat de naam van de user wordt opgehaald adhv het ID die geselecteerd is?
Bedoeling is dat ik data (van de user) uit de database trek. Ik moet daarvoor echter weten welke user er geselecteerd is. Dat wordt nu met $("#userid").html(user_id); gedaan.

Als ik eenmaal een UserID heb, kan ik de data uit de database tonen.

Omdat de UserID (#id=xxx) nu met JavaScript werkt, kan ik geen PHP gebruiken. Of nou ja, dat is me niet gelukt.
jouw neus is perfect
voor mijn klit
pi_141483609
quote:
11s.gif Op dinsdag 24 juni 2014 11:28 schreef bondage het volgende:

[..]

Gequote stukje gaat nooit werken natuurlijk, je geeft nu een string zonder betekenis mee aan je query. Is het de bedoeling dat de naam van de user wordt opgehaald adhv het ID die geselecteerd is?
Dat gequote stukje werkt overigens wel in een echo. Ik dacht dat het daarom ook zou werken in de query.
jouw neus is perfect
voor mijn klit
pi_141483760
quote:
0s.gif Op dinsdag 24 juni 2014 11:33 schreef zarGon het volgende:

[..]

Bedoeling is dat ik data (van de user) uit de database trek. Ik moet daarvoor echter weten welke user er geselecteerd is. Dat wordt nu met $("#userid").html(user_id); gedaan.

Als ik eenmaal een UserID heb, kan ik de data uit de database tonen.

Omdat de UserID (#id=xxx) nu met JavaScript werkt, kan ik geen PHP gebruiken. Of nou ja, dat is me niet gelukt.
Elementen die dynamisch worden gevuld kun je niet doorgeven. Je zal hiervoor een losse ajax request moeten doen of het geselecteerde user-id opslaan in de sessie en die hergebruiken in je query.
pi_141483971
quote:
14s.gif Op dinsdag 24 juni 2014 11:40 schreef bondage het volgende:

[..]

Elementen die dynamisch worden gevuld kun je niet doorgeven. Je zal hiervoor een losse ajax request moeten doen of het geselecteerde user-id opslaan in de sessie en die hergebruiken in je query.
Fuck. :'). Dat gaat mij in ieder geval niet lukken. :'). Geen idee hoe of wat.

Zou jou dit willen/kunnen doen? Mits je kan/wil en tijd en zo hebt.
jouw neus is perfect
voor mijn klit
pi_141484179
quote:
0s.gif Op dinsdag 24 juni 2014 11:49 schreef zarGon het volgende:

[..]

Fuck. :'). Dat gaat mij in ieder geval niet lukken. :'). Geen idee hoe of wat.

Zou jou dit willen/kunnen doen? Mits je kan/wil en tijd en zo hebt.
Wil je in de toekomst nog meer waarden dynamisch ophalen of is de naam van de user het enige? Het probleem is namelijk dat je op den duur met gigantisch veel losse requests komt te zitten, lijkt me niet de bedoeling en maakt de boel onoverzichtelijk. Wat je zou kunnen doen is een JS functie schrijven die alle data in n request ophaalt, dus zowel de gegevens voor de grafieken als de extra info betreft de geselecteerde gebruiker. Je kunt deze gegevens allemaal teruggeven als JSON data, dus de userdata en grafiekdata in een object en dan opsplitsen in de JS functie die de aanroep doet.

Ik heb er op dit moment helaas geen tijd voor.
pi_141484228
quote:
11s.gif Op dinsdag 24 juni 2014 11:56 schreef bondage het volgende:

[..]

Wil je in de toekomst nog meer waarden dynamisch ophalen of is de naam van de user het enige? Het probleem is namelijk dat je op den duur met gigantisch veel losse requests komt te zitten, lijkt me niet de bedoeling en maakt de boel onoverzichtelijk. Wat je zou kunnen doen is een JS functie schrijven die alle data in n request ophaalt, dus zowel de gegevens voor de grafieken als de extra info betreft de geselecteerde gebruiker. Je kunt deze gegevens allemaal teruggeven als JSON data, dus de userdata en grafiekdata in een object en dan opsplitsen in de JS functie die de aanroep doet.
Voor de user-pagina is bijna alles rond, alleen de genoemde gegevens hierboven missen. En dat kan allemaal geregeld worden met alleen de UserID.

quote:
Ik heb er op dit moment helaas geen tijd voor.
Helaas. ;(. Bedankt voor je uitleg nog in ieder geval, al kan ik er weinig mee.

*;
jouw neus is perfect
voor mijn klit
pi_141484293
quote:
0s.gif Op dinsdag 24 juni 2014 11:58 schreef zarGon het volgende:

[..]

Voor de user-pagina is bijna alles rond, alleen de genoemde gegevens hierboven missen. En dat kan allemaal geregeld worden met alleen de UserID.

[..]

Helaas. ;(. Bedankt voor je uitleg nog in ieder geval, al kan ik er weinig mee.

*;
Ik ga vanavond ff voor je kijken, ben nu aan het werk. Het is namelijk niet zo heel erg ingewikkeld.
pi_141484303
quote:
14s.gif Op dinsdag 24 juni 2014 12:00 schreef bondage het volgende:

[..]

Ik ga vanavond ff voor je kijken, ben nu aan het werk. Het is namelijk niet zo heel erg ingewikkeld.
O+. Heel erg bedankt!
jouw neus is perfect
voor mijn klit
pi_141575515
Ben bezig met de 'admin'-pagina's, warmee je gemakkelijk data kunt toevoegen aan de database.

http://fok.zevkiselim.nl/crew2.0/admin/view.php.

Ik zou het volgende willen weten: hoe kan ik in plaats van een textbox een dropdownlijstje weergeven? In die dropdown staan dan de mogelijke waarden die al voorkomen in de database.

Ik heb dat nodig voor het gedeelte 'rol'. Ik wil bij het toevoegen van een 'rol' ook meteen een subsite kunnen kiezen. Dat je bijvoorbeeld 'DIG' toevoegt en daarbij uit een dropdown 'Forum' als subsite kan kiezen.

Met textbox: http://fok.zevkiselim.nl/crew2.0/admin/edit.php?rol.
(Werkt nu sowieso niet, de SQL-query klopt niet.)

--> Ik wil dus dat 'Subsitenaam' geen textbox is, maar een dropdownlijst.

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?php

elseif (isset($_GET['rol']))
{
    
// creates the new/edit record form
    // since this form is used multiple times in this file, I have made it a function that is easily reusable
    
function renderForm($Subsitenaam ''$Rolafkorting ''$Rolomschrijving ''$Foutmelding ''$PK_Rol '')
{
?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>    
            <title>    <?php if ($PK_Rol != '') { echo "Edit Record"; } else { echo "New Record"; } ?>    </title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        </head>
        <body>
            <h1><?php if ($PK_Rol != '') { echo "Edit Record"; } else { echo "New Record"; } ?></h1>
            <?php
            
if ($Foutmelding != '') {
            echo 
"<div style='padding:4px; border:1px solid red; color:red'>" $Foutmelding "</div>";
            } 
            
?>
            <form action="" method="post">
                <div>
                    <?php
                    
if ($PK_Rol != '') { ?>
                    <input type="hidden" name="PK_Rol" value="<?php echo $PK_Rol?>" />
                    <p>PK_Rol: <?php echo $PK_Rol?></p>
                    <?php }    ?>
                
                    <strong>Subsitenaam: *</strong> <input type="text" name="Subsitenaam" value="<?php echo $Subsitenaam?>"/><br/>
                    <strong>Rolafkorting: *</strong> <input type="text" name="Rolafkorting" value="<?php echo $Rolafkorting?>"/><br/>
                    <strong>Rolomschrijving: *</strong> <input type="text" name="Rolomschrijving" value="<?php echo $Rolomschrijving?>"/><br/>
                    <p>* required</p>
                    <input type="submit" name="submit" value="Submit" />
                </div>
            </form>
        </body>
    </html>
    
<?php }
    
/* EDIT RECORD */
    
    // if the 'PK_Rol' variable is set in the URL, we know that we need to edit a record
    
if (isset($_GET['PK_Rol']))
    {
        
// if the form's submit button is clicked, we need to process the form
        
if (isset($_POST['submit']))
        {
            
// make sure the 'PK_Rol' in the URL is valid
            
if (is_numeric($_POST['PK_Rol']))
            {
                
// get variables from the URL/form
                
$PK_Rol $_POST['PK_Rol'];
                
$Subsitenaam htmlentities($_POST['Subsitenaam'], ENT_QUOTES);
                
$Rolafkorting htmlentities($_POST['Rolafkorting'], ENT_QUOTES);
                
$Rolomschrijving htmlentities($_POST['Rolomschrijving'], ENT_QUOTES);
                    
                
// check that firstname and lastname are both not empty
                
if ($Subsitenaam == '' || $Rolafkorting == '' || $Rolomschrijving == '')
                {
                    
// if they are empty, show an error message and display the form
                    
$Foutmelding 'ERROR: Please fill in all required fields!';
                    
renderForm($Subsitenaam$Rolafkorting$Rolomschrijving$Foutmelding$PK_Rol);
                }
                else
                {
                    
// if everything is fine, update the record in the database          //!!!!!!!!!!!!!!!
                    
if ($stmt $mysqli->prepare("UPDATE Rol SET Naam = ? WHERE PK_Rol=?"))
                    {
                        
$stmt->bind_param("sssi"$Subsitenaam$Rolafkorting$Rolomschrijving$PK_Rol);
                        
$stmt->execute();
                        
$stmt->close();
                    }
                    
// show an error message if the query has an error
                    
else
                    {
                        echo 
"ERROR: could not prepare SQL statement.";
                    }
                    
                    
// redirect the user once the form is updated
                    
header("Location: view.php?rol");
                }
            }
            
// if the 'PK_Rol' variable is not valid, show an error message
            
else
            {
                echo 
"Error!";
            }
        }
        
// if the form hasn't been submitted yet, get the info from the database and show the form
        
else
        {
            
// make sure the 'PK_Rol' value is valid
            
if (is_numeric($_GET['PK_Rol']) && $_GET['PK_Rol'] > 0)
            {
                
// get 'PK_Rol' from URL
                
$PK_Rol $_GET['PK_Rol'];
                    
                
// get the record from the database
                
if($stmt $mysqli->prepare("SELECT * FROM Subsite WHERE PK_Rol=?")) //!!!!!!!!!
                
{
                    
$stmt->bind_param("i"$PK_Rol);
                    
$stmt->execute();
                    
                    
$stmt->bind_result($PK_Rol$Subsitenaam$Rolafkorting$Rolomschrijving);
                    
$stmt->fetch();
                        
                    
// show the form
                    
renderForm($Subsitenaam$Rolafkorting$RolomschrijvingNULL$PK_Rol);
                    
                    
$stmt->close();
                }
                
// show an error if the query has an error
                
else
                {
                    echo 
"Error: could not prepare SQL statement";
                }
            }
            
// if the 'PK_Rol' value is not valid, redirect the user back to the view.php page
            
else
            {
                
header("Location: view.php?rol");
            }
        }
    }
    
    
/* NEW RECORD */
    // if the 'PK_Rol' variable is not set in the URL, we must be creating a new record
    
else
    {
        
// if the form's submit button is clicked, we need to process the form
        
if (isset($_POST['submit']))
        {
            
// get the form data
            
$Subsitenaam htmlentities($_POST['Subsitenaam'], ENT_QUOTES);
            
$Rolafkorting htmlentities($_POST['Rolafkorting'], ENT_QUOTES);
            
$Rolomschrijving htmlentities($_POST['Rolomschrijving'], ENT_QUOTES);
            
            
// check that firstname and lastname are both not empty
            
if ($Subsitenaam == '' || $Rolafkorting == '' || $Rolomschrijving == '')
            {
                
// if they are empty, show an error message and display the form
                
$Foutmelding 'ERROR: Please fill in all required fields!';
                
renderForm($Subsitenaam$Rolafkorting$Rolomschrijving$Foutmelding);
            }
            else
            {
                
// insert the new record into the database
                
if ($stmt $mysqli->prepare("INSERT Rol (Naam) VALUES (?)")) //! !!!!!!!!!!!!
                
{
                    
$stmt->bind_param("sss"$Subsitenaam$Rolafkorting$Rolomschrijving);
                    
$stmt->execute();
                    
$stmt->close();
                }
                
// show an error if the query has an error
                
else
                {
                    echo 
"ERROR: Could not prepare SQL statement.";
                }
                    
                
// redirec the user
                
header("Location: view.php?rol");
            }
        }
        
// if the form hasn't been submitted yet, show the form
        
else
        {
            
renderForm();
        }
    }
        
    
// close the mysqli connection
    
$mysqli->close();
}
?>
jouw neus is perfect
voor mijn klit
pi_141576427
quote:
0s.gif Op donderdag 26 juni 2014 15:04 schreef zarGon het volgende:
Ben bezig met de 'admin'-pagina's, warmee je gemakkelijk data kunt toevoegen aan de database.

http://fok.zevkiselim.nl/crew2.0/admin/view.php.

Ik zou het volgende willen weten: hoe kan ik in plaats van een textbox een dropdownlijstje weergeven? In die dropdown staan dan de mogelijke waarden die al voorkomen in de database.

Ik heb dat nodig voor het gedeelte 'rol'. Ik wil bij het toevoegen van een 'rol' ook meteen een subsite kunnen kiezen. Dat je bijvoorbeeld 'DIG' toevoegt en daarbij uit een dropdown 'Forum' als subsite kan kiezen.

Met textbox: http://fok.zevkiselim.nl/crew2.0/admin/edit.php?rol.
(Werkt nu sowieso niet, de SQL-query klopt niet.)

--> Ik wil dus dat 'Subsitenaam' geen textbox is, maar een dropdownlijst.

Code:
[ code verwijderd ]

1
2
3
4
5
6
<?php
<select>
  <
option value="DIG">DIG</option>
  <
option value="GC">GC</option>
</
select>
?>

Wil je zoiets hebben?

Met een array die uit de SQL query rolt kan je een for each opstellen voor elke subsite waarbij je bij elke subsite een nieuwe option toevoegt.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141576581
quote:
0s.gif Op donderdag 26 juni 2014 15:30 schreef Nattekat het volgende:

[..]
[ code verwijderd ]

Wil je zoiets hebben?
Jep! In plaats van handmatig 'DIG' of 'GC' invullen, wil ik het kunnen kiezen. Makkelijker, en niet foutgevoelig.
quote:
Met een array die uit de SQL query rolt kan je een for each opstellen voor elke subsite waarbij je bij elke subsite een nieuwe option toevoegt.
Dat wordt een while() zoals bij de grafieken?

Hm...
jouw neus is perfect
voor mijn klit
pi_141576724
quote:
0s.gif Op donderdag 26 juni 2014 15:34 schreef zarGon het volgende:
Dat wordt een while() zoals bij de grafieken?

Hm...
Ik zou persoonlijk eerst bestaande code kopieren (die code die alle gegevens voor een piechart in een array gooit) en vervolgens die array gebruiken om het te vullen. Scheelt werk en is iets overzichtelijker.
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141576794
quote:
0s.gif Op donderdag 26 juni 2014 15:37 schreef Nattekat het volgende:

[..]

Ik zou persoonlijk eerst bestaande code kopieren (die code die alle gegevens voor een piechart in een array gooit) en vervolgens die array gebruiken om het te vullen. Scheelt werk en is iets overzichtelijker.
De grafieken tonen geen usergegevens, maar subsite/rol/activiteit.

Ik zal er vanavond eens naar kijken.
jouw neus is perfect
voor mijn klit
pi_141576859
quote:
0s.gif Op donderdag 26 juni 2014 15:39 schreef zarGon het volgende:

[..]

De grafieken tonen geen usergegevens, maar subsite/rol/activiteit.

Ik zal er vanavond eens naar kijken.
Dat snap ik, maar die code kan je als uitgangspunt nemen ;)
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_141592620
quote:
0s.gif Op dinsdag 24 juni 2014 12:01 schreef zarGon het volgende:

[..]

O+. Heel erg bedankt!
Ben er helaas nog niet aan toegekomen, te druk de laatste paar dagen. Zal morgen of in het weekend even iets proberen te fixen.
pi_141600422
quote:
14s.gif Op donderdag 26 juni 2014 21:32 schreef bondage het volgende:

[..]

Ben er helaas nog niet aan toegekomen, te druk de laatste paar dagen. Zal morgen of in het weekend even iets proberen te fixen.
:).

Ik richt me op de andere delen. Komt wel goed.
jouw neus is perfect
voor mijn klit
pi_141616986
Rol:
- PK_Rol
- Afkorting
- Omschrijving
- FK_Subsite

Subsite:
- PK_Subsite
- Naam

1
2
3
4
SELECT *
FROM Rol R
LEFT JOIN Subsite S
    ON R.FK_Subsite = S.PK_Subsite

Huidige waarden:
- Rol.PK_Rol = 1
- Rol.Afkorting = 'BAG'
- Rol.Omschrijving = 'BAGGER'
- Rol.FK_Subsite = 1

- Subsite.PK_Subsite = 1
- Subsite.Naam = Forum
- Subsite.PK_Subsite = 2
- Subsite.Naam = Frontpage

Ergo: het forum heeft een BAG-forum.

----

Ik wil dat updaten...
Rol.Afkorting: 'BAG' -> 'GAB'
Rol.Omschrijving: 'BAGGER' -> 'GABBER'
Subsite.Naam = 'Forum' -> 'Frontpage'.

Ik wil alleen de tabel Rol updaten, dus met Subsite.Naam zou de juiste Subsite.PK_Subsite opgezocht moeten worden. Rol.FK_Subsite zou deze nieuwe waarde moeten krijgen.

Dit zouden dus de nieuwe waarden moeten zijn:
- Rol.PK_Rol = 1
- Rol.Afkorting = 'GAB'
- Rol.Omschrijving = 'GABBER'
- Rol.FK_Subsite = 2

Wat is de juiste SQL-updatequery hiervan? Of nou ja, kan dat met 1 query?

[ Bericht 0% gewijzigd door zarGon op 27-06-2014 14:50:03 ]
jouw neus is perfect
voor mijn klit
pi_141627181
Ik heb nog even zitten rondkijken op de kwetsbaarheid van jouw server, het lijkt vanaf mijn oogpunt dat de sql-tabel read-only is, dat zit dus wel goed. Echter is jouw server kwetsbaar voor SQL-injections. Je kan het zelf uitproberen door naar http://fok.zevkiselim.nl/crew2.0/?type=user#id=1 OR 1=1 te gaan, de grafieken zullen elke rij uit de tabel tonen.

Ik heb nog geprobeerd om gegevens in die tabel te krijgen maar dat is dus niet gelukt. Toch is het een goed idee om de tabel 'gebruikers' te controleren op mijn fratsen :P

Je kan dit oplossen door in user-piechart en user-table in de sql code ". $id ." te veranderen naar "?" (zonder aanhalingstekens) en dan deze uit te voeren met $stmt->execute($id)

Hele code voor de volledigheid:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    $sql 
=    "SELECT 
                  G.Gebruikersnaam
                , R.Afkorting Rolafkorting
                , SUM(DATEDIFF(IFNULL(A.Einddatum,CURDATE()),A.Startdatum)+1) Duur
            FROM Activiteit A
            LEFT JOIN Gebruiker G
                ON A.FK_Gebruiker = G.PK_Gebruiker
            LEFT JOIN Rol R
                ON A.FK_ROL = R.PK_ROL
            LEFT JOIN Subsite S
                ON R.FK_Subsite = S.PK_Subsite
            WHERE G.UserID = ?
            GROUP BY G.Gebruikersnaam, R.Afkorting
            ORDER BY A.Startdatum ASC, IFNULL(A.Einddatum,CURDATE()) ASC"
;

    
$stmt=$con->prepare($sql); 
    
$stmt->execute($id); 
?>
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
abonnementen ibood.com bol.com Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')