abonnement Unibet Coolblue Bitvavo
pi_48060126
Hola, ik heb deze functie geschreven:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function input_dag($dag){
    
$output "
        <select name="
dag">
            <option value="">dag</option>"
;
            
    for ( 
$day 1$day <= 31$day += 1) {
        if(
$day == $dag) { $output .= "
                <option value="
$day" selected>$day</option>";}
        else { 
$output .= "
                <option value="
$day">$day</option>";}
    }

    
$output .= "
        </select>"
;
    return 
$output;
}
?>


Maar zou graag willen dat de dagen 1 t/m 9 met een voorloop nul getoond zouden worden. Iemand een idee hoe ik dit voor elkaar krijg?
pi_48060335
ik heb toevallig zoiets vandaag gedaan, maar dat betrof wel een string: http://nl3.php.net/strpad
Het lijkt me dat hier ook wel een numerieke functie voor zal zijn?
pi_48061043
De sprintf()-functie is daar ideaal voor
pi_48061389
Kijk, daar kan ik geloof ik wel wat mee
pi_48067230
De oplossing was:
1
2
3
<?php
$value 
sprintf("%02s",$day);
?>
pi_48076784
Hoe kan ik een bestand voor een bepaalde tijd geupload hebben? Dus iemand upload een foto, word verkleint en krijg die weer voorgeschoteld in de browser, en daarna word de afbeelding van de server verwijderd.
pi_48077438
quote:
Op vrijdag 6 april 2007 12:57 schreef super-muffin het volgende:
Hoe kan ik een bestand voor een bepaalde tijd geupload hebben? Dus iemand upload een foto, word verkleint en krijg die weer voorgeschoteld in de browser, en daarna word de afbeelding van de server verwijderd.
Na hij verkleind is, en je hem niet nodig hebt:

1
2
3
<?php
unlink
($filename);
?>


:)
pi_48077599
Gelijk nog een vraagje: Ik wil graag een XML achtig bestand parsen, en met eregi gaat dat dus te traag. De opbouw is in de trant van:
1
2
3
4
<persoon>
<voornaam>Hans</voornaam>
<achternaam>Anders</achternaam>
</persoon>


Op het moment kijk ik lijn voor lijn wat voor data de lijn bevat, maar dat is dus behoorlijk traag. Ik zat zelf te denken aan een preg_match_all op <persoon>(*.)</persoon>, en binnen de array van matches te preg_matchen op <voornaam(*.)</voornaam>. Ik ben alleen totaal geen held als het op regexs en preg_match neer komt, dus heeft iemand misschien een klein duwtje in de goede richting? Alvast bedankt :)
pi_48078305
quote:
Op vrijdag 6 april 2007 13:20 schreef Geqxon het volgende:
Gelijk nog een vraagje: Ik wil graag een XML achtig bestand parsen, en met eregi gaat dat dus te traag. De opbouw is in de trant van:
[ code verwijderd ]

Op het moment kijk ik lijn voor lijn wat voor data de lijn bevat, maar dat is dus behoorlijk traag. Ik zat zelf te denken aan een preg_match_all op <persoon>(*.)</persoon>, en binnen de array van matches te preg_matchen op <voornaam(*.)</voornaam>. Ik ben alleen totaal geen held als het op regexs en preg_match neer komt, dus heeft iemand misschien een klein duwtje in de goede richting? Alvast bedankt
Optie 1: http://nl2.php.net/XML

Optie 2: inderdaad met regular expressions, je hebt de punt en de asterisk verkeerd om staan:

#<voornaam>(.*)</voornaam>#Ui
pi_48078380
Ik ben al met de XML parser aan de gang gegaan, maar in verband met een database koppeling, en omdat mijn file vrij simpel is, wil ik het het liefst zelf parsen

Ik ga even met optie twee aan de slag, bedankt!

Edit:

1
2
3
4
5
<?php
$pslfile 
file_get_contents("/files/persoonlijst.psl");
preg_match_all('#<persoon>(.*)</persoon>#Ui',$pslfile$output);
print_r($output);
?>



Dit is waar ik zelf aan zat te denken, alleen vindt hij daar niks op. En ja, het laden van $pslfile gaat prima. Wat doe ik hier eigenlijk fout?

[ Bericht 19% gewijzigd door Geqxon op 06-04-2007 13:50:50 ]
  FOK!-Schrikkelbaas vrijdag 6 april 2007 @ 14:01:13 #161
1972 Swetsenegger
Egocentrische Narcist
pi_48078898
mysql -> mssql migratie probleempje.

Ik heb een table:
1
2
3
4
5
menu_id  |  name  |  lft  |  rgt  |
---------+--------+-------+-------+ 
    1    | test   |   0   |   5   |
    2    | child  |   1   |   2   |
    3    | child2 |   3   |   4  |


