abonnement Unibet Coolblue Bitvavo
pi_47972371
quote:
Op dinsdag 3 april 2007 17:37 schreef Boschkabouter het volgende:
Maakt het eigenlijk wat uit of je Apache of IIS gebruikt om PHP pagina's te draaien?
Ik heb namelijk interesse om eens wat PHP te gaan leren, maar geen zin om Apache te instaleren en te gebruiken naast IIS. (en vooral omdat ik geen ruk van dat apache snap.)
Apache is snel en gemakkelijk geïnstalleerd en die geef ik normaal dan ook de voorkeur. Aangezien ik momenteel echter ook met Visual Basic, ASP en .NET bezig ben zit ik vrijwel aan IIS vast gezien ASP daar voornamelijk op draait.
pi_47980490
Mensen,

Het is toch onmogelijk om middels PHP een fake IP adres te gebruiken als je bv via fsockopen gegevens verstuurd naar webservers?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_47995304
quote:
Op dinsdag 3 april 2007 21:29 schreef Chandler het volgende:
Mensen,

Het is toch onmogelijk om middels PHP een fake IP adres te gebruiken als je bv via fsockopen gegevens verstuurt naar webservers?
Nee. Je kan geen fake adres gebruiken om iets te versturen via fsockopen. fsockopen is gewoon een wrapper voor connect() en daarmee heb je die optie niet.
In de eerste 8bit van een IPv4 header staat o.a. source & destination IP adres en dat is dus afgeschermd voor normale applicaties zoals PHP e.d.
pi_48014890
Hey,

Ik ben bezig met een script en ik heb nu een foutmelding, deze is als volgt:

uitgevoerde query: SELECT * FROM tbl_inschrijving INNER JOIN tbl_artikelregel ON tbl_artikelregel.inschrijf_id = tbl_inschrijving.inschrijf_id WHERE inschrijf_id = 1 .
MySQL-foutnummer: 1052
MySQL-melding: Column 'inschrijf_id' in where clause is ambiguous

Weet iemand toevallig wat er dan fout is. De query ziet er als volgt uit:

$query = "SELECT * FROM tbl_inschrijving INNER JOIN tbl_artikelregel ON tbl_artikelregel.inschrijf_id = tbl_inschrijving.inschrijf_id WHERE inschrijf_id = $inschrijf_id";
  woensdag 4 april 2007 @ 19:16:46 #125
51748 H4ze
wait...what?
pi_48015204
Kijk is naar de inschrijf_id in je WHERE clause MySQL weet niet welke inschrijf_id hij nu precies moet pakken (aangezien inschrijf_id dus in meerdere tabellen voorkomt). FFtjes de tabelnaam er dus nog voorzetten.
*BURP*
pi_48015377
Och... dat ik daar zelf niet aan gedacht heb.. bedankt!!! het werkt
pi_48022326
oke vraagje:
als ik op een bepaalde site zoek krijg ik een lijst met matches, deze lijst wil ik importeren/invoegen in mijn eigen omgeving (die nog ongedefineerd is, dus lekker soepel)
wat wil ik precies:
ik tik in een zoek forumlier bij mijn site een naam in, er wordt door php een get request gedaan met de juiste url en vervolgens plukt hij de resultaten uit de gekregen pagina.
dit een voorbeeltje van een zoek term op de site:
http://www.animenewsnetwo(...)h.php?searchbox=love
  woensdag 4 april 2007 @ 22:07:40 #128
85514 ralfie
!Yvan eht nioj
pi_48022953
quote:
Op woensdag 4 april 2007 21:54 schreef mschol het volgende:
oke vraagje:
als ik op een bepaalde site zoek krijg ik een lijst met matches, deze lijst wil ik importeren/invoegen in mijn eigen omgeving (die nog ongedefineerd is, dus lekker soepel)
wat wil ik precies:
ik tik in een zoek forumlier bij mijn site een naam in, er wordt door php een get request gedaan met de juiste url en vervolgens plukt hij de resultaten uit de gekregen pagina.
dit een voorbeeltje van een zoek term op de site:
http://www.animenewsnetwo(...)h.php?searchbox=love
en wat is nu je vraag?
pi_48023760
quote:
Op woensdag 4 april 2007 22:07 schreef ralfie het volgende:

[..]

en wat is nu je vraag?
hoe ik dat voor elkaar kan krijgen
dat hij dus alleen de resultaten eruit pakt en dat ik deze vervolgens kan hergebruiken in mijn omgeving..
pi_48026298
quote:
Op woensdag 4 april 2007 22:24 schreef mschol het volgende:

[..]

hoe ik dat voor elkaar kan krijgen
dat hij dus alleen de resultaten eruit pakt en dat ik deze vervolgens kan hergebruiken in mijn omgeving..
En wat lukt je niet? Het downloaden van de pagina? Het parsen van de resultaten? Het opslaan van de resultaten? Het weergeven van de resultaten?
pi_48036737
quote:
Op woensdag 4 april 2007 23:24 schreef JeRa het volgende:

[..]

En wat lukt je niet? Het downloaden van de pagina? Het parsen van de resultaten? Het opslaan van de resultaten? Het weergeven van de resultaten?
ik weet dat er een functie voor was maar welke weet ik dus niet meer
(en op die manier kan ik nie eens beginnen )
pi_48037121
Hoe ik dat zou doen:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$lines 
file($showurl);

if (
$lines){
    foreach (
$lines as $line_num => $line){            
        if (
eregi("<a href="(.*)">(.*)</a>"$line$found)){
            
$name    $found[2];
            
$url     $found[1];
            echo 
$name " - " $url;
        }
    }
}
?>
  donderdag 5 april 2007 @ 12:26:22 #133
85514 ralfie
!Yvan eht nioj
pi_48038006
quote:
Op donderdag 5 april 2007 12:03 schreef Geqxon het volgende:
Hoe ik dat zou doen:
[ code verwijderd ]
twee problemen heb je dan wel:
1) eregi is veel trager als bijv preg_match_all
2) je neemt alle links mee, ook die van advertenties etc

Met andere woorden, probeer eens iets als

1
2
3
4
5
6
<?php
$contents
=file_get_contents('http://www.animenewsnetwork.com/encyclopedia/search.php?searchbox=love');
$to_match=substr($contents,($a=strpos($contents,'<!-- google_ad_section_start -->')),(strpos($contents,'<!-- google_ad_section_end -->')-$a));
preg_match_all('#<a href="(.*?)">(.*?)</a>#i',$to_match$matches);
var_dump($matches);
?>
pi_48038146
Ik had nog niet op de link geklikt, de eregi zoals ik hem heb pakt inderdaad alles. Het was puur een richtlijn

Verder is mijn voorbeeld uiteraard basic, om te laten zien hoe het kan. Verdere optimalisatie is een stap verder.
  donderdag 5 april 2007 @ 12:53:44 #135
85514 ralfie
!Yvan eht nioj
pi_48038945
quote:
Op donderdag 5 april 2007 12:30 schreef Geqxon het volgende:
Ik had nog niet op de link geklikt, de eregi zoals ik hem heb pakt inderdaad alles. Het was puur een richtlijn

Verder is mijn voorbeeld uiteraard basic, om te laten zien hoe het kan. Verdere optimalisatie is een stap verder.
je hebt gelijk, ik ben veel te aardig anderen hun werk te doen
pi_48041228
Non de ju, ik wist dat preg_match sneller was, maar waar ik nu mee bezig bent, daar scheelt het gewoon seconden

Ik vroeg mij alleen wel af of preg_match_all niet multiline kan werken, dus dat hij over meerdere regels naar het einde zoekt?
  donderdag 5 april 2007 @ 14:24:40 #137
85514 ralfie
!Yvan eht nioj
pi_48042335
ja, dat kan

met de 'm' modifier matchen ^ en $ begin en einde van de string, ipv de regel
met de 's' modifier matched . ook newlines
pi_48042999
Het wordt denk ik maar eens tijd voor een regex boek. Ik heb totaal geen problemen met PHP, maar van regular expressions wordt ik vaak knettergek
pi_48043384
Zo ga ik het nu toch echt lijn voor lijn met eregi doen
pi_48043763
@ralfie

De preg_* alternatieven voor ereg* functies zijn inderdaad vaak sneller, maar niet altijd. Zo heb ik ondervonden dat als je snel tekens wilt vervangen die niet in een subset van characters voorkomen ([^abc123etc]) de eregi véél sneller is dan de preg_replace
  donderdag 5 april 2007 @ 15:23:22 #141
85514 ralfie
!Yvan eht nioj
pi_48044479
quote:
Op donderdag 5 april 2007 15:02 schreef JeRa het volgende:
@ralfie

De preg_* alternatieven voor ereg* functies zijn inderdaad vaak sneller, maar niet altijd. Zo heb ik ondervonden dat als je snel tekens wilt vervangen die niet in een subset van characters voorkomen ([^abc123etc]) de eregi véél sneller is dan de preg_replace
interessant. Ben benieuwd of er een lijstje is met gevallen waarin ereg() sneller is als preg_replace? Heb met google in ieder geval niks gevonden.

Persoonlijk ga ik er gewoon van uit dat preg_* altijd sneller is, ik geloof niet dat ik ereg() ooit gebruikt heb
pi_48049561
Hoi,

Stel ik heb een klasse.
Met daarin in ieder geval een static (private) variabele en een static (public) method.

In mijn code roep ik op eens die method op zonder een object te maken. Is het dan mogelijk dat er een constructor uitgevoerd zal worden? Zodat die variabele dan een keer gezet zal worden, en daarna niet meer (check in de constructor)?

Dit alles, uiteraard, in PHP5.
pi_48049888
quote:
Op donderdag 5 april 2007 17:36 schreef CiQNiZ het volgende:
Hoi,

Stel ik heb een klasse.
Met daarin in ieder geval een static (private) variabele en een static (public) method.

In mijn code roep ik op eens die method op zonder een object te maken. Is het dan mogelijk dat er een constructor uitgevoerd zal worden? Zodat die variabele dan een keer gezet zal worden, en daarna niet meer (check in de constructor)?

Dit alles, uiteraard, in PHP5.
Voor zover ik weet ondersteunt PHP5 geen static constructors. Je zou het eventueel wél zo kunnen doen:
1
2
3
4
5
6
7
8
<?php
Voorbeeld
::waarde 3;

class 
Voorbeeld
{
    
public static $waarde;
}
?>
pi_48050232
@ralfie, Geqxon:

bedankt voor de voorbeeldjes, hiermee ga ik verder uitzoeken
pi_48050416
quote:
Op donderdag 5 april 2007 17:46 schreef JeRa het volgende:

[..]

Voor zover ik weet ondersteunt PHP5 geen static constructors. Je zou het eventueel wél zo kunnen doen:
[ code verwijderd ]
Ja... Maar...

Laat ik het anders zeggen...

Wat nou, als ik in diezelfde klasse nou eens 30 methodes heb! Die allemaal afhangen of die ene variabele gezet is, of niet. Nou zou ik het volgende kunnen doen:

1
2
3
4
5
6
7
<?php
//niet statisch, dus wel een object aanmaken:
$handle = new handler(); // zet de private var via de __construct()
$handle->execA();
$handle->execB();
//enz.
?>


Of dit:
1
2
3
4
5
6
7
<?php
//statisch, en eerst maar dan die check uitvoeren en variabele zetten:
handler::checkIt();
handler::execA();
handler::execB();
//enz.
?>


Dan werkt het zoals ik wil. Maar is dit te omzeilen (dat ik dus niet eerst die check hoef uit te voeren voordat ik een methode uit die klasse aanroep)?
pi_48050634
quote:
Op donderdag 5 april 2007 17:59 schreef CiQNiZ het volgende:

[..]

Dan werkt het zoals ik wil. Maar is dit te omzeilen (dat ik dus niet eerst die check hoef uit te voeren voordat ik een methode uit die klasse aanroep)?
Als je 30 methodes in een class hebt die aangeroepen kunnen worden terwijl je variabele niet geïnitialiseerd is moet je je toch eens ernstig afvragen of je wel het goede design te pakken hebt maar waarom lukt het volgende niet?

1
2
3
4
5
6
<?php
class Voorbeeld
{
    
public static $waarde 2;
}
?>


Op die manier is je waarde altijd geïnitialiseerd en hoef je niets te checken in je methodes. Wil je echter een object initialiseren in die variabele, dan zul je het moeten doen op de manier die ik in mijn vorige post beschreef
pi_48053738
quote:
Op donderdag 5 april 2007 18:07 schreef JeRa het volgende:

[..]

Als je 30 methodes in een class hebt die aangeroepen kunnen worden terwijl je variabele niet geïnitialiseerd is moet je je toch eens ernstig afvragen of je wel het goede design te pakken hebt maar waarom lukt het volgende niet?
[ code verwijderd ]

Op die manier is je waarde altijd geïnitialiseerd en hoef je niets te checken in je methodes. Wil je echter een object initialiseren in die variabele, dan zul je het moeten doen op de manier die ik in mijn vorige post beschreef
Hmm ja, met constante waardes ja.

1
2
3
4
<?php
// dus dit gaat nooit werken ;)
private static $handle = self::getHandle();
?>


Nou is het wel zo dat in elke method eenzelfde andere method (uit een andere klasse) uitgevoerd wordt. Ik zou in die method dan die variabel kunnen controleren en als het dan nodig is zetten.

Dus
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
<?php
class stranger
{
  
private static $handle;

  
public static function handler()
  {
    if (empty(
self::handle)) {
      
self::handle = somereallyspecialclass::getHandle();
    }
  }

  
public static function execA()
  {
    
someclass::specialExec(0,10);
    
doSomething();
  }

  
public static function execB()
  {
    
someclass::specialExec(60, 100);
    
doSomethingElse();
    
doSomethingMore();
    
takeOverTheWorld();
  }
}

class
someclass
{
  
public static function specialExec($x, $y)
  {
    
// tada:
    
stranger::handler();

    
doSomethingWithXandY($x, $y);
    
doSomethingMoreWith($x, stranger::handle);
    
doSomethingMoreWith($y, stranger::handle);
  }
}

// en in normale code ziet het er dan zo uit:
stranger::execA();
stranger::execB();
stranger::execA();
stranger::execB();
/* precies hoe ik het hebben wil dus.
** de methodes worden normaal opgeroepen en de
** (private en static) $handle wordt gewoon geupdate
*/
?>


Uiteraard is dit niet echt een bruikbaar voorbeeld, en een beetje raar, maar je moet toch wat met een voorbeeld he.

Het gaat er gewoon om dat bij uitbreidingen eventueel gewoon niet nagedacht hoeft te worden over die $handle. Als je een methode uit die klasse oproept dan moet dat gewoon automatisch gaan.

Volgens dit concept moet het gewoon werken, echter, verdient het wmb niet echt een schoonheidsprijs.
pi_48055570
quote:
Op donderdag 5 april 2007 19:50 schreef CiQNiZ het volgende:

[..]

Hmm ja, met constante waardes ja.
Tja, je gaf nergens een definitie
quote:
Het gaat er gewoon om dat bij uitbreidingen eventueel gewoon niet nagedacht hoeft te worden over die $handle. Als je een methode uit die klasse oproept dan moet dat gewoon automatisch gaan.

Volgens dit concept moet het gewoon werken, echter, verdient het wmb niet echt een schoonheidsprijs.
Probeer eens voor jezelf duidelijk te maken wat je precies wilt bereiken (en of het design tot dan toe wel afdoende is) en zet de scenario's uit hier heb je wat voorbeelden die volgens mij het dichtste bij jouw probleem liggen:

1) Het private static object mag altijd geïnitialiseerd worden en verandert niet in de loop van de tijd: doe gewoon zoiets:

1
2
3
4
5
6
7
8
<?php
StaticVoorbeeld
::mijnObject = new DOTTObject();

class
StaticVoorbeeld
{
    
public static $mijnObject;
}
?>


2) Het private static object mag niet worden geïnitialiseerd als er geen methodes van de static class worden aangeroepen: elke methode moet een initialisatie aanroepen

3) Het private static object moet kunnen veranderen tussen twee aanroepen van methodes van de static class: elke methode moet een initialisatie aanroepen

Voor 2) en 3) kun je ook een iets minder nette oplossing verzinnen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class StaticVoorbeeld
{
    
private static $mijnObject;

    
public function roepFunctieAan($functienaam, $args)
    {
        
// Initialiseer object
        
StaticVoorbeeld::initialiseerMijnObject();

        
// Roep functie aan
        
call_user_func_array('StaticVoorbeeld::' . $functienaam, $args); // ofzo
    
}

    
// overige methodes
}

Staticvoorbeeld::roepFunctieAan('purpleTentacle', array('take', 'over', 'the', 'world!'));
?>
pi_48056182
quote:
Op donderdag 5 april 2007 20:35 schreef JeRa het volgende:

[..]

Tja, je gaf nergens een definitie
[..]

Probeer eens voor jezelf duidelijk te maken wat je precies wilt bereiken (en of het design tot dan toe wel afdoende is) en zet de scenario's uit hier heb je wat voorbeelden die volgens mij het dichtste bij jouw probleem liggen:

1) Het private static object mag altijd geïnitialiseerd worden en verandert niet in de loop van de tijd: doe gewoon zoiets:
[ code verwijderd ]
Klopt. Ik gaf nergens een definitie .

Het gaat dus om 1. Eenmaal geinitialiseerd is geinitialiseerd. Done = done. Jouw methode kan natuurlijk wel, maar ik wil (omdat dit de enige klasse is waarvan geen object gemaakt wordt), ook zo min mogelijk code om de daadwerkelijke 'aanspreekcode' (de daadwerkelijke code die de functies in de klasses tussen de HTML door zeg maar implementeerd). Bij eventuele uitbreidingen of meerdere mensen die aan het project werken wil ik gewoon dat als je die methode nodig hebt, JIJ niet eerst moet kijken of die static 'handle' (om het zo maar weer even te noemen) nodig is of niet. Het is gewoon onnodige code. En past m.i. minder mooi in een mooi schema (wat ik nu aan het opzetten ben voordat ik daadwerkelijk begin te coden straks).

Draaf ik nu gewoon te ver door? Stel ik te veel (strenge) eisen aan mijzelf/de code? Is het gewoon heel erg vies en ranzig, of heb ik mijzelf nu goedgepraat?

Dit is mijn eerste serieuze poging tot OOP in PHP5 mag ik er wel even bij zeggen...
pi_48058579
@CiQNiZ
quote:
Het gaat dus om 1. Eenmaal geinitialiseerd is geinitialiseerd. Done = done.
Dan kun je toch prima die eerste methode plaatsen in dezelfde include als de static class zelf? Maar wat ik een beetje mis in dit verhaal is de semantiek, het idee achter een grote class met 30 static methodes. In PHP is (mijns inziens) vaak minder OOP nodig dan wordt aangehaald, of in ieder geval, in mindere mate. Graag hoor ik het 'waarom' achter de static methodes en de handle
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')