abonnement Unibet Coolblue Bitvavo
pi_57759777
@slacker_nl: waarom geef je dan geen array mee? en ga je deze benutten?

1
2
3
4
5
6
7
8
9
10
11
<?php
function test($in = array())
{
    foreach(
$in AS $x => $y)
    {
    
// enzo
    
}
}

test(array(1,2,3,4,5,6));
?>


Tevens een vraag, hoe kun je met PDO zonder een count te doen uitlezen hoeveel resultaten er zijn?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 1 april 2008 @ 13:51:54 #152
62215 qu63
..de tijd drinkt..
pi_57759941
Goed, ik heb nu zelf dit weten te brouwen, maar het kan vast korter :P
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$q 
"SELECT * FROM meldingen";
$res=mysql_query($q);
while(
$row mysql_fetch_array($res))
{
  
$q2 "SELECT naam FROM user WHERE id = '".$row[2]."' LIMIT 1";
  
$naam2 mysql_query($q2);
  
$naam3 mysql_fetch_array($naam2);
  
$q3 "SELECT naam FROM user WHERE id = '".$row[1]."' LIMIT 1";
  
$naam4 mysql_query($q3);
  
$naam5 mysql_fetch_array($naam4);
  echo 
"<tr>";
    echo 
"<td>".date("d-m-Y H:i",$row[5])."</td>";
    echo 
"<td>".$naam3[0]."</td>";
    echo 
"<td>".$naam5[0]."</td>";
    echo 
"<td><a href=\"meldingen.php?id=".$row[0]."\">".$row[3]."</a></td>";
//    echo "<td>".$row[4]."</td>";
//    echo "<td>".$row[6]."</td>";
    
echo "<td>".$row[7]."</td>";
  
"</tr>";
}
?>
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  dinsdag 1 april 2008 @ 16:52:57 #153
187069 slacker_nl
Sicko pur sang
pi_57762932
Een perl_join functie. Deze functie kan arrays aan en strings.. hashes zijn nog niet ondersteund, maar dat komt wel in v2.

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
<?php
function p_join() {

    
$args           func_get_args();
    
$args_count func_num_args();

    if (
$args_count 1) {
        
$sep array_shift($args);
        
$retVal array_shift($args);

        if (
is_array($retVal)) {
            
$retVal join($sep$retVal);
        }

        foreach (
$args as $val) {
            if (
is_array($val)) {
                
$val join($sep$val);
            }
            
$retVal .= sprintf("%s%s"$sep$val);
        }
        return 
$retVal;
    }
    
trigger_error("p_join requires at least 2 parameters"E_USER_ERROR  );
    return 
null;
}
?>


[ Bericht 9% gewijzigd door slacker_nl op 01-04-2008 17:17:15 ]
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 1 april 2008 @ 17:40:05 #154
187069 slacker_nl
Sicko pur sang
pi_57763599
quote:
Op dinsdag 1 april 2008 13:43 schreef Chandler het volgende:
@slacker_nl: waarom geef je dan geen array mee? en ga je deze benutten?
[ code verwijderd ]
Uhm... Ik snap je vraag niet.
quote:
Tevens een vraag, hoe kun je met PDO zonder een count te doen uitlezen hoeveel resultaten er zijn?
Denk het niet he. Je zal eerst alle resultsets moeten ophalen voordat je weet hoeveel records je ophaalt. Of een query ervoor doen met een count, maar of dat nou zo tof is weet ik ook niet.

Maar als je DB het ondersteund: http://nl3.php.net/manual/en/function.PDOStatement-rowCount.php
In theory there is no difference between theory and practice. In practice there is.
pi_57764537
Wat is dan het voordeel van PDO? (ten opzichte van de mysql_ functies?) nu moet ik dus 2 queries doen om te kijken hoeveel data er is en dan de data uitlezen om het te gebruiken!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 1 april 2008 @ 18:54:10 #156
187069 slacker_nl
Sicko pur sang
pi_57764724
Ok, I'll bite. Waarom moet je eerst weten hoeveel records je ophaalt voordat je er wat mee gaat doen?
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 1 april 2008 @ 19:00:21 #157
62215 qu63
..de tijd drinkt..
pi_57764824
quote:
Op dinsdag 1 april 2008 16:52 schreef slacker_nl het volgende:
Een perl_join functie. Deze functie kan arrays aan en strings.. hashes zijn nog niet ondersteund, maar dat komt wel in v2.
[ code verwijderd ]
Als die voor mij bedoelt was, hou ik het lekker bij mn ouder scriptje
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  dinsdag 1 april 2008 @ 19:07:40 #158
62215 qu63
..de tijd drinkt..
pi_57764948


Iemand enig idee hoe ik dit kan voorkomen/oplossen?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  dinsdag 1 april 2008 @ 19:28:39 #159
85514 ralfie
!Yvan eht nioj
pi_57765356
quote:
Op dinsdag 1 april 2008 19:07 schreef qu63 het volgende:
[ afbeelding ]

Iemand enig idee hoe ik dit kan voorkomen/oplossen?
je query proper escapen... (bijv dmv mysql_escape_string() )
pi_57765414
quote:
Op dinsdag 1 april 2008 19:00 schreef qu63 het volgende:

[..]

Als die voor mij bedoelt was, hou ik het lekker bij mn ouder scriptje
Houd je mond idd maar. Ik zie nergens in die post een referentie naar jou probleem/code.
  dinsdag 1 april 2008 @ 19:34:59 #161
65490 whoops
Home is where the heart is...
pi_57765465
quote:
Op dinsdag 1 april 2008 18:42 schreef Chandler het volgende:
Wat is dan het voordeel van PDO? (ten opzichte van de mysql_ functies?) nu moet ik dus 2 queries doen om te kijken hoeveel data er is en dan de data uitlezen om het te gebruiken!
Volgens mij is een van de voordelen (heb deze thread verder niet gelezen) dat je makkelijker van DB kan switchen. Je doet alles met PDO en bij het wijzigen van je DB hoef je alleen je DSN te veranderen.

2cts...
In the beginning, the universe was created. This made a lot of people very angry and has been widely regarded as a bad move.
  dinsdag 1 april 2008 @ 19:58:31 #162
62215 qu63
..de tijd drinkt..
pi_57765863
quote:
Op dinsdag 1 april 2008 19:28 schreef ralfie het volgende:

[..]

je query proper escapen... (bijv dmv mysql_escape_string() )
hmz, zit wat in ja

niet mn eigen cms, dus t was ff zoeken naar de fout

bedankt!
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_57766565
quote:
Op dinsdag 1 april 2008 19:34 schreef whoops het volgende:

[..]

Volgens mij is een van de voordelen (heb deze thread verder niet gelezen) dat je makkelijker van DB kan switchen. Je doet alles met PDO en bij het wijzigen van je DB hoef je alleen je DSN te veranderen.

2cts...
Ja ongetwijfeld, maar wat is het nut nu voor de gewone PHP gebruiker om nu al van PDO gebruik te maken aangezien 90% van alle PHP gebruikers toch standaard MySQL databases gebruiken!. Ik zie het voordeel namelijk absoluut niet. Ik mis functies die ik eerst wel kon gebruiken
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 1 april 2008 @ 21:26:37 #164
65490 whoops
Home is where the heart is...
pi_57767372
quote:
Op dinsdag 1 april 2008 20:39 schreef Chandler het volgende:

[..]

Ja ongetwijfeld, maar wat is het nut nu voor de gewone PHP gebruiker om nu al van PDO gebruik te maken aangezien 90% van alle PHP gebruikers toch standaard MySQL databases gebruiken!. Ik zie het voordeel namelijk absoluut niet. Ik mis functies die ik eerst wel kon gebruiken
Ten eerste moet je vooral gebruiken wat voor jou het beste werkt, wat die keuze ook is

Zelf ben ik van mening dat je altijd bereid moet zijn op eventuele wijzigingen, zeker wat dit betreft. Je weet nooit wat voor DB's je in de toekomst tegenkomt. En dan is PDO echt niet de enige manier om dat te doen, je kan ook gewoon zelf een generieke wrapper schrijven waarmee je meerdere DB's kan aanspreken. Ik neig er naar om steeds meer SQLite DB's te gebruiken op plekken waar het gebruik van een MySQL server teveel overhead is. Hiervoor is PDO ideaal want als ik het project moet opschalen kan ik het altijd eenvoudig naar MySQL of Oracle porten. 1 regel aanpassen en gaan...

Het feit dat het Object Oriented is kan een keuze zijn om voor PDO te kiezen. Als je hele project OO geprogrammeerd is het wel zo netjes om ook je DB zo te benaderen.

Prepared statements zijn erg goed. Ik heb er zelf alleen maar even aan geroken maar het biedt veel meer mogelijkheden over het handmatig queries samenstellen. Om met de beveiliging te beginnen?

Snap je van bovenstaande punten de voordelen echt niet, ookal gaan die voordelen voor jou op dit moment misschien niet op?
In the beginning, the universe was created. This made a lot of people very angry and has been widely regarded as a bad move.
pi_57771860
Het grootste voordeel van PDO is wat mij betreft dat je geparameteriseerde query's kunt gebruiken. Daarmee vermijd je het gevaar van sql injection. Je hebt dan dus geen last meer van problemen zoals die van qu63. Ik vind geparameteriseerde query's meestal beter leesbaar dan query's met telkens mysql_escape_string() er tussen.
Verder sluit 't ook beter aan bij hoe ik query's bouw in .NET, waar ik dagelijks mee werk.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_57772625
p_join is klaar.

Hij doet vrijwel hetzelfde als de implode en/of join van PHP, echter accepteert p_join naast arrays ook hashes en strings. In elke willekeurige volgorde. De functie "print" de arrays/hashes (in PHP zijn ze hetzelfde datatype) niet recursief. Je zal 'Array' in je output zien in dat geval. Dit is ook de reden dat tijdens de join op reguliere arrays error reporting is aangepast.

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
<?php
/* is_assoc_array and is_sequential_array are STOLEN from:
 * http://nl3.php.net/manual/en/function.is-array.php#73505 */
function is_assoc_array($var) {
        return (
array_merge($var) !== $var || !is_numeric(implode(array_keys($var))));
}

function 
is_sequential_array($var) {
        return (
array_merge($var) === $var && is_numeric(implode(array_keys($var))));
}

function 
_p_join_assoc($sep$hash) {
        
$result "";
        foreach (
$hash as $k => $v) {
                
$result .= $sep $k .  $sep $v ;
        }
        return 
$result;
}

function 
_p_join_array($sep$array) {
        
# Turn off notices and return to the old loglevel once we're done.
        # This is because we stringify an array in some cases..
        
$old_error_reporting error_reporting(E_ALL E_NOTICE);
        
$result join($sep$array);
        
error_reporting($old_error_reporting);
        return 
$result;
}

function 
p_join() {

        
$args func_get_args();

        if (
count($args) > 1) {
                
$result     "";
                
$sep array_shift($args);

                foreach (
$args as $val) {
                        if (
is_array($val)) {
                                if (
is_assoc_array($val)) {
                                        
$result .= _p_join_assoc($sep$val);
                                } else {
                                        
$result .= $sep _p_join_array($sep$val);
                                }
                                continue;
                        }
                        
$result .= $sep $val;
                }
                
# $result will always start with a $sep, so remove it..
                
return substr_replace($result"" ,0strlen($sep));
        }

        
trigger_error(sprintf("%s requires at least 2 parameters",
          
__FUNCTION__), E_USER_WARNING);
        return 
null;
}

/* En een paar voorbeelden, inclusief een gratis warning */


print p_join(",""string", array("Key" => "Value""Key 2" => "Value 2"),
  array(
"Hello", array("in""hello""world"), "array"), "string 2") . "\n";

/* let op, print de indices uit van alle elemente in deze mixed array */
print p_join(",", array(1,2,"Green" => "Apple" , array(1,2))) . "\n";

print 
"Warning.. ";
print 
p_join(",");
?>


Output:
string,Key,Value,Key 2,Value 2,Hello,Array,array,string 2
0,1,1,2,Green,Apple,2,Array
Warning..

Warning: p_join requires more then 1 parameter in <file> on line <line_no>

[ Bericht 4% gewijzigd door slakkie op 02-04-2008 23:40:12 ]
pi_57773322
De functie zal een array geven als je "/" als eerst parameter gebruikt
(Waarom staat die regexp replace er eigenlijk in?)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_57773344
Ik snap het nu van PDO, maar die functies zoals prepare zou je zelf ook kunnen schrijven toch? want voorbeelden zoals :name is gewoon search and replace! maar goed... ik zal mij er eens nog wat dieper in gaan verdiepen...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_57773707
quote:
Op woensdag 2 april 2008 07:56 schreef Chandler het volgende:
Ik snap het nu van PDO, maar die functies zoals prepare zou je zelf ook kunnen schrijven toch? want voorbeelden zoals :name is gewoon search and replace! maar goed... ik zal mij er eens nog wat dieper in gaan verdiepen...
Nee, PDO zal voor RDBMS'en die prepared statements ondersteunen de parameterized query naar de server sturen die ze alvast kan verwerken en kan plannen (= bekijken hoe de query uitgevoerd gaat worden).

Stel dat je er niet onderuit komt om één query duizend keer uit te voeren, dan kun je 'm beter preparen en vervolgens duizend keer executen met verschillende parameters
  woensdag 2 april 2008 @ 10:50:22 #170
187069 slacker_nl
Sicko pur sang
pi_57775413
quote:
Op woensdag 2 april 2008 07:50 schreef SuperRembo het volgende:
(Waarom staat die regexp replace er eigenlijk in?)
Vanwege de loop die noodzakelij is om de hash te kunnen printen. Daarin wordt $sep . $key . $sep . $value aan $result toegekend. Dus op het moment dat je $result print krijg je ',key,value'. Daarom moet ik de eerste separator verwijderen en dat doen we in dit geval met een regexp. Easy does it.
quote:
De functie zal een array geven als je "/" als eerst parameter gebruikt
Deze mis ik Maar kan volgens mij wel problemen opleveren in de regexp dus moet dat ff testen...

Gaf problemen met de regexp, gekozen voor de volgende oplossing:

Volgende is vervangen:

$result .= _p_join_assoc($sep, $val);
$result = preg_replace("/^$sep/", "", $result);

Door:

$result = substr_replace( _p_join_assoc($sep, $val), "" ,0, strlen($sep));

[ Bericht 7% gewijzigd door slacker_nl op 02-04-2008 11:22:31 ]
In theory there is no difference between theory and practice. In practice there is.
pi_57778216
quote:
Op woensdag 2 april 2008 10:50 schreef slacker_nl het volgende:
[..]
Vanwege de loop die noodzakelij is om de hash te kunnen printen. Daarin wordt $sep . $key . $sep . $value aan $result toegekend. Dus op het moment dat je $result print krijg je ',key,value'. Daarom moet ik de eerste separator verwijderen en dat doen we in dit geval met een regexp. Easy does it.
[..]
Dan kan je die extra $sep er aan het eind ook af halen. Dan heb je geen speciale behandeling nodig voor het eerste item. (Scheelt een stuk (bijna) dubbele code).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_57780678
Vraagje, waarom mag het volgende niet

1
2
3
4
function getHost ($ip = $_SERVER['REMOTE_ADDR'])
{
    // lees gebruikershost uit
}


en dit wel

1
2
3
4
function getHost ($ip = "ipadres")
{
    // lees gebruikershost uit
}
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 2 april 2008 @ 15:59:11 #173
187069 slacker_nl
Sicko pur sang
pi_57781837
quote:
Op woensdag 2 april 2008 13:18 schreef SuperRembo het volgende:

[..]

Dan kan je die extra $sep er aan het eind ook af halen. Dan heb je geen speciale behandeling nodig voor het eerste item. (Scheelt een stuk (bijna) dubbele code).
Je hebt gelijk, ik had een andere opvatting in bepaalde situaties, maar die bleken onterecht te zijn. Thnx, heb het nu aangepast. Zal vanavond thuis wel ff de post aanpassen, de codebase is nu een stuk kleiner geworden.

[ Bericht 16% gewijzigd door slacker_nl op 02-04-2008 16:05:35 ]
In theory there is no difference between theory and practice. In practice there is.
  woensdag 2 april 2008 @ 16:02:10 #174
37869 TieMeZ
Eigen negers eerst!
pi_57781895
quote:
Op woensdag 2 april 2008 15:07 schreef Chandler het volgende:
Vraagje, waarom mag het volgende niet
[ code verwijderd ]

en dit wel
[ code verwijderd ]



moet een scalar zijn

http://nl.php.net/manual/(...)ns.arguments.default

quote:
The default value must be a constant expression, not (for example) a variable or class member.
pi_57782164
Is het mooi werk als je een site maakt wat als volgt in elkaar steekt:

Je hebt een index.php.
In die index include je 3 dingen:
-clock
-side_menu
-data
deze drie dingen stop je in een mapje genaamd 'scripts'.
Die side_menu en data zijn 2 switch opstellingen die diverse menu's + bijbehorende tekst bevatten.

Dus eigenlijk gebruik ik in de index include scriptjes en dan bij side_menu en data weer.
Is dat ok?

Hoe kan ik mappen en pagina's beveiligen? Bijvoorbeeld dat je niet in mappen kan kijken als je dat in de url typt en pagina's waarvan de link niet op de site staan. Moet ik dan werken met array's?

[ Bericht 12% gewijzigd door GioStyle op 02-04-2008 16:21:40 ]
  woensdag 2 april 2008 @ 16:36:32 #176
187069 slacker_nl
Sicko pur sang
pi_57782627
Zet je includes buiten de "webserver". Dat wil zeggen, op een locatie waar de webserver geen rechten heeft om files te lezen.
Of scherm het af met een .htaccess.
In theory there is no difference between theory and practice. In practice there is.
pi_57782965
quote:
Op woensdag 2 april 2008 16:36 schreef slacker_nl het volgende:
Zet je includes buiten de "webserver". Dat wil zeggen, op een locatie waar de webserver geen rechten heeft om files te lezen.
Of scherm het af met een .htaccess.
Hmm.. Ik heb bijvoorbeeld Word documenten in een mapje 'documents' genaamd geplaatst.
En als je dan in de url typt website/documents dan zie je dat hele map inclusief inhoud. Dat wil ik dus verbieden en dan moet ik die bestanden buiten de webserver plaatsen?
  woensdag 2 april 2008 @ 17:02:05 #178
62215 qu63
..de tijd drinkt..
pi_57783166
quote:
Op woensdag 2 april 2008 16:51 schreef GioStyle het volgende:

[..]

Hmm.. Ik heb bijvoorbeeld Word documenten in een mapje 'documents' genaamd geplaatst.
En als je dan in de url typt website/documents dan zie je dat hele map inclusief inhoud. Dat wil ik dus verbieden en dan moet ik die bestanden buiten de webserver plaatsen?
je kan ook een lege index.php of index.html maken, dan laat je webserver alleen die pagina zien (dis dus leeg is)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_57783341
Als er helemaal geen directory's gelist mogen worden, en je dus alles via links wilt aanbieden, dan kun je natuurlijk met apache-instellingen directory listing verbieden
  woensdag 2 april 2008 @ 17:13:48 #180
187069 slacker_nl
Sicko pur sang
pi_57783414
Directory listings en index.html's plaatsen verhinderd niemand om de files alsnog op te vragen... Als je niet wilt dat mensen die files kunnen lezen moet je dat expliciet configgen.
In theory there is no difference between theory and practice. In practice there is.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')