Volgens mij is de uitdaging nu vooral de visuele weergave.quote: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.
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", async: false, data: { user: num }, success: function(callback) { jsonTimelineData = callback; } }); ?> |
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.quote: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?
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.quote: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?
quote: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.
Ik pas het in github's eigen editor aan om dat te voorkomen, maak je geen zorgen daaroverquote:Op zondag 22 juni 2014 00:50 schreef zarGon het volgende:
[..].
Zou je kunnen updaten naar de laatste commit? Kleine wijzigingen. Voorkomt eventueel gedoe later..
Okidoki!quote: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
SPOILEROm 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
Werk voor morgen dan maar.100.000 katjes
Fuck the EBU!
Ja, met die branhes heb ik ook zitten kloten toen ik een branch voor esv7 had aangemaakt. Vond 't ook irritant werken.quote:Op zondag 22 juni 2014 13:14 schreef Nattekat het volgende:
user-timeline.php en googlecharts.js geüpdated. 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.
Eerst verscheen die hele timeline niet, hij zou nu wel moeten verschijnen maar ik heb mijn eigen sql database net kapotgemaaktquote: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?
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.quote:Op zondag 22 juni 2014 13:55 schreef zarGon het volgende:
Jep. Dat had ik in de laatste commit gewijzigd (zoals hierboven gemeld)..
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?
Ook niet in de versies die je had gedownload? (v0.0.5)quote:
In de branche die je had aangemaakt, toch? Dat maakt dan niet zoveel uit, hehe.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.
Ik kan nu niet meer zien welke versie ik had, de bestanden stonden al in aparte mappen.quote: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.
Het wordt een beetje rommelig en onduidelijk voor mij...quote: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.
Kan dat nu even niet doen. Wel enorm vaag als het wel werkt voor jou. Over een uurtje of 2 kan ik het testen.quote: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?
Ik moet wel zeggen: ik test het door op de website te plaatsen. Jij test lokaal. Zou het daaraan kunnen liggen?quote: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 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.quote: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?
Mijn PHP-versie is 5.3.27 en de Apache-versie kan ik niet achterhalen... Hmpf.quote: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.
PHP 5.4 en Apache 2.2 hier...quote: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.
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 forumquote: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?
Zou je me hier iets meer over kunnen vertellen?quote: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.
Gewoon via jQuery: $("#id_van_je_divje").html(var_met_userid);quote: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.
Waar moet dit geplaatst worden?quote:Op maandag 23 juni 2014 13:45 schreef bondage het volgende:
[..]
Gewoon via jQuery: $("#id_van_je_divje").html(var_met_userid);
In de functie selectUser, daar is het ID namelijk bekend.quote: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)?
http://fok.zevkiselim.nl/crew2.0/?type=user#id=151187.quote:Op maandag 23 juni 2014 16:06 schreef bondage het volgende:
[..]
In de functie selectUser, daar is het ID namelijk bekend.
quote: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); } |
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> |
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?quote:
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.quote: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.quote: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?
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.quote: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.
Fuck.quote: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.
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.quote: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.
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: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.
Helaas.quote:Ik heb er op dit moment helaas geen tijd voor.
Ik ga vanavond ff voor je kijken, ben nu aan het werk. Het is namelijk niet zo heel erg ingewikkeld.quote: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.
![]()
quote: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.
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, $Rolomschrijving, NULL, $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(); } ?> |
quote: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> ?> |
Jep! In plaats van handmatig 'DIG' of 'GC' invullen, wil ik het kunnen kiezen. Makkelijker, en niet foutgevoelig.quote:Op donderdag 26 juni 2014 15:30 schreef Nattekat het volgende:
[..]
[ code verwijderd ]
Wil je zoiets hebben?
Dat wordt een while() zoals bij de grafieken?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.
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.quote:Op donderdag 26 juni 2014 15:34 schreef zarGon het volgende:
Dat wordt een while() zoals bij de grafieken?
Hm...
De grafieken tonen geen usergegevens, maar subsite/rol/activiteit.quote: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.
Dat snap ik, maar die code kan je als uitgangspunt nemenquote: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.
Ben er helaas nog niet aan toegekomen, te druk de laatste paar dagen. Zal morgen of in het weekend even iets proberen te fixen.quote:
quote: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.
1 2 3 4 | SELECT * FROM Rol R LEFT JOIN Subsite S ON R.FK_Subsite = S.PK_Subsite |
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); ?> |
Thanks voor de check, ik zal aanpassen. (Jij kunt dit overigens ook doen, je hebt rechten op GitHub.)quote:Op vrijdag 27 juni 2014 20:30 schreef Nattekat het volgende:
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
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:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function selectUser(user_id) { $("#userselect").hide(); $("#userinfo").show(); $("#userid").show(); $("#userid").html(user_id); getUserById(user_id, function(output) { $("#username").html(output); }); drawItems(user_id); } function getUserById(user_id, callback) { $.post("index.php?do=get_user_by_id", {'user_id':user_id}, function(data) { callback(data); }); } |
Is de "Foutmelding-opgelost"-branch nog ergens voor nodig of kan ik 'm verwijderen?quote:
Hij mag weg.quote:Op dinsdag 1 juli 2014 12:38 schreef zarGon het volgende:
[..]
Is de "Foutmelding-opgelost"-branch nog ergens voor nodig of kan ik 'm verwijderen?
https://github.com/zarGon(...)Foutmelding-opgelost.
Verwijderd.quote:
Jep. Ik heb net een nieuwe commit gedaan. Admin-gedeelte is erbij gekomen: http://fok.zevkiselim.nl/crew2.0/?admin=index.quote:Staan trouwens interessante namen in de userlist nu
Ik heb dit net even getest bij de user-piechart... Ik heb je code overgenomen en op de juiste plek geplakt. Het werkt niet, de overzichten verdwijnen. Wat zou het kunnen zijn?quote:Op vrijdag 27 juni 2014 20:30 schreef Nattekat het volgende:
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
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:
[ code verwijderd ]
Ik kan nu pas hiermee aan de slag. Als ik vragen heb, hoor je ze wel.quote:Op zaterdag 28 juni 2014 17:35 schreef bondage het volgende:
[ code verwijderd ]
Je moet dan echter in index nog wel even ervoor zorgen dat je een handler hebt welke $_GET['do'] == 'get_user_by_id' afhandelt, het daadwerkelijke id zit in de post $_POST['user_id']. Je kunt hier natuurlijk ook een los script voor schrijven en deze aanroepen, deze moet het ID omzetten naar een naam en deze echo'en. Niet vergeten de naam om te zetten naar entities.
Bovenstaande is wel de meest simpele methode. Het beste is om alles in een enkele call af te handelen en terug te geven als JSON, je kunt de data er dan uithalen via data.chart_data en data.user_name. Dit vereist echter een grote aanpassing aan je bestaande code.
Ik ga er vanavond naar kijkenquote:Op dinsdag 1 juli 2014 13:51 schreef zarGon het volgende:
Zijn een paar issues mee: https://github.com/zarGon(...)is/issues?state=open. Zie je hulp graag tegemoet mocht je kunnen helpen.
Is er nog een specifieke error code? In principe zou dit moeten werken.quote:Op dinsdag 1 juli 2014 14:21 schreef zarGon het volgende:
[..]
Ik heb dit net even getest bij de user-piechart... Ik heb je code overgenomen en op de juiste plek geplakt. Het werkt niet, de overzichten verdwijnen. Wat zou het kunnen zijn?
Cool!quote:
Nope, geen foutmelding op de pagina zelf. PHP-code lijkt/is goed. Ik vermoed dat de SQL-query niet helemaal goed is. Heb niet gekeken of het werkt met een handmatig ingevulde UserID, i.p.v. $id.quote:Is er nog een specifieke error code? In principe zou dit moeten werken.
Omdat je hebt aangegeven dat je deze repo wil watchen. Zie https://github.com/settings/notifications.quote:Op dinsdag 1 juli 2014 15:06 schreef Nattekat het volgende:
Is er een reden dat mijn mailbox overspoeld is met mailtjes van github?
Jup, precies 6.quote:Op dinsdag 1 juli 2014 15:12 schreef zarGon het volgende:
[..]
Omdat je hebt aangegeven dat je deze repo wil watchen. Zie https://github.com/settings/notifications.
Ik had niet door dat je telkens een mailtje zou krijgen.. Heb een commit gedaan en 6 issues ingeschoten; dat zullen je mailberichten zijn.
als je ? gebruikt in je query, moet je geen labels gebruiken in je bind_param functie. Tevens wordt die bind_param functie nu niet goed gebruikt (elke variabele moet in een nieuwe aanroep).quote:Op zaterdag 26 juli 2014 13:29 schreef zarGon het volgende:
Is er niemand hier die me kan helpen met issue 5 en 6? https://github.com/zarGon(...)is/issues?state=open.
Als die zijn opgelost kan er tenminste voor één subsite (forum) gegevens toegevoegd worden en heb ik weer een beetje motivatie om hieraan te werken.
1 2 3 4 5 | <?php $stmt->bind_param(1, $Rolafkorting, PDO::PARAM_STR); $stmt->bind_param(2, $Rolomschrijving, PDO::PARAM_STR); $stmt->bind_param(3, $PK, PDO::PARAM_STR); ?> |
1 2 3 | <?php $stmt->execute(array($Rolafkorting, $Rolomschrijving, $pk)); ?> |
Over welk bestand heb je het preciesquote:Op dinsdag 19 augustus 2014 22:56 schreef remi1986 het volgende:
En echt, html en php bij elkaar?
De tranen springen in mijn ogen als ik dit allemaal bekijk.
admin/edit.phpquote:Op dinsdag 19 augustus 2014 22:58 schreef Nattekat het volgende:
[..]
Over welk bestand heb je het precies
- Wellicht is het handig als je deel 1 doorleest.quote:Op dinsdag 19 augustus 2014 22:56 schreef remi1986 het volgende:
Tevens in dat edit bestand waarom wordt er ineens mysqli gebruikt? (regel 29)
En echt, html en php bij elkaar?
De tranen springen in mijn ogen als ik dit allemaal bekijk.
Ok, dat het er niet uit ziet moet ik ook wel toegevenquote:
ik ben denk ik sneller als ik van scratch af aan begin. Ik dacht ff snel die query voor je te fixen (zie paar berichten hierboven)quote:Op dinsdag 19 augustus 2014 23:04 schreef zarGon het volgende:
[..]
- Wellicht is het handig als je deel 1 doorleest.
- Voor het admingedeelte is http://www.killersites.co(...)records-with-mysqli/ gebruikt.
- Als ik de skills had, had ik het allang alleen in elkaar geflanst en had ik dit topic niet geopend.
- Mocht je het willen verbeteren kun je helpen door de code aan te passen en te verbeteren.
Het werkt, en daar gaat het mij in eerste instantie om. Dat het beter kan wéét ik.quote:Op dinsdag 19 augustus 2014 23:05 schreef Nattekat het volgende:
[..]
Ok, dat het er niet uit ziet moet ik ook wel toegeven
Had gehoopt dat het vanaf de OP van het eerste deel al duidelijk was wat mijn kunnen en doen was.quote:Maar ik denk dat vooral onervarenheid hier een rol speelt, volgens mij is Zargon echt een gigantische newbie (niet lullig bedoeld) wat betreft het maken van software en is dit project ook een leercurve.
Zou je mij ook kunnen voorzien van de goede SQL-query? (De inserts en de edits...) Dan kan ik in ieder geval eventueel zelf verder.quote:Op dinsdag 19 augustus 2014 23:05 schreef remi1986 het volgende:
[..]
Ik dacht ff snel die query voor je te fixen (zie paar berichten hierboven)
Er hebben zoveel mensen hier meegekeken die de kennis in huis hebben en weten hoe dit 'project' gerealiseerd kan worden, maar daadwerkelijk helpen hebben er maar twee of drie gedaan.quote:ik ben denk ik sneller als ik van scratch af aan begin.
Ik heb nooit jouw manier van werken bekritiseerd, ik vind het juist mooi dat je direct met zo'n groot project begint, ik zou het ook niet veel beter doen met mijn basis-php kennis.quote:Op dinsdag 19 augustus 2014 23:08 schreef zarGon het volgende:
[..]
Het werkt, en daar gaat het mij in eerste instantie om. Dat het beter kan wéét ik.
Klopte het niet dan wat ik zeiquote:[..]
Had gehoopt dat het vanaf de OP van het eerste deel al duidelijk was wat mijn kunnen en doen was.
ja er klopt niks van die pagina. Want er wordt ineens mysqli gebruikt .. dan moet je mysqli_query gebruiken en dan werken functies als bind_param en execute helemaal niet.quote:Op dinsdag 19 augustus 2014 23:11 schreef zarGon het volgende:
[..]
Zou je mij ook kunnen voorzien van de goede SQL-query? (De inserts en de edits...) Dan kan ik in ieder geval eventueel zelf verder.
[..]
Er hebben zoveel mensen hier meegekeken die de kennis in huis hebben en weten hoe dit 'project' gerealiseerd kan worden, maar daadwerkelijk helpen hebben er maar twee of drie gedaan.
Alle hulp is welkom.
Ik zie het niet als kritiek. Ik vind het alleen jammer dat het nu nog - na twee delen - ter sprake moet komen. Ik wil graag verder en na de zoveelste 'ja dat moet niet zo' en 'dit moet beter' zonder daadwerkelijk te helpen word ik een beetje moe van, van dat soort commentaar. Dan moet ik namelijk weer gaan uitleggen hoe het zit, voor de zoveelste keer... Dat terwijl alles valt terug te lezen.quote:Op dinsdag 19 augustus 2014 23:11 schreef Nattekat het volgende:
[..]
Ik heb nooit jouw manier van werken bekritiseerd, ik vind het juist mooi dat je direct met zo'n groot project begint, ik zou het ook niet veel beter doen met mijn basis-php kennis.
Jawel, maar het is een herhaling van zetten. Het is al eerder besproken in de reeks/het topic. Ik zou het fijner vinden als we gewoon een stap verder kunnen komen zonder telkens in herhaling te vallen.quote:Klopte het niet dan wat ik zei
Ah op die fiets. Ik gaf meer een antwoord aan Remi hoe het zat, ik heb er verder ook geen problemen mee hoe het eruit ziet.quote:Op dinsdag 19 augustus 2014 23:17 schreef zarGon het volgende:
[..]
Ik zie het niet als kritiek. Ik vind het alleen jammer dat het nu nog - na twee delen - ter sprake moet komen. Ik wil graag verder en na de zoveelste 'ja dat moet niet zo' en 'dit moet beter' zonder daadwerkelijk te helpen word ik een beetje moe van, van dat soort commentaar. Dan moet ik namelijk weer gaan uitleggen hoe het zit, voor de zoveelste keer... Dat terwijl alles valt terug te lezen.
Ik wil gewoon een stap verder, maar het lijkt erop alsof men vooral blijft steken bij hoe het er nu uitziet.
En voordat je het persoonlijk neemt: dat is het niet. Het is alleen een beetje frustrerend dat het bij praten blijft, ik had liever gezien dat men daadwerkelijk meehelpt; al is het maar twee regels code.
[..]
Jawel, maar het is een herhaling van zetten. Het is al eerder besproken in de reeks/het topic. Ik zou het fijner vinden als we gewoon een stap verder kunnen komen zonder telkens in herhaling te vallen.
Opnieuw beginnen is geen probleem, vooral niet als de basis dan beter in elkaar zit. Vergroot ook de kans dat anderen wellicht mee willen doen.quote:Op dinsdag 19 augustus 2014 23:16 schreef remi1986 het volgende:
[..]
En ik wil best helpen, maar dan beginnen we overnieuw.
Graag!quote:Help momenteel een andere user ook met een systeem. In avondje goede structuur neergezet en maakt het werken voor iedereen een stuk fijner.
echt al dat hergebruik van codes is nergens voor nodig. Op iedere pagina zowat wordt een PDO object gemaakt. Doe dat in index.php en dat object is door het hele project bruikbaar.quote:Op dinsdag 19 augustus 2014 23:20 schreef zarGon het volgende:
[..]
Opnieuw beginnen is geen probleem, vooral niet als de basis dan beter in elkaar zit. Vergroot ook de kans dat anderen wellicht mee willen doen.
[..]
Graag!
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $sql= "SELECT PK_Gebruiker , Gebruikersnaam , UserID FROM Gebruiker WHERE UserID = " . $UserID . " "; $stmt=$con->prepare($sql); $stmt->execute(); ?> |
Het probleem is dat mijn 'oplossing' hiertegen niet werkte en ik verder geen idee heb hoe het op te lossen...quote:Op dinsdag 19 augustus 2014 23:42 schreef remi1986 het volgende:
Zo heeft dat hele prepare geen enkel nut. Nu is alsnog SQL injectie mogelijk.
De queries zijn goed. Regel 403 in edit.phpquote:Op dinsdag 19 augustus 2014 23:11 schreef zarGon het volgende:
[..]
Zou je mij ook kunnen voorzien van de goede SQL-query? (De inserts en de edits...) Dan kan ik in ieder geval eventueel zelf verder.
1 2 3 4 5 | <?php $stmt->bind_param(1, $Rolafkorting, PDO::PARAM_STR); $stmt->bind_param(2, $Rolomschrijving, PDO::PARAM_STR); $stmt->bind_param(3, $PK, PDO::PARAM_STR); ?> |
1 2 3 | <?php $stmt->execute(array($Rolafkorting, $Rolomschrijving, $pk)); ?> |
dit is standaard PDO?quote:Op dinsdag 19 augustus 2014 23:57 schreef Nattekat het volgende:
[..]
Het probleem is dat mijn 'oplossing' hiertegen niet werkte en ik verder geen idee heb hoe het op te lossen...
Er is wel aan gedacht iig.
(of dit is een ander die over het hoofd gezien is)
1 2 3 4 5 6 7 | <?php $stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->bindValue(2, $name, PDO::PARAM_STR); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> |
1 2 3 4 5 6 | <?php $stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name"); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); |
1 2 3 4 | <?php $stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name"); $stmt->execute(array(':name' => $name, ':id' => $id)); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); |
Dacht ik ook, ik heb waarschijnlijk een fout gemaakt waardoor het niet werkte. Mijn kennis ligt meer bij html en sql helaas...quote:Op woensdag 20 augustus 2014 00:04 schreef remi1986 het volgende:
[..]
dit is standaard PDO?
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
Heb ik wat leesvoer voor je danquote:Op woensdag 20 augustus 2014 00:06 schreef Nattekat het volgende:
[..]
Dacht ik ook, ik heb waarschijnlijk een fout gemaakt waardoor het niet werkte. Mijn kennis ligt meer bij html en sql helaas...
Shmoopy was inderdaad, samen met RemCow en mij ooit GM.quote:Op maandag 16 juni 2014 10:11 schreef zarGon het volgende:
[..]
Dat zal dan voor 2004 zijn geweest?
Zoals je ziet is er een link geplaatst naar de MED. Als jij een link hebt (waarin staat dat zij Global Moderator is geworden), dan zie ik die graag..
In voorjaar 2004 was het beruchte voorval waardoor ik crew-af werd (opgezocht: 4 april 2004)quote:In april 2000 werd ik Moderator van Onzin, en ben dit altijd gebleven. Eerst met Knut, toen alleen, daarna met Vork en nu weer met Knut.
In augustus 2000 een extra baantje erbij, Global Mod.
1 2 3 4 5 | <?php $uAnne_s1 = new DateTime("2005-08-16"); $uAnne_e1 = new DateTime("2006-02-13"); $uAnne_i1 = $uAnne_s1->diff($uAnne_e1)->days; ?> |
Mods met meerdere fora hebben dus meerdere van zulke berekeningen. Anne heeft er bijvoorbeeld 9.quote:181
1 2 3 | <?php $uAnne_total = $uAnne_i1 + $uAnne_i3 + $uAnne_i5 + $uAnne_i6; ?> |
Nu wilde ik de ranglijst uitbreiden; naast het aantal in dagen, wil ik het aantal ook weergeven in jaren/maanden/dagen. Bedoel, "3 j, 4 m, 26 d" zegt meer dan '1244 dagen'.quote:2297 (181+188+98+1830)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php // PUB $uAnne_s1 = new DateTime("2005-08-16"); $uAnne_e1 = new DateTime("2006-02-13"); $uAnne_i1 = $uAnne_s1->diff($uAnne_e1)->days; // datediff in dagen $uAnne_i1_ymd = $uAnne_s1->diff($uAnne_e1); // wordt gebruikt voor ymd-berekening // F&F $uAnne_s3 = new DateTime("2006-08-07"); $uAnne_e3 = new DateTime("2007-02-11"); $uAnne_i3 = $uAnne_s3->diff($uAnne_e3)->days; // datediff in dagen $uAnne_i3_ymd = $uAnne_s3->diff($uAnne_e3); // wordt gebruikt voor ymd-berekening // Opsomming PUB + F&F in dagen (werkend!): $uAnne_total = $uAnne_i1 + $uAnne_i3; // YMD, niet werkend: $uAnne_total_ymd = $uAnne_i1_ymd + $uAnne_i3_ymd $uAnne_ymd = $uAnne_total_ymd->y . " j, " . $uAnne_total_ymd->m." m, ".$uAnne_total_ymd->d." d"; // Voorbeeldresultaat: 1 j, 2 m, 3 d ?> |
Maanden met 31 of 28/29 dagen dan?quote:Op vrijdag 12 december 2014 10:21 schreef Nattekat het volgende:
Je kan het aantal dagen delen door 365 en naar beneden afronden, daarna delen door 30 voor het aantal maanden, en wat je onderhoud is het aantal dagen.
Dan heb je een resultaat dat relatief is. Je houdt geen rekening met een aantal zaken, zoals schrikkeljaren bijvoorbeeld.quote:Op vrijdag 12 december 2014 10:21 schreef Nattekat het volgende:
Je kan het aantal dagen delen door 365 en naar beneden afronden, daarna delen door 30 voor het aantal maanden, en wat je onderhoud is het aantal dagen.
1 2 3 4 | <?php $uAnne_s1 = new DateTime("2005-08-16"); $uAnne_e1 = new DateTime("2006-02-13"); ?> |
Is dat niet hetzelfde als delen door 365/30? Door het in seconden te plaatsen en dat te delen mis je de context, no?quote:Op vrijdag 12 december 2014 12:04 schreef remi1986 het volgende:
gooi die dates in een strtotime. Het verschil daartussen is het aantal seconden. Dat weer delen door 60 heb je aantal minuten etc.
ow wacht .. diff() is beter inderdaad.quote:Op vrijdag 12 december 2014 12:08 schreef zarGon het volgende:
[..]
Is dat niet hetzelfde als delen door 365/30? Door het in seconden te plaatsen en dat te delen mis je de context, no?
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $january = new DateTime('2010-01-01'); $february = new DateTime('2010-02-01'); $interval = $february->diff($january); // %a will output the total number of days. echo $interval->format('%a total days')."\n"; // While %d will only output the number of days not already covered by the // month. echo $interval->format('%m month, %d days'); ?> |
Dit was ik ook tegengekomen, maar dit werkte ook niet.quote:Op vrijdag 12 december 2014 12:13 schreef remi1986 het volgende:
[..]
ow wacht .. diff() is beter inderdaad.
[ code verwijderd ]
The above example will output:
31 total days
1 month, 0 days
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |