True. Dan moet je eigenlijk bekijken hoe het eruit ziet als je de adresgegevens gaat bewerken.quote:Op donderdag 8 december 2016 21:13 schreef Monolith het volgende:
[..]
Er is een aparte invoer. Zegt niet direct iets over de de opslag.
Er is niks lelijk aan exploden op spatie en vervolgens het 1e en 4e element te pakken, hoor. Dat is in feite hetzelfde als wat je met awk doet.quote:Op woensdag 28 december 2016 11:01 schreef xaban06 het volgende:
Ik heb de volgende string: " 84331 GB / 88282 GB avail"
Daaruit wil ik de 2 getallen uit halen. Met awk in bash is dat simpel (awk {'print $1 $4'}), maar PHP kent helaas geen awk. Wat is een (simpele) alternatief, behalve exploden op spaties (kan wel, maar lelijk).
1 2 3 4 5 6 7 8 9 | <?php if(isset($_GET['id'])){ if(isset($_COOKIE['tijden'])){ setcookie("tijden", $_COOKIE['tijden']."s".$_GET['id']."-".time(), time()+(60*60*30)); }else{ setcookie("tijden", $_GET['id']."-".time(), time()+(60*60*30)); } include('incl.php'); echo json_encode(array($d[0][0], $d[0][1], $d[0][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 | <?php $mysqli = new mysqli("localhost","root","","r"); if ($mysqli->connect_errno) echo "Error - Failed to connect to MySQL: " . $mysqli->connect_error; $r = $mysqli->query("SELECT * FROM f ORDER BY s DESC"); $d = array(); while($row = mysqli_fetch_array($r)) { $d[$row[0]] = array($row[0], $row[1], $row[2], $row[3], $row[4]); } mysqli_close ($mysqli); if(isset($_COOKIE['tijden'])){ $a = explode('s', $_COOKIE['tijden']); $z = ""; foreach($a as $b){ $c = explode('-', $b); $x = $d[$c[0]][4]; if(($c[1]+$x) > time()){ unset($d[$c[0]]); $z .= $b."s"; } } $z = substr($z, 0, -1); if($z != ""){ setcookie("tijden", $z, time()+(60*60*30)); }else{ setcookie("tijden", "", 1); }; } $d = array_values($d); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php if(isset($_GET['id'])){ if(isset($_COOKIE['tijden'])){ $cookie = $_COOKIE['tijden']."s".$_GET['id']."-".time(); }else{ $cookie = $_GET['id']."-".time(); } } include('incl.php'); echo json_encode(array($d[0][0], $d[0][1], $d[0][4])); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php const COOKIE_NAME = 'tijden'; const THIRTY_MINUTES = 60 * 60 * 30; if (isset($_GET['id'])) { $newEntry = $_GET['id'] . "-" . time(); $prepend = isset($_COOKIE[COOKIE_NAME]) ? $_COOKIE[COOKIE_NAME] . 's' : ''; $expiryTime = time() + THIRTY_MINUTES; setcookie(COOKIE_NAME, $prepend . $newEntry, $expiryTime); include('incl.php'); echo json_encode(array($data[0][0], $data[0][1], $data[0][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 35 36 37 38 | <?php $mysqli = new mysqli('localhost', 'root', '', 'r'); if ($mysqli->connect_errno) { echo "Error - Failed to connect to MySQL: " . $mysqli->connect_error; } $result = $mysqli->query('SELECT * FROM f ORDER BY s DESC'); $data = array(); while($row = mysqli_fetch_array($result)) { $data[$row[0]] = array($row[0], $row[1], $row[2], $row[3], $row[4]); } mysqli_close ($mysqli); if(isset($_COOKIE[COOKIE_NAME])){ $entries = explode('s', $_COOKIE[COOKIE_NAME]); $newCookie = ''; foreach($entries as $entry){ list($id, $time) = explode('-', $entry); $seconds = $data[$id][4]; if (($time + $seconds) > time()) { unset($data[$id]); $newCookie .= $entry . 's'; } } // remove last s from newCookie $newCookie = substr($newCookie, 0, -1); if ($newCookie != '') { setcookie(COOKIE_NAME, $newCookie, time() + THIRTY_MINUTES); } else { // unset cookie setcookie(COOKIE_NAME, '', 1); } } $data = array_values($data); |
bedankt, dit was het, hiermee is het opgelost, klinkt logisch al verwachtte ik dat het script wel zou weten dat het veranderd zou moeten zijn omdat ie dat zelf gedaan heeft, misschien als ik $_COOKIE['tijden'] had gebruikt om de waarde aan te passen, had ie dat wel geweten ga ik vanuit, niet geprobeert, dan kan je alleen de verlooptijd niet instellen ga ik vanuit, maar dat gebeurde dan verderop wanneer de cookie weer geset werd, maarja $cookie werkt prima.quote:Op zondag 1 januari 2017 15:42 schreef H.Witkamp het volgende:
Je gebruikt setcookie in het bestand incl.php. De setcookie die je voor include('incl.php') gebruikt wordt dan overschreven.
De cookie die je met setcookie zet wordt pas met de volgende request meegestuurd dus de inhoud van $_COOKIE['tijden'] veranderd niet gelijk na setcookie.
Wat je zou kunnen doen is
[ code verwijderd ]
en dan in incl.php $cookie gebruiken ipv $_COOKIE['tijden'].
Ja ik weet het, mijn autistische hoofd blokkeert als ik een naam moet bedenken voor zo'n ding dus gebruik ik gewoon een random letter uit het alfabet, zodat ik door kan, meestal beginnende bij abcd en als ik niet meer weet wat de laatste letter was gebruik ik zxy etc. of ga ik 2 letters gebruiken, heb er persoonlijk niet al teveel last van maar kan me voorstellen dat als iemand anders kijkt ie denkt wat heb jij er nou weer neergekwakt, alleen als ik oude scipts van mezelf van jaren terug bekijk snap ik er niet direct veel van, maar of dat met fatsonelijke benamingen veel zou schelen betwijfel ik, want ik begrijp ze nog altijd sneller als het gemiddelde door iemand anders gemaakte script, omdat het toch nog ergens in mn geheugen zit, maar ik zal eraan proberen te werken.quote:Op zondag 1 januari 2017 15:57 schreef Alfje het volgende:
Sorry als mijn post wat negatief overkwam, ik heb je code een beetje herschreven als voorbeeld hoe je dingen leesbaarder kunt maken en makkelijker fouten op kan sporen. Leer jezelf dit aan en je gaat enorm veel tijd en frustratie besparen op langere termijn.
Overigens niet getest:
[ code verwijderd ]
[ code verwijderd ]
Ik hoop dat je inziet dat het nu al een stuk duidelijker is wat er gebeurt. In php hoef je de afsluit tag niet te gebruiken, het is verstandig dit ook niet te doen, kan rare fouten opleveren als je er per ongeluk een spatie of enter achter hebt staan.
Waar het mis gaat is wat H. Witkamp al aangeeft. Als je setcookie doet dat veranderd dat niet je $_COOKIE array zolang je script nog loopt. Als het script bij de if op regel 17 aankomt is deze dus nog zo als die was aan het begin van je script.
Als je headers mee wilt sturen met je response moet je die headers altijd sturen voordat je andere output genereert anders krijg je een foutmelding. Als je in bestanden die verder geen html ofzo bevatten een afsluittag zet en daarachter per ongeluk een spatie of enter dan ga je al output genereren. Als je dan heel ergens anders verderop een header wilt sturen krijg je een fout en die is verdomd lastig op te sporen.quote:Dat van de afsluittag wist ik niet, hoezo zou je fouten krijgen als je er een spatie of enter achter hebt staan? je kunt toch gewoon php afsluiten en dan html erachter poten en eventueel later weer php openen. ik weet niet wat voor een fouten daardoor moeten komen.
Dat zou je met de volgende paar regels kunnen doen.quote:Op zaterdag 18 februari 2017 21:40 schreef snorvanJohanDerksen het volgende:
Zouden jullie mij kunnen helpen? Ik wil een functie programmeren die de eerste circa 150 woorden van een artikel op de home pagina zet (à la GeenStijl). Hoe pak ik dit aan?
1 2 3 4 5 6 7 8 9 10 11 | function limitWords($text, $limit) { //Breek de tekst in array van woorden $words = explode(" ", $text); //Pak de woorden vanaf het begin van de tekst tot aan het limiet $words = array_slice($words, 0, $limit); //Plak de overgebleven woorden weer aan elkaar tot een tekst. return implode(" ", $words); } |
Met als je de OO principes nog niet snapt, zou ik beginnen met de basis van datastructuren et cetera, dit hoeft niet lang te duren maar dan snap je tenminste wat je doet.quote:Op zaterdag 18 februari 2017 23:55 schreef Skunk-m het volgende:
Ik kan niet zo snel een java topic vinden, maar waarom is java zo belachelijk ingewikkeld vergeleken met php/mysql/html/javascript.
Ik wou java gaan leren om beetje te kloten met het maken van android apps, ben nou een of andere tutorial van tweakers aan het volgen, maar het ziet er ten eerste allemaal onnodig ingewikkeld uit en bij die tweakers zo nu en dan challenges (dat hoort erbij) die echt totaal niks te maken hebben met wat je al gedaan hebt, en het grootste probleem nu even, is dat de code die hij krijgt als ie een standaard layout ding kiest totaal anders is als wat ik krijg (ziet er bij hem in mijn ogen stuk simpeler uit, maar uiteraard nog steeds ingewikkeld wat inherent is aan java in mijn noob-ogen) maar daar schiet ik dus verder niet heel veel mee op.
Maar heeft iemand een fatsoenlijke java/android tutorial? ik heb in php ook nog nooit OOP gedaan.
Het liefst zoals vroeger op school dat je wat lesmateriaal krijgt en tussendoor wat opdrachtjes, maar die moeten dan wel te maken hebben met wat je tot dan toe hebt geleerd uiteraard.
kheb paar weken terug tutorialtje gevolgd voor oop met php, in php weet ik wel hoe ik een class gebruik enzo, maar classes maken en de reden ervoor enzo dat begrijp ik niet helemaal ofzo, kan ik mn hersens nog niet omheen binden of hoe zeg je dat. maar ik heb nou een torrentje gedownload genaamd: intro to java programming by udacityquote:Op zondag 19 februari 2017 00:00 schreef FlippingCoin het volgende:
[..]
Met als je de OO principes nog niet snapt, zou ik beginnen met de basis van datastructuren et cetera, dit hoeft niet lang te duren maar dan snap je tenminste wat je doet.
Als je dat niet begrijpt, weet je ook nog niet hoe je het gebruikt.quote:Op zondag 19 februari 2017 00:03 schreef Skunk-m het volgende:
[..]
kheb paar weken terug tutorialtje gevolgd voor oop met php, in php weet ik wel hoe ik een class gebruik enzo, maar classes maken en de reden ervoor enzo dat begrijp ik niet helemaal ofzo, kan ik mn hersens nog niet omheen binden of hoe zeg je dat.
Zelf leer ik het liefst uit een boek, maar dat is compleet persoonlijk.quote:Op zondag 19 februari 2017 00:03 schreef Skunk-m het volgende:
[..]
kheb paar weken terug tutorialtje gevolgd voor oop met php, in php weet ik wel hoe ik een class gebruik enzo, maar classes maken en de reden ervoor enzo dat begrijp ik niet helemaal ofzo, kan ik mn hersens nog niet omheen binden of hoe zeg je dat. maar ik heb nou een torrentje gedownload genaamd: intro to java programming by udacity
ff kijken of dat wat is.
EDIT: zie nu een andere torrent met tutorial, ook van udacity genaamd developing android apps.. misschien is dat een betere voor mijn doeleinden.
Waarom gebruik je de limit parameter van explode niet? Dan krijg je een kleinere array terug, heb je splice ook niet meer nodig.quote:Op zaterdag 18 februari 2017 22:23 schreef BrainOverfloW het volgende:
[..]
Dat zou je met de volgende paar regels kunnen doen.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php /** * @param string $text * @param int $limit * @return string */ function limitWords($text, $limit) { // Breek de tekst in array met $limit woorden (+ 1 voor de rest van de woorden in $text) $words = explode(' ', $text, $limit + 1); // Gooi de rest van de tekst weg, zodat er maximaal $limit woorden over blijven. // Dit gaat ook goed als $text minder dan $limit woorden bevat. unset($words[$limit]); //Plak de overgebleven woorden weer aan elkaar tot een tekst. return implode(' ', $words); } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |