abonnement Unibet Coolblue Bitvavo
  vrijdag 24 mei 2013 @ 15:17:23 #51
166255 Maringo
Bèhèhèhèh
pi_126948871
quote:
2s.gif Op vrijdag 24 mei 2013 13:05 schreef Tijn het volgende:

[..]

Je zou je kunnen afvragen of PHP dan ook de beste keus is.
Lijkt mij niet. Tijdje terug bezig geweest met een project waarbij 's nachts een 7-tal bestanden moesten worden uitgelezen, aan elkaar gekoppeld en in een database worden gestopt. Bij mijn eerste volledige test in PHP heb ik hem na 17 uur maar uitgezet terwijl ie nog maar ongeveer 19% had gedaan. Vervolgens hetzelfde in Python geschreven en die is binnen 12 minuten klaar.

Ik moest met zoveel grote multidimensionale arrays werken dat PHP het gewoon niet meer trok.
Die volg topic-knop hè...
Op 02-06-2014 16:38 schreef Moeraskat
Je bent te goed voor de mensheid.
  vrijdag 24 mei 2013 @ 15:29:38 #52
25889 Sitethief
Fulltime Flapdrol
pi_126949353
quote:
0s.gif Op vrijdag 24 mei 2013 12:51 schreef raptorix het volgende:

[..]

Ik heb ook lang in scripting talen gewerkt, o.a. vbscript/asp en Perl, maar zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt. Ik kan nu bijvoorbeeld gewoon rechtermuis klik op een functie drukken, en zien waar alle usages voorkomen.
Netbeans ondersteunt dit bij PHP gewoon, evenals een aantal refactor functies, zoals renamen van functies etc.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht >:)
pi_126950166
quote:
0s.gif Op vrijdag 24 mei 2013 15:29 schreef Sitethief het volgende:

[..]

Netbeans ondersteunt dit bij PHP gewoon, evenals een aantal refactor functies, zoals renamen van functies etc.
Ah nice, ik vind zelf de refactoring naar Linq queries extreem handig.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
  vrijdag 24 mei 2013 @ 15:53:44 #54
12221 Tijn
Powered by MS Paint
pi_126950479
Deze functie zit al 5 jaar ongewijzigd in m'n Utilities-klasse en ik ben er nog steeds blij mee O+

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/**
  * $string = 'Héllo Çårmëñ, hôw árè yõü?'
  * returns 'Hello_Carmen_how_are_you'
  */
public static function stripSpecialChars($string)
{
  
$string htmlentities($stringENT_NOQUOTES'UTF-8'); 
  
$string preg_replace('`&(.)(tilde|circ|grave|acute|uml|ring|cedil);`''$1'$string);
  
$string preg_replace('/[^\w\d\s]/'''$string);
  
$string str_replace(' ''_'$string);

  return 
$string;
}
?>
pi_126994709
quote:
0s.gif Op vrijdag 24 mei 2013 11:24 schreef raptorix het volgende:

[..]

Dat vind ik toch wel een enorm nadeel aan talen als PHP hoor, ik gebruik resharper in Visual Studio en je ziet gelijk alle zaken die niet in gebruik zijn.
Dat heeft weinig te maken met de taal PHP. Je moet gewoon een fatsoenlijke IDE gebruiken.
pi_126994952
quote:
0s.gif Op vrijdag 24 mei 2013 12:55 schreef Chandler het volgende:

[..]

Inderdaad, dat heb ik nog niet zien voorkomen bij editors voor PHP :{ of ik heb natuurlijk niet goed genoeg gekeken!. :+
Usage detection? Misschien moet je dan eens een andere editor dan Notepad gebruiken.
pi_127014149
quote:
0s.gif Op zaterdag 25 mei 2013 19:28 schreef Light het volgende:
Usage detection? Misschien moet je dan eens een andere editor dan Notepad gebruiken.
Zoals? ;)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 10:54:37 #58
134783 papernote
Een echte.
pi_127015929
quote:
14s.gif Op zondag 26 mei 2013 06:44 schreef Chandler het volgende:

[..]

Zoals? ;)
Zend Studio.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_127016235
quote:
14s.gif Op zondag 26 mei 2013 06:44 schreef Chandler het volgende:

[..]

Zoals? ;)
PhpStorm
  zondag 26 mei 2013 @ 11:17:20 #60
63192 ursel
"Het Is Hier Fantastisch!
pi_127016313
Netbeans :Y
  zondag 26 mei 2013 @ 11:40:05 #61
166255 Maringo
Bèhèhèhèh
pi_127016778
quote:
0s.gif Op zondag 26 mei 2013 11:12 schreef Light het volgende:

[..]

PhpStorm
Deze inderdaad. Heerlijke programma's hebben die lui. Ik gebruik er een aantal van met veel plezier.
Die volg topic-knop hè...
Op 02-06-2014 16:38 schreef Moeraskat
Je bent te goed voor de mensheid.
pi_127039853
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 21:24:21 #63
91039 mstx
2x1/2 = 1/2 x 1/2
pi_127042377
quote:
0s.gif Op zondag 26 mei 2013 20:50 schreef Chandler het volgende:
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
CURLOPT_HEADER gebruiken en kijken of er een "Location" header tussen zit.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_127043468
quote:
0s.gif Op zondag 26 mei 2013 21:24 schreef mstx het volgende:

[..]

CURLOPT_HEADER gebruiken en kijken of er een "Location" header tussen zit.
Top, ik ga het ff proberen!

Andere vraag; wanneer ik met Domdocument een html pagina wil laden krijg ik de volgende foutmelding.
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1354

Nu snap ik best dat niet iedere pagina een nette opbouw heeft, maar wil eigenlijk geen foutmeldingen zien, gewoon parsen totdat hij niet meer kan parsen oid?! nu dacht ik laat ik kijken welke opties ik mee kan geven (maar 1) en die vond ik hier: http://www.php.net/manual/en/libxml.constants.php

Maar daarvan heb ik meerdere geprobeerd maar blijf errors opvangen... alleen een vieze @ werkt :{ iemand een idee hoe ik dat kan oplossen? Ps domdocument gebruik ik om links uit te kunnen lezen.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 21:41:17 #65
187069 slacker_nl
Sicko pur sang
pi_127043569
quote:
0s.gif Op zondag 26 mei 2013 20:50 schreef Chandler het volgende:
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
Een redirect is altijd een 3xx returncode, 200 is found. Daarnaar kijken?
In theory there is no difference between theory and practice. In practice there is.
pi_127043668
quote:
0s.gif Op zondag 26 mei 2013 21:41 schreef slacker_nl het volgende:

[..]

Een redirect is altijd een 3xx returncode, 200 is found. Daarnaar kijken?
Probleem is/was dat ik met curl_getinfo gewoon een 200 krijg, daarna pas een header location oid!? maar goed...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 21:53:46 #67
187069 slacker_nl
Sicko pur sang
pi_127044286
quote:
0s.gif Op zondag 26 mei 2013 21:42 schreef Chandler het volgende:

[..]

Probleem is/was dat ik met curl_getinfo gewoon een 200 krijg, daarna pas een header location oid!? maar goed...
Apart, want ik krijg dit:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0); 

curl_exec($ch);
print_r(curl_getinfo($ch, CURLINFO_HTTP_CODE)); # 302

curl_close($ch);

?>
In theory there is no difference between theory and practice. In practice there is.
pi_127044448
Juist maar ik heb ook de CURLOPT_FOLLORHEADER op false staan ;) kan daar door komen?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 22:01:02 #69
187069 slacker_nl
Sicko pur sang
pi_127044811
quote:
0s.gif Op zondag 26 mei 2013 21:55 schreef Chandler het volgende:
Juist maar ik heb ook de CURLOPT_FOLLORHEADER op false staan ;) kan daar door komen?
Zal ik het eens proberen? Uh, welke optie staat aan? Want ik kan deze optie ook niet met een fuzzy search vinden. Ow, en tuurlijk, als je follow location aanhebt staan, dan gaat ie uiteraard die volgen en kom je uit op een 200. Das logisch, tenzij je max-redirects ook aanpast en deze overschreden wordt.

Maar dan kan je met CURLINFO_REDIRECT_COUNT volgens mij zien hoeveel redirects je hebt gehad, > 0 is een redirect geweest.

En volgens mij kan je met CURLINFO_EFFECTIVE_URL dan zien wat de URL was welke je hebt aangesproken, als die niet gelijk is met je oorspronkelijke URL: redirect.

[ Bericht 7% gewijzigd door slacker_nl op 26-05-2013 22:06:55 ]
In theory there is no difference between theory and practice. In practice there is.
pi_127044998
quote:
0s.gif Op zondag 26 mei 2013 22:01 schreef slacker_nl het volgende:

[..]

Zal ik het eens proberen? Uh, welke optie staat aan? Want ik kan deze optie ook niet met een fuzzy search vinden.
Correct, was: CURLOPT_FOLLOWLOCATION en die staat er wel tussen :+

krijg je als je met 10 dingen te gelijk aan het doen bent

quote:
Ow, en tuurlijk, als je follow location aanhebt staan, dan gaat ie uiteraard die volgen en kom je uit op een 200. Das logisch, tenzij je max-redirects ook aanpast en deze overschreden wordt.

Maar dan kan je met CURLINFO_REDIRECT_COUNT volgens mij zien hoeveel redirects je hebt gehad, > 0 is een redirect geweest.

En volgens mij kan je met CURLINFO_EFFECTIVE_URL dan zien wat de URL was welke je hebt aangesproken, als die niet gelijk is met je oorspronkelijke URL: redirect.
Case is dat ik wil uitvissen of er een redirect plaats vind, ja, dan geen data laden, nee dan wel data laden. want een redirect is voor mijn project niet nodig, alleen de directe data... tenzij een redirect naar het zelfde domein is.. maar het laatste is van mij voor ondergeschikt belang!.

[ Bericht 18% gewijzigd door Chandler op 26-05-2013 22:11:06 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 22:13:27 #71
187069 slacker_nl
Sicko pur sang
pi_127045705
quote:
0s.gif Op zondag 26 mei 2013 22:03 schreef Chandler het volgende:

[..]

Correct, was: CURLOPT_FOLLOWLOCATION en die staat er wel tussen :+

krijg je als je met 10 dingen te gelijk aan het doen bent

[..]

Case is dat ik wil uitvissen of er een redirect plaats vind, ja, dan geen data laden, nee dan wel data laden. want een redirect is voor mijn project niet nodig, alleen de directe data... tenzij een redirect naar het zelfde domein is.. maar het laatste is van mij voor ondergeschikt belang!.
Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.
In theory there is no difference between theory and practice. In practice there is.
pi_127045955
quote:
0s.gif Op zondag 26 mei 2013 22:13 schreef slacker_nl het volgende:

[..]

Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.
Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)

Had eerst een extra functie in mijn script met get_headers maar die vreet nogal wat resources en maakt het script stukken slomer....
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 26 mei 2013 @ 22:18:38 #73
187069 slacker_nl
Sicko pur sang
pi_127046026
quote:
0s.gif Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:

[..]

Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)
Je doet je ondertitel eer aan nu.
In theory there is no difference between theory and practice. In practice there is.
pi_127046138
quote:
14s.gif Op zondag 26 mei 2013 22:18 schreef slacker_nl het volgende:
Je doet je ondertitel eer aan nu.
en bedankt! *) zelfkennis is de helft...

maar verbeteringen worden gewaardeerd ;)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127046359
quote:
8s.gif Op zondag 26 mei 2013 21:39 schreef Chandler het volgende:

[..]

Top, ik ga het ff proberen!

Andere vraag; wanneer ik met Domdocument een html pagina wil laden krijg ik de volgende foutmelding.
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1354

Nu snap ik best dat niet iedere pagina een nette opbouw heeft, maar wil eigenlijk geen foutmeldingen zien, gewoon parsen totdat hij niet meer kan parsen oid?! nu dacht ik laat ik kijken welke opties ik mee kan geven (maar 1) en die vond ik hier: http://www.php.net/manual/en/libxml.constants.php

Maar daarvan heb ik meerdere geprobeerd maar blijf errors opvangen... alleen een vieze @ werkt :{ iemand een idee hoe ik dat kan oplossen? Ps domdocument gebruik ik om links uit te kunnen lezen.
probeer deze eens :P

http://nl3.php.net/manual(...)-internal-errors.php
..///
  zondag 26 mei 2013 @ 22:30:22 #76
187069 slacker_nl
Sicko pur sang
pi_127046677
quote:
0s.gif Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:

[..]

Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)

Had eerst een extra functie in mijn script met get_headers maar die vreet nogal wat resources en maakt het script stukken slomer....
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.
In theory there is no difference between theory and practice. In practice there is.
pi_127056142
quote:
Werkte niet, maar heb alleen true geprobeerd, misschien had ik deze wel op false moeten zetten (lol, kan nu niet ff testen :()

quote:
0s.gif Op zondag 26 mei 2013 22:30 schreef slacker_nl het volgende:
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.
Daarom gebruik ik de queue om geen recursive call's te doen anders had ik die queue niet nodig gehad, dat was het eerste probleem die ik 4 weken geleden moest aanpakken :@

Op dit moment zie ik weinig nut in het volgen van deze redirects, misschien dat ik deze later toch nog door ga voeren in de code maar dat is voor dan..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127098475
Waarom geeft het laden van een document via dom met loadhtml fouten maar true als resultaat?

1
2
3
4
5
6
7
8
<?php
$doc 
= new DOMDocument();

var_dump($doc->loadhtml("<html dxxx<nbody>haha<html>test"));

var_dump($doc->loadhtml("<html><head></head><body><p>lol</p></body></html>"));
exit;
?>

Beiden geven true terwijl de eerste een foutmelding geeft en dus een false zou moeten geven...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127098650
quote:
0s.gif Op dinsdag 28 mei 2013 09:27 schreef Chandler het volgende:
Waarom geeft het laden van een document via dom met loadhtml fouten maar true als resultaat?
[ code verwijderd ]

Beiden geven true terwijl de eerste een foutmelding geeft en dus een false zou moeten geven...
Geeft het een foutmelding of een warning? Uit de documentatie:
quote:
While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
Edit: ik lees nu pas je eerdere posts :@ . Warnings dus. Dan moet je dus libxml_use_internal_errors gebruiken als je de warnings wilt afhandelen.
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
pi_127111190
quote:
0s.gif Op dinsdag 28 mei 2013 09:33 schreef Rockfire het volgende:
libxml_use_internal_errors
Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...

libxml_use_internal_errors(true);

:{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

var_dump(libxml_use_internal_errors(true));
$doc = new DOMDocument();

if (!$doc->loadhtml("<html dxxx<nbody>haha<html>test"))
{
    echo 'process error?';
}

if (!$doc->loadhtml("<html><head></head><body><p>lol</p></body></html>"))
{
    echo 'process error1?';
}
exit;
?>

zou dus een foutmelding moeten geven, maar niet dus :P
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127111651
quote:
0s.gif Op dinsdag 28 mei 2013 16:06 schreef Chandler het volgende:

[..]

Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...
Nee dat staat er niet, er staat:
quote:
This function returns the previous value of use_errors
quote:
libxml_use_internal_errors(true);

:{
[ code verwijderd ]

zou dus een foutmelding moeten geven, maar niet dus :P
Heb je ook gekeken naar de functie libxml_get_errors? Het voorbeeld wat ze daarbij geven doet precies wat jij wil, namelijk controleren op verkeerde xml...
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
pi_127112772
Ik doelde meer op domdocument

http://nl1.php.net/manual/en/domdocument.loadhtml.php

quote:
Returns TRUE on success or FALSE on failure. If called statically, returns a DOMDocument or FALSE on failure.
maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.

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
<?php
$errors 
= array();
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadhtml("<html dxxx<nbody>haha<html>test");
$errors libxml_get_errors();
libxml_clear_errors();

if (
count($errors) > 0) {
    echo 
'Moet een fout geven! FOUT!';
}

$doc->loadhtml("<html><head></head><body><p>lol</p></body></html>");
$errors libxml_get_errors();
libxml_clear_errors();

if (
count($errors) > 0) {
    echo 
'Als je dit ziet, is er iets echt goed mis....';
}

// nog sneller
if ($doc->loadHtml("<html dxxx<nbody>haha<html>test") && count(libxml_get_errors()) > 0) {
    echo 
'html is fout 1';
} else {
    echo 
'html is goed 1';
}
libxml_clear_errors();

if (
$doc->loadHtml("<html><head></head><body><p>lol</p></body></html>") && count(libxml_get_errors()) > 0) {
    echo 
'html is fout 2';
} else {
    echo 
'html is goed 2';
}

exit;
?>
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127177784
quote:
0s.gif Op dinsdag 28 mei 2013 16:43 schreef Chandler het volgende:
Ik doelde meer op domdocument

http://nl1.php.net/manual/en/domdocument.loadhtml.php

[..]

maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.
[ code verwijderd ]

Als je iets verder leest staat er dit:

quote:
While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
Je huidige oplossing lijkt mij dus goed en ook volgens de documentatie.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_127179618
Top! dan heb ik toch een juiste workaround! *)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_127213409
ik gebruik regelmatig b.v.
1
2
3
<?php
include "foto.php" ;
?>

om meer structuur in de website te krijgen wil ik graag dingen meer in mapjes plaatsen
het word dan dus
1
2
3
<?php
include "fotos/foto.php" ;
?>
waar de foto`s dus weer in sub mapjes staan.
met include loop ik dan regelmatig tegen het probleem aan dat blijft denken vanuit de rootmap

van uit iframe(`s) had ik dat probleem nooit. weet iemand hier een makkelijke oplossing voor?

of moet ik alle (php/html) bestanden die in mappen staan programmeren vanuit de root?
pi_127214951
je include volgens een relatief pad, ten opzichte van het bestand waar de include gedaan wordt.

Bedenk je dat includes server-side gebeuren en dus moeten verwijzen naar bestanden op hel lokale filesystem van de server. Terwijl iframes moeten verwijzen naar een url van de webserver. Dit is een wezenlijk verschil!
pi_127215799
Bij een standaard include_path wordt er bij include/require altijd eerst gezocht binnen de directory waarin je php-file met het include statement staat. Dus je moet altijd rekenen vanuit het scriptbestand waarin je de include uitvoert. Je kunt eventueel paden toevoegen aan include_path, maar dat hangt van je projectopzet af.

1
2
3
4
5
6
7
8
<?php
var_dump
(explode(':'get_include_path()));

// array (size=3)
//   0 => string '.' (length=1)  <-- verwijst naar directory van het huidige php-bestand
//   1 => string '/usr/share/php' (length=14)
//   2 => string '/usr/share/pear' (length=15)
?>

En inderdaad wat KomTijd zegt, de structuur van het bestandssysteem hoeft niet gelijk te zijn aan je url-structuur.

Zonder concrete case valt er verder weinig te zeggen over een mogelijke oplossing.

[ Bericht 15% gewijzigd door zoem op 30-05-2013 19:09:46 ]
  vrijdag 31 mei 2013 @ 16:55:06 #88
12221 Tijn
Powered by MS Paint
pi_127254273
Kan iemand me helpen met wat MySQL GROUP BY troubles?

Ik heb een database met twee tabellen:

1
2
3
4
5
6
7
player

id | name
------------
 1 | henk
 2 | truus
 3 | sjaak

en

1
2
3
4
5
6
7
game

id | player_id | character_id | waves | score
-----------------------------------------------
 1 |         2 |            5 |    12 |  9000
 2 |         5 |            9 |     8 |  4000
 3 |         2 |            4 |    15 | 12000

Nu wil ik een highscore-lijst maken gesorteerd op score en gegroepeerd op speler waarbij de character_id en wave van die score/speler-combinatie wordt weergegeven.

Hoe krijg ik dat voor elkaar? Want met zoiets kom ik er niet:

1
2
3
4
SELECT max(score) as score, character_id, waves
FROM game
GROUP BY user_id
ORDER BY score

Het probleem hiervan is dat de character_id en waves niet bij het record horen van de score. Iemand een slim om dit wel goed te doen?
pi_127254470
Je MAX(score) en GROUP BY zijn toch helemaal niet nodig?
  vrijdag 31 mei 2013 @ 17:00:02 #90
12221 Tijn
Powered by MS Paint
pi_127254527
quote:
14s.gif Op vrijdag 31 mei 2013 16:58 schreef KomtTijd... het volgende:
Je MAX(score) en GROUP BY zijn toch helemaal niet nodig?
Jawel, want het is de bedoeling dat er geen dubbele users in staan, maar alleen de maximale score van een user.
pi_127254581
Is dat niet met distinct op te lossen?
  vrijdag 31 mei 2013 @ 18:04:13 #92
187069 slacker_nl
Sicko pur sang
pi_127256910
Kan je niet joinen met jezelf:

http://dev.mysql.com/doc/(...)ns.html#function_max

Je kan dan zoiets doen:

1
2
3
4
5
6
7
8
9
10
SELECT
    MAX(g.scores) as hiscore,
    g.character_id,
    g.waves,
FROM
    games as g
JOIN
    games as g2 on hiscore = g2.scores
    where g2.player_id = g.player_id 
;
In theory there is no difference between theory and practice. In practice there is.
pi_127283573
Heeft iemand een oplossing voor het volgende?

Ik laad via curl multi meerdere url's in 1x maar soms gaat er een URL de fout in bv door het volgende.

- geen content ontvangen
- http error code
- redirect

Nu zou ik graag per uitgelezen URL willen weten welke URL de fout in is gegaan, maar kan dat niet checken als er een redirect is geweest.... mijn vraag is, hoe kan ik zorgen dat ik de juiste gegevens bij de error kan zetten? zodat ik die project kan skippen en eventueel de error kan gebruiken.

Testcase
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
<pre>
<?php

$projects 
= array(=> array("url" => "http://www/testredirect.php?x=5"),
                  
=> array("url" => "http://www/testredirect.php?x=2"),
                  
=> array("url" => "http://www/testerror.php"),
                  
=> array("url" => "http://www/testerror.php?x=10"),
                  
=> array("url" => "http://www/testerror.php?x=5"),
                  
=> array("url" => "http://www/testerror.php?x=22"));
                  
$mh curl_multi_init();
$handles = array();

foreach (
$projects AS $key => $project)
{
    echo 
$project['url'] . '<br />';
    
$handles[$key] = curl_init($project['url']);

    
curl_setopt($handles[$key], CURLOPT_TIMEOUT20);
    
curl_setopt($handles[$key], CURLOPT_CONNECTTIMEOUT20);
    
curl_setopt($handles[$key], CURLOPT_HEADERtrue);

    
curl_setopt($handles[$key], CURLOPT_AUTOREFERERtrue);
    
curl_setopt($handles[$key], CURLOPT_FAILONERRORtrue);
    
curl_setopt($handles[$key], CURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($handles[$key], CURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($handles[$key], CURLOPT_SSL_VERIFYPEERfalse);

    
curl_setopt($handles[$key], CURLOPT_FOLLOWLOCATIONtrue);  // true for test

    
curl_setopt($handles[$key], CURLINFO_EFFECTIVE_URLtrue);
    
curl_setopt($handles[$key], CURLINFO_HEADER_OUTtrue);
    
curl_setopt($handles[$key], CURLINFO_REDIRECT_COUNTtrue);
    
    
curl_multi_add_handle($mh$handles[$key]);
}

$running null;
do 
{
    
curl_multi_exec($mh$running);

while (
$running 0);

foreach (
$handles AS $key => $value)
{
    
$break      false;
    
$curl_error curl_error($value); // fetch error, if any

    
print_r($curl_error);
    echo 
'<br />';
    
print_r(curl_getinfo($value));
    echo 
'<br />';
    if (
strlen($curl_error) == 0)
    {            
        
print_r(curl_multi_getcontent($value));
        echo 
'<br />';
    }
    else
    {
        echo (
"error<br/>");
    }
}

Of kijk ik nu al dagen ergens overheen?

Ps testredirect.php is een script die meerdere redirects uitvoert.
Ps testerror.php zorgt voor een sleep van $_GET['x'] gegeven seconden!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 1 juni 2013 @ 21:51:53 #94
187069 slacker_nl
Sicko pur sang
pi_127301873
quote:
15s.gif Op zaterdag 1 juni 2013 12:47 schreef Chandler het volgende:
Heeft iemand een oplossing voor het volgende?
Dit heb je toch al een keertje eerder gedaan? Een paar posts geleden zelfs.

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
<?php
error_reporting
(E_ALL);

$projects = array('opn' => array("url" => "http://www.opperschaap.net"),
                  
'opn_not_found' => array("url" => "http://www.opperschaap.net/die"),
                  
'redir' => array("url" => "http://www.example.com"),
);
    
$mh curl_multi_init();
$handles = array();

$setopt_array = array( 
    
CURLOPT_TIMEOUT => 20
    
CURLOPT_CONNECTTIMEOUT => 20
    
CURLOPT_HEADER => true,

    
CURLOPT_AUTOREFERER => true,
    
CURLOPT_FAILONERROR => true,
    
CURLOPT_RETURNTRANSFER => true,
    
CURLOPT_SSL_VERIFYHOST => false,
    
CURLOPT_SSL_VERIFYPEER => false,

    
CURLOPT_FOLLOWLOCATION => true,  // true for test
);

foreach (
$projects AS $key => $project) {

    
printf("URL: %s\n"$project['url']);

    
$ch curl_init($project['url']);
    
curl_setopt_array($ch$setopt_array);

    
curl_multi_add_handle($mh$ch);
    
$handles[$key] = $ch;
}

$running null;
do 
{
    
curl_multi_exec($mh$running);

while (
$running 0); 

foreach (
$projects AS $key => $project) {
    print 
"$key\n";
    
$ch $handles[$key];
    
$curl_error curl_error($ch); // fetch error, if any

    
$curl_info = (curl_getinfo($ch));

    if (
$project['url'] != $curl_info['url']) {
        
printf("Redirected from %s to %s\n"$project['url'], $curl_info['url']);
    }   

    if (
$curl_info['http_code'] == 200) {
        
print_r(curl_multi_getcontent($ch));
    }   
    else {
        
printf("HTTP code not 200: %d\n"$curl_info['http_code']);
    }   
    print 
"\n";                                                                                                                                                                                                                                                                                               
}
?>
In theory there is no difference between theory and practice. In practice there is.
pi_127314702
Je hebt gelijk slacker_nl, maar omdat ik er echt niet uitkwam toch maar een extra post er over (en gelukkig zie ik nu waar ik de fout in ging!)

Thanks!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 2 juni 2013 @ 16:04:22 #96
319705 pascal08
dr. prof.
pi_127323578
Ik zit met een dilemma. Mijn zoekfunctie werkt met ajax en json. Ik zou POST en GET kunnen gebruiken. POST heeft als nadeel dat ik een formtoken moet meesturen ivm csrf en heeft volgens mij ook als nadeel dat er niets gecached kan worden. Met GET daarentegen zit ik met het probleem dat Codeigniter geen tekens zoals een apostrof tolereert. Ik weet dat het mogelijk is om dit uit te zetten, maar bij deze instelling staat duidelijk vermeldt dat je niets moet veranderen tenzij je weet waar je mee bezig bent, en daar zit het probleem, dat weet ik dus niet. :P

Google en andere grote sites werken met GET zag ik via de Chrome Console. Echter kan ik daar wel gewoon zoeken op een apostrof. De apostrof wordt dan omgezet in %27. Kan iemand mij uitleggen welke methode geschikter is voor mijn situatie en hoe ik eventueel veilig tekens zoals een apostrof in de URL toelaat bij een GET request?
pi_127326225
quote:
0s.gif Op zondag 2 juni 2013 16:04 schreef pascal08 het volgende:
Ik zit met een dilemma. Mijn zoekfunctie werkt met ajax en json. Ik zou POST en GET kunnen gebruiken. POST heeft als nadeel dat ik een formtoken moet meesturen ivm csrf en heeft volgens mij ook als nadeel dat er niets gecached kan worden.
De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag al :)

Wat betreft caching: daar zou ik niet te veel over nadenken. Premature optimalisatie en je kunt het op veel verschillende manieren/niveaus realiseren, zowel server als client-side.
quote:
Met GET daarentegen zit ik met het probleem dat Codeigniter geen tekens zoals een apostrof tolereert. Ik weet dat het mogelijk is om dit uit te zetten, maar bij deze instelling staat duidelijk vermeldt dat je niets moet veranderen tenzij je weet waar je mee bezig bent, en daar zit het probleem, dat weet ik dus niet. :P
Kwestie van op de juiste manier escapen.
URL Encode a string in jQuery for an AJAX request
Ook handig zijn php's urlencode en json_encode
quote:
Google en andere grote sites werken met GET zag ik via de Chrome Console. Echter kan ik daar wel gewoon zoeken op een apostrof. De apostrof wordt dan omgezet in %27. Kan iemand mij uitleggen welke methode geschikter is voor mijn situatie en hoe ik eventueel veilig tekens zoals een apostrof in de URL toelaat bij een GET request?
Gewoon GET gebruiken. De intentie achter GET is juist het ophalen van data van de server. POST, PUT en DELETE zijn ontwikkeld om data op de server te veranderen.
  zondag 2 juni 2013 @ 17:54:52 #98
319705 pascal08
dr. prof.
pi_127327153
quote:
0s.gif Op zondag 2 juni 2013 17:25 schreef zoem het volgende:

De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag al :)
Dit wist ik. :@

quote:
Kwestie van op de juiste manier escapen.
URL Encode a string in jQuery for an AJAX request
Ook handig zijn php's urlencode en json_encode
Hier had ik nog niet aan gedacht. :@ Ik ken die functie ook nog niet, dus ik moet even kijken of het resultaat daarvan wel door Codeigniter geaccepteerd wordt.

Ik ga eens kijken. Bedankt voor je reply. ;)

EDIT:
1.replace("'", "%27")
werkt. *O* Dat is tevens ook het enige speciale karakter waar ik op wilde zoeken, dus dit is top. Bedankt. _O_

[ Bericht 13% gewijzigd door pascal08 op 02-06-2013 18:19:37 ]
pi_127328287
Mooi om te horen dat het gelukt is ^O^
  dinsdag 4 juni 2013 @ 08:45:18 #100
267443 Cue_
Cuecumbergirl
pi_127390986
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
1update table set status = 90 where to_Char(act_starttime, 'YYYYIW') = '201318' 

Krijg ik de volgende foutmelding
1
2
3
4
FOUT in regel 1:
.ORA-03113: Einde-van-bestand op communicatiekanaal.
Proces-ID: 0
Sessie-ID: 1484 serienummer: 3872
act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.

Iemand enig idee hoe dit kan/veroorzaakt wordt?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')