Waarmee je een hierarchisch model kan bouwen.

In mysql betrek je alle nodes in de juiste hierarchische volgorde met de volgende query:

1
2
3
4
5
6
SELECT parent.name AS parentname, node.menu_id, node.name, node.lft, node.rgt, 
       COUNT( parent.name ) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.menu_id
       ORDER BY node.lft


In mssql krijg ik daarmee echter de volgende foutmelding(en)

1
2
3
4
Column 'parent.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Column 'node.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Column 'node.lft' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Column 'node.rgt' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


En ik ben even volledig blanco hoe ik dat kan oplossen. :{
Iemand een bijdrage?
  vrijdag 6 april 2007 @ 14:08:08 #162
85514 ralfie
!Yvan eht nioj
pi_48079116
quote:
Op vrijdag 6 april 2007 13:44 schreef Geqxon het volgende:
Ik ben al met de XML parser aan de gang gegaan, maar in verband met een database koppeling, en omdat mijn file vrij simpel is, wil ik het het liefst zelf parsen

Ik ga even met optie twee aan de slag, bedankt!

Edit:
[ code verwijderd ]

Dit is waar ik zelf aan zat te denken, alleen vindt hij daar niks op. En ja, het laden van $pslfile gaat prima. Wat doe ik hier eigenlijk fout?
gebruik de s modifier om ervoor te zorgen dat . ook newlines matched. Dat doet ie standaard niet
pi_48079161
quote:
Op vrijdag 6 april 2007 14:08 schreef ralfie het volgende:

[..]

gebruik de s modifier om ervoor te zorgen dat . ook newlines matched. Dat doet ie standaard niet
De /s-modifier is voor de punt, die matcht vervolgens ook newlines. Maar ik mag hopen dat er geen ouders zijn geweest die hun kind met een newline in hun voornaam hebben laten registreren op het gemeentehuis
pi_48079219
quote:
Op vrijdag 6 april 2007 14:01 schreef Swetsenegger het volgende:
mysql -> mssql migratie probleempje.

Ik heb een table:
[ code verwijderd ]

Waarmee je een hierarchisch model kan bouwen.

In mysql betrek je alle nodes in de juiste hierarchische volgorde met de volgende query:
[ code verwijderd ]

In mssql krijg ik daarmee echter de volgende foutmelding(en)
[ code verwijderd ]

En ik ben even volledig blanco hoe ik dat kan oplossen.
Iemand een bijdrage?
Er is een simpele regel in SQL-land die door MySQL absoluut niet nageleefd wordt maar waar je je waar mogelijk wel aan zou moeten houden en hij luidt:

Bij een GROUP BY moet je alle kolomnamen die je niet in een aggregaatfunctie gebruikt maar wel wilt ophalen noemen.

Dus het volgende gaat fout:
1
2
3
SELECT a, b, c
FROM tabel voorbeeld
GROUP BY b


En het volgende gaat goed:
1
2
3
SELECT MAX(a), b, c
FROM tabel voorbeeld
GROUP BY b, c
pi_48079387
quote:
Op vrijdag 6 april 2007 14:09 schreef JeRa het volgende:

[..]

De /s-modifier is voor de punt, die matcht vervolgens ook newlines. Maar ik mag hopen dat er geen ouders zijn geweest die hun kind met een newline in hun voornaam hebben laten registreren op het gemeentehuis
"Mijn kind heet Hans backslash n Anders"

Ik wist eerst even niet wat je met die s-modifier bedoelt, maar ik heb hem er simpelweg achter geplakt en het werkt nu. Nu rijst bij mij weer de vraag: Waarom werkt preg_match_all met hekjes, en preg_match met slashes?
pi_48079630
quote:
Op vrijdag 6 april 2007 14:17 schreef Geqxon het volgende:

[..]

Nu rijst bij mij weer de vraag: Waarom werkt preg_match_all met hekjes, en preg_match met slashes?
Dat zijn delimiters en die mag je zelf kiezen ik kies voor het hekje (#) zodat als ik met HTML werk ik niet alle forwardslashes hoef te escapen.
pi_48079676
Tof, weer wat geleerd. Mijn script leest nu 1200 personen (400kb) in 1.7 seconden in plaats van 8 seconden. Dat is op een mensenleven niet veel ,maar het totale process is er wel sneller door geworden.
  FOK!-Schrikkelbaas vrijdag 6 april 2007 @ 15:00:57 #168
1972 Swetsenegger
Egocentrische Narcist
pi_48080595
quote:
Op vrijdag 6 april 2007 14:11 schreef JeRa het volgende:

[..]

Er is een simpele regel in SQL-land die door MySQL absoluut niet nageleefd wordt maar waar je je waar mogelijk wel aan zou moeten houden en hij luidt:

Bij een GROUP BY moet je alle kolomnamen die je niet in een aggregaatfunctie gebruikt maar wel wilt ophalen noemen.

Dus het volgende gaat fout:
[ code verwijderd ]

En het volgende gaat goed:
[ code verwijderd ]
Dit geeft inderdaad geen foutmeldingen meer:
1
2
3
4
5
6
SELECT parent.name AS parentname, node.menu_id, node.name, node.lft, node.rgt,
       COUNT( parent.name ) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.menu_id,parent.name, node.name,node.lft,node.rgt
       ORDER BY node.lft

Maar geeft wel mijn child 2 keer terug
En mijn depth gaat niet goed....

en als ik de parent.name uit de GROUP BY houdt krijg ik weer de foutmelding, ondanks dat een COUNT toch een aggregate is?

[ Bericht 5% gewijzigd door Swetsenegger op 06-04-2007 15:12:10 ]
pi_48080871
quote:
Op vrijdag 6 april 2007 15:00 schreef Swetsenegger het volgende:

[..]

Dit geeft inderdaad geen foutmeldingen meer:
[ code verwijderd ]

Maar geeft wel mijn child 2 keer terug
En mijn depth gaat niet goed....
Je moet niet zomaar alle kolommen in de GROUP BY gooien, als je bepaalde waarden verwacht voor een kolom kun je ze soms beter in een aggregaatfunctie stoppen
  FOK!-Schrikkelbaas vrijdag 6 april 2007 @ 15:19:48 #170
1972 Swetsenegger
Egocentrische Narcist
pi_48081067
quote:
Op vrijdag 6 april 2007 15:11 schreef JeRa het volgende:

[..]

Je moet niet zomaar alle kolommen in de GROUP BY gooien
Dat vermoeden had ik al :P
quote:
, als je bepaalde waarden verwacht voor een kolom kun je ze soms beter in een aggregaatfunctie stoppen :)
Nou, met deze data:

1
2
3
4
menu_id  |  name  |  lft  |  rgt  |
---------+--------+-------+-------+ 
    1    | test   |   1   |   4   |
    2    | child  |   2   |   3   |


verwacht ik deze waarden terug

1
2
3
parentname  menu_id  name   lft  rgt  depth
test        1        test   1    4    1
child       2        child  2    3    2

terug, maar ik krijg
1
2
3
4
parentname  menu_id  name   lft  rgt  depth
test        1        test   1    4    1
child       2        child  2    3    1
child       2        child  2    3    1

terug
  FOK!-Schrikkelbaas vrijdag 6 april 2007 @ 16:14:58 #171
1972 Swetsenegger
Egocentrische Narcist
pi_48082574
Iemand?
pi_48082753
Je kunt niet op die manier de naam van de parent er bij krijgen zonder de group te verzieken. Ik vraag me af of dat in MySQL op deze manier wel echt goed werkt.
In MSSQL kan je de parent er wel met een subselect bij zoeken:

1
2
3
4
5
6
7
8
9
SELECT n.menu_id, n.name, n.lft, n.rgt, COUNT(p.menu_id) AS depth,
   (SELECT TOP 1 m.name 
      FROM nested_menu m 
      WHERE n.lft BETWEEN m.left AND m.right 
      ORDER BY m.left DESC) AS parent_name
FROM nested_menu AS p
INNER JOIN nested_menu AS n ON n.lft BETWEEN p.lft AND p.rgt
GROUP BY n.menu_id, n.name, n.lft, n.rgt
ORDER BY n.lft
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48082874
Swets, ik gebruik nu voor m'n nieuwe werk ook voornamelijk ASP/VB.NET in combinatie met MSSQL. Heb je beschikking over Microsoft SQL Server (2005 gebruik ik)? Met Stored Procedures kun je heel veel.
  FOK!-Schrikkelbaas vrijdag 6 april 2007 @ 16:37:27 #174
1972 Swetsenegger
Egocentrische Narcist
pi_48083277
quote:
Op vrijdag 6 april 2007 16:20 schreef SuperRembo het volgende:
Je kunt niet op die manier de naam van de parent er bij krijgen zonder de group te verzieken. Ik vraag me af of dat in MySQL op deze manier wel echt goed werkt.
Ja dat werkt perfect, komt zelfs van mysql website
quote:
In MSSQL kan je de parent er wel met een subselect bij zoeken:
[ code verwijderd ]
ga ik proberen
pi_48083940
quote:
Op vrijdag 6 april 2007 16:37 schreef Swetsenegger het volgende:
Ja dat werkt perfect, komt zelfs van mysql website
Nou, het werkt bij jou. Maar een kolom die niet in een group by en niet in een aggegate staat is niet goed gedefinieerd. De waarde die je terug krijgt kan van allerlei dingen afhangen zoals de indexen op de tabel of zelfs de volgorde waarin de regels in de tabel gezet zijn.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')