abonnement Unibet Coolblue Bitvavo
pi_46383886
quote:
Op vrijdag 16 februari 2007 18:52 schreef Swetsenegger het volgende:

Je gaat er maar vanuit dat je daadwerkelijk de userinput controleert. Zowel mysql als php zijn zo inconsistent als de tyfus met strings en integers, dus is 1 fuck-up voldoende om sql injection toe te staan.
Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.

GUI
Check and sanatize data
Do stuff with data and many more.

Je hoeft in dat geval niet op meerdere plekken je data te valideren, dat is immers al gedaan. Je onderliggende klasses/functies hoeven dan alleen te checken of de input parameters goed zijn. Dwz, ik verwacht een string, en als ik dit niet krijg, error.
quote:
Ik begrijp jouw weerstand niet tegen een extra safety maatregel als mysql_real_escape_string. Zeker niet in toepassingen zoals de meeste hier maken waar performance geen groot issue is. Want eigenlijk is dat de enige reden die ik kan bedenken voor je aversie tegen een failback systeem
Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 22:41:40 #202
1972 Swetsenegger
Egocentrische Narcist
pi_46383976
quote:
Op vrijdag 16 februari 2007 22:38 schreef slakkie het volgende:

[..]

Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.
Totdat er een keer niet gechecked is
quote:
Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
pi_46384606
quote:
Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:
Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

$a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 23:04:34 #204
1972 Swetsenegger
Egocentrische Narcist
pi_46384803
quote:
Op vrijdag 16 februari 2007 22:58 schreef slakkie het volgende:

[..]

Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

$a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
We zitten al op 1 lijn. Je moet user input controleren. Maar het wordt wel eens vergeten he, zeker in work in progress. Dus wat is er erg om in elke query een mysql_real_escape_string op te nemen om slips op te vangen? Dat is alles wat ik zeg.

Je blijft contine maar zeggen dat het niet nodig is als je userinput controleert. Maar dat riep ik al in mijn eerste post waar ik mysql_real_escape_string voorstelde, dus is de hele discussie blijkbaar nutteloos.
pi_46384895
quote:
Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:

Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
Ja, php is loosely typed. Dus na $a = "1"; $b = 2 + $a; is $b == 3. En na $a = "1"; $b = 2 . $a; is $b == "21";
pi_46385141
Voor het bovenstaande verhaal is een vrij simpele oplossing;
+ Zorg ervoor dat dat je variabelen van het juiste type zijn, eventueel door ze te casten.
+ Prepared statements.
+ Gooi je database vol met constraints.
+ Vang verkeerde user input op met een nette waarschuwing.

Knappe jongen als je het dan nog weet te verklooien
pi_46385431
quote:
Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:
Hier zijn we het allemaal mee eens denk ik
  vrijdag 16 februari 2007 @ 23:28:35 #208
12221 Tijn
Powered by MS Paint
pi_46385474
quote:
Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:

+ Vang verkeerde user input op met een nette waarschuwing.
Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 23:30:15 #209
1972 Swetsenegger
Egocentrische Narcist
pi_46385519
quote:
Op vrijdag 16 februari 2007 23:28 schreef Tijn het volgende:

[..]

Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
"Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
pi_46386943
Zo had ik vroegâh een IP ban functie gemaakt op m'n site. Zodra je IP gebanned was kreeg je bij een poging m'n site te bekijken een paar popups die zichzelf weer gingen openen, en kreeg je de "You are an idiot" en "Hey everybody, I'm looking at gay porno!" Flash klassiekertjes voor je kiezen.
pi_46391375
quote:
Op vrijdag 16 februari 2007 23:30 schreef Swetsenegger het volgende:

[..]

"Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
en dan is het gewoon een tiepfoutje zal die gebruiker raar op kijken
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 17 februari 2007 @ 18:30:50 #212
71919 wonderer
Hung like a My Little Pony
pi_46404447
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46404844
quote:
Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
pi_46404914
quote:
Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
Na een Update of een Insert kun je met mysql_affected_rows() opvragen hoeveel rijen er zijn aangepast. Als dat 0 is dan kun je met de andere functie in de herkansing
pi_46404944
quote:
Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

[..]

INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.

[ Bericht 5% gewijzigd door Light op 17-02-2007 18:53:59 (Nieuwe functie.) ]
  zaterdag 17 februari 2007 @ 18:57:26 #216
71919 wonderer
Hung like a My Little Pony
pi_46405108
quote:
Op zaterdag 17 februari 2007 18:51 schreef Light het volgende:

[..]

Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.
Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46405176
quote:
Op zaterdag 17 februari 2007 18:57 schreef wonderer het volgende:

[..]

Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
Dat kan, de ON DUPLICATE KEY clausule is geldig wanneer er een PRIMARY of UNIQUE key overtreden wordt, dus bij een nieuwe PK maar een al bestaande UNIQUE key gaat dat gewoon werken
  zaterdag 17 februari 2007 @ 19:06:11 #218
71919 wonderer
Hung like a My Little Pony
pi_46405329
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46405734
quote:
Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
pi_46405762
quote:
Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
Een key kan best op meer dan 1 veld slaan.
  zaterdag 17 februari 2007 @ 19:31:33 #221
71919 wonderer
Hung like a My Little Pony
pi_46406059
quote:
Op zaterdag 17 februari 2007 19:20 schreef JeRa het volgende:

[..]

Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
Nee? Leg uit

Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46406455
quote:
Op zaterdag 17 februari 2007 19:31 schreef wonderer het volgende:

[..]

Nee? Leg uit

Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
Je kunt een UNIQUE constraint leggen op één veld (UNIQUE(a)) of op meerdere velden (UNIQUE(a, b)). In dat geval mogen er geen twee records voorkomen waarbij a én b hetzelfde zijn dus dan zijn meerdere records met eenzelfde waarde voor veld a mogelijk, maar dan moet b wel verschillen.
  zaterdag 17 februari 2007 @ 19:55:35 #223
71919 wonderer
Hung like a My Little Pony
pi_46406828
Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46406956
quote:
Op zaterdag 17 februari 2007 19:55 schreef wonderer het volgende:
Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
Als je het over die unique constraints hebt: die doe je wel in de tabel zelf
pi_46412170
quote:
Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

[..]

INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
Dat lijkt heel erg op REPLACE. Heeft dat hetzelfde effect?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46412412
quote:
Op zaterdag 17 februari 2007 22:36 schreef SuperRembo het volgende:

[..]

Dat lijkt heel erg op REPLACE. Heeft dat hetzelfde effect?
Replace is eigenlijk een onding. Sowieso doet replace geen update. Als een waarde al bestaat dan wordt'ie doodleuk uit je database gegooid en er vervolgens opnieuw ingezet.
  zondag 18 februari 2007 @ 13:55:03 #227
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_46424104
hoe kan je in 1 keer met de functie rename alle bestanden die bijvoorbeeld op *.txt eindigen wijzigen?
Of bestanden die beginnen met een bepaalde tekst... heb '*' al geprobeerd, dat pakt i niet.
pi_46428265
Leuke opgave, ben even aan het knutselen geweest :)
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$thisdir
= dir(getcwd());                                            
$imagepatern = '.txt$';                                                    

while((
$file = $thisdir->read()) !== false) {                        
    if (
eregi($imagepatern, $file)) {                                
    
    
    
// Plaats hier de rename functie, met $file pak je het bestand
    
    
}
}
?>
pi_46446767
Kan ik htmlentities() ook weer omkeren?

Edit: gevonden

html_entity_decode()
pi_46447671
WTF..

Ik post een formulier naar een andere pagina.
Als ik echter niets invul, dan zou ie dit moeten doen:
1
2
3
4
5
6
<?php
if ($post == "")
{
    
$post = "leeg bericht..";
}
?>

Echter, hij vervangt hierbij de waarde $post dus niet, en het resultaat blijft leeg.


In dit geval:
1
2
3
4
5
6
<?php
if ($post == "bla")
{
    
$post = "je typte bla..";
}
?>

Werkt het wel, als ik bla invoer..

Hoe kan dit nou?
pi_46447709
Probeer eens
1
2
3
4
5
<?php
if (empty($post)){
...
}
?>
pi_46447747
Hmm ook niet.. Maar ik heb het nu wel op een andere manier werkend gekregen.
Of naja.. Geen andere manier, maar door de check eerder in het script uit te laten voeren..

Toch bedankt!
  maandag 19 februari 2007 @ 02:04:16 #233
71919 wonderer
Hung like a My Little Pony
pi_46447950
-lamaar-

[ Bericht 96% gewijzigd door wonderer op 19-02-2007 02:27:43 ]
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  maandag 19 februari 2007 @ 10:46:35 #234
37634 wobbel
Da WoBBeL King
pi_46451503
Ik had het al een keer gevraagd, maar kwam er niet echt uit

Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

pi_46451961
Ik vermoed dat je een rang veld moet toevoegen in je DB.

GH2108 = 1
HG2122 = 2
GH2138 = 3

Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken.
  maandag 19 februari 2007 @ 11:11:00 #236
37634 wobbel
Da WoBBeL King
pi_46452090
quote:
Op maandag 19 februari 2007 11:05 schreef Siegfried het volgende:
Ik vermoed dat je een rang veld moet toevoegen in je DB.

GH2108 = 1
HG2122 = 2
GH2138 = 3

Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken.
Krijg ik dan geen problemen als ik bijv. enkele producten verwijder en dan later wil updaten mbv rangs? Dan zou je in sommige gevallen wel + 10 moeten doen....of als ik een product verwijder alle BOVENLIGGENDE (dus hoger dan de rank van het verwijderde product) - 1


"Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken. "

Jah heel leuk, ik kan bij 1 veld wel 2 + 1 = 3 doen, maar hoe moet ik dan die 3 - 1 doen? Gewoon 2 + 1 = 3, dan zoeken waar RANG 3 is en daar - 1?

En als ik een product toevoeg, moet ik de hoogste rang pakken en daar + 1 he?
pi_46452411
Twee producten kunnen toch ook dezelfde rang hebben? Dan sorteer je simpelweg verder op naam
  maandag 19 februari 2007 @ 11:32:47 #238
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_46452629
quote:
Op zondag 18 februari 2007 15:42 schreef Geqxon het volgende:
Leuke opgave, ben even aan het knutselen geweest
[ code verwijderd ]
Thanks! (vanwaar die '$' in de string imagepatern? )
Wat als ik nou alles wil renamen / zien wat begint met iets?

Edit, nevermind, logisch, gewoon dat in imagepatern zetten...deed ik net ook maar had spelfoutje gemaakt, vandaar
pi_46452670
quote:
Op maandag 19 februari 2007 11:11 schreef wobbel het volgende:

Jah heel leuk, ik kan bij 1 veld wel 2 + 1 = 3 doen, maar hoe moet ik dan die 3 - 1 doen? Gewoon 2 + 1 = 3, dan zoeken waar RANG 3 is en daar - 1?

En als ik een product toevoeg, moet ik de hoogste rang pakken en daar + 1 he?
Uh, nee.. Gewoon:
UPDATE `tabel` SET `rang` = '3' WHERE `id` = 'GH2122 ' LIMIT 1
UPDATE `tabel` SET `rang` = '2' WHERE `id` = 'GH2138' LIMIT 1

Lijkt mij
pi_46452680
quote:
Op maandag 19 februari 2007 10:46 schreef wobbel het volgende:
Ik had het al een keer gevraagd, maar kwam er niet echt uit

Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

[afbeelding]
Hou zoals eerder gezegd een rang of positie bij:
PK=45, pos=1
PK=63, pos=2
PK=19, pos=3

Stel, je wilt PK=45 naar beneden schuiven. Dan doe je dit als volgt:
1) Haal de positie van PK=45 op (pos1 = 1)
2) Haal de PK van pos2 = pos1 + 1 op (PK = 63)
3) Zet de positie van PK=45 op (pos1 + 1) (pos1 = 2)
4) Zet de positie van PK=63 op pos1 (pos2 = 1)

Kortom, je hebt primary of unique keys nodig . Overigens, een slimme truuk: als je een item een plek naar boven wilt opschuiven, dan is dit hetzelfde als het item erboven naar beneden te brengen.

Verder wil je er misschien voor zorgen dat je deze twee stappen hebt:
0) LOCK TABLES ...
...
5) UNLOCK TABLES

Om te voorkomen dat er meerdere mensen tegelijk de rangen gaan aanpassen en dat 't kapot gaat
pi_46452719
quote:
Op maandag 19 februari 2007 11:32 schreef Likkende_Lassie het volgende:

[..]

Thanks! (vanwaar die '$' in de string imagepatern? )
Wat als ik nou alles wil renamen / zien wat begint met iets?
Het dollarteken in de string is puur dat het op .txt moet eindigen. Zo uit mijn roestige hersenpan is het volgens mij zo dat als het ergens mee moet beginnen, dat het dollarteken dan aan het begin moet.
pi_46453217
quote:
Op maandag 19 februari 2007 11:36 schreef Geqxon het volgende:

[..]

Het dollarteken in de string is puur dat het op .txt moet eindigen. Zo uit mijn roestige hersenpan is het volgens mij zo dat als het ergens mee moet beginnen, dat het dollarteken dan aan het begin moet.
Nee, dakje ^ is op het begin van de string, $ op het eind.
pi_46453252
quote:
Op maandag 19 februari 2007 11:56 schreef JeRa het volgende:

[..]

Nee, dakje ^ is op het begin van de string, $ op het eind.
Je hebt helemaal gelijk, ik was net bezig mijn stoffige schoolboeken over regular expressions er op na te slaan.
pi_46453648
quote:
Op maandag 19 februari 2007 10:46 schreef wobbel het volgende:
Ik had het al een keer gevraagd, maar kwam er niet echt uit

Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

[afbeelding]
ik voeg altijd een veld 'ORDER' toe, waarbij ieder record een waarde krijgt met een meervoud van 10. Dus 10 / 20 / 30 / 40. Als je dan een record verplaatst doe je die ORDER + 11 (of -11), zodat hij voorbij de de volgende komt. Daarna update je in een loop *alle* records in de tabel zodat ze weer netjes een waarde met een veelvoud van 10 hebben
pi_46453753
Hoi.
Ik heb een textdocumentje waar ik wat data uit wil halen, en daar wil ik wat mee gaan doen.
Het textdocumentje staat gewoon op de server, in dezelfde dir als m'n PHP bestand.

Hoe heet dat wat ik wil gaan doen, ik wil gaan zoeken op php.net maar heb geen idee op wat voor commando oid ik moet zoeken .
  maandag 19 februari 2007 @ 12:22:37 #246
12221 Tijn
Powered by MS Paint
pi_46453826
Je zou bijvoorbeeld fopen() kunnen gebruiken, veldmuis.
pi_46454109
quote:
Op maandag 19 februari 2007 12:22 schreef Tijn het volgende:
Je zou bijvoorbeeld fopen() kunnen gebruiken, veldmuis.
Tnx, ben wat verder nu idd!
Alleen nu komt het: in het document staat wat data
waarde1: de inhoud van waarde 1
etc.

De inhoud is altijd van een variabele lengte, maar wordt wel afgesloten door een </p>
Die </p> zou ik dus als eind kunnen pakken, en dat 'waarde1:' als beginding. Maar hoe lees ik nou de waarde die daartussen staat uit?

fgets en fread lijken niet de oplossing als ik het zo zie op php.net?
  maandag 19 februari 2007 @ 12:36:59 #248
12221 Tijn
Powered by MS Paint
pi_46454189
Nou, je zou met fgets() wel de regel kunnen uitlezen en dan die regel door een sjieke reguliere expressie halen om je data eruit te filteren.

Hoe dat zit met die reguliere expressie moet je maar even aan iemand anders vragen, daar ben ik niet zo handig in
pi_46454203
quote:
Op maandag 19 februari 2007 12:33 schreef veldmuis het volgende:

[..]

fgets en fread lijken niet de oplossing als ik het zo zie op php.net?
Jawel, met die twee functies kun je een bestand inlezen en voor de rest is het pure string manipulatie

Het simpelst is strpos() gebruiken om de positie van substrings in strings te vinden
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 12:48:11 #250
1972 Swetsenegger
Egocentrische Narcist
pi_46454468
quote:
Op maandag 19 februari 2007 12:36 schreef Tijn het volgende:
Nou, je zou met fgets() wel de regel kunnen uitlezen en dan die regel door een sjieke reguliere expressie halen om je data eruit te filteren.

Hoe dat zit met die reguliere expressie moet je maar even aan iemand anders vragen, daar ben ik niet zo handig in :@
1
2
3
4
5
<?php
$patern
="#waarde1(.*?)</p>#i"
preg_replace($patern,$string,$match);
echo 
$match[1];
?>


niet getest
  maandag 19 februari 2007 @ 12:48:14 #251
37634 wobbel
Da WoBBeL King
pi_46454469
quote:
Op maandag 19 februari 2007 11:34 schreef Siegfried het volgende:

[..]

Uh, nee.. Gewoon:
UPDATE `tabel` SET `rang` = '3' WHERE `id` = 'GH2122 ' LIMIT 1
UPDATE `tabel` SET `rang` = '2' WHERE `id` = 'GH2138' LIMIT 1

Lijkt mij
dat gaat dus helemaal niet werken, want als ik bij 1 product rank + 1 doe, hoe weet ik dan welk product er dan 1 af moet?

Maargoed, het werkt nu prima
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 12:51:10 #252
1972 Swetsenegger
Egocentrische Narcist
pi_46454534
Ow kijk ook naar file en file_get_contents. Vind ik persoonlijk altijd eenvoudiger dan fread
pi_46454575
Ik zou toch graag een iets hardere schop in de goeie richting willen .

Van stringmanipulatie en reguliere expressies snap ik niets .

Als ik nou de inhoud tussen Waarde1: en </P> zou willen uitlezen, hoe doe ik dat dan? .
pi_46454619
quote:
Op maandag 19 februari 2007 12:53 schreef veldmuis het volgende:
Ik zou toch graag een iets hardere schop in de goeie richting willen :P.

Van stringmanipulatie en reguliere expressies snap ik niets :@.

Als ik nou de inhoud tussen Waarde1: en </P> zou willen uitlezen, hoe doe ik dat dan? :@.
1
2
3
4
5
6
<?php
$inhoud 
file_get_contents('bestandsnaam');
$matches = array();
preg_match('#^Waarde1:(.*)</P>#Ui'$inhoud$matches);
echo 
$matches[1];
?>
pi_46454836
Dank allen! Ik ga verder proberen!
Nou ben ik alleen nog nieuwsgierig wat de [1] achter $matches/$match doet?
pi_46454883
quote:
Op maandag 19 februari 2007 13:04 schreef veldmuis het volgende:
Dank allen! Ik ga verder proberen!
Nou ben ik alleen nog nieuwsgierig wat de [1] achter $matches/$match doet?
$matches is in eerste instantie een lege array maar wordt gevuld met strings door de functie preg_match(). Daarna is $matches[1] gelijk aan de eerste subset in de regular expression in preg_match() (als je dat niet snapt maakt het niet uit ). $matches[1] is dus de string op 'positie 1' in de array (positie 0 bevat de gematchde string).
pi_46454907
$matches is een array, en in het voorbeeldje hierboven word die array aangevuld door de preg_match() functie. Waardes in een array() worden aangeroepen door $array_naam[0], $array_naam[1], $array_naam[2], enz.
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:08:40 #258
1972 Swetsenegger
Egocentrische Narcist
pi_46454936
quote:
Op maandag 19 februari 2007 12:55 schreef JeRa het volgende:

[..]
[ code verwijderd ]
^waarde1: betekent toch dat de string daarmee begint?
pi_46454993
quote:
Op maandag 19 februari 2007 13:08 schreef Swetsenegger het volgende:

[..]

^waarde1: betekent toch dat de string daarmee begint?
Zou dat dan geen [0] moeten zijn?
pi_46455032
quote:
Op maandag 19 februari 2007 13:08 schreef Swetsenegger het volgende:

[..]

^waarde1: betekent toch dat de string daarmee begint?
Mjah, als test. Maar als hij ook waarde2, waarde3 etc wil matchen moet er toch een andere expression komen
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:14:32 #261
1972 Swetsenegger
Egocentrische Narcist
pi_46455083
quote:
Op maandag 19 februari 2007 13:12 schreef JeRa het volgende:

[..]

Mjah, als test. Maar als hij ook waarde2, waarde3 etc wil matchen moet er toch een andere expression komen
Maar het betekent toch ook dat de string er zo uit moet zien: "Waarde1:....." Op het moment dat de string niet met Waarde1 begint matched hij toch niet? dus de ^ moet toch gewoon weg?
pi_46455098
"Call to undefined function preg_match()"
Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:16:38 #263
1972 Swetsenegger
Egocentrische Narcist
pi_46455134
quote:
Op maandag 19 februari 2007 13:15 schreef veldmuis het volgende:
"Call to undefined function preg_match()"
Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
1
2
3
preg_match

(PHP 3 >= 3.0.9, PHP 4, PHP 5)

Dan zou je php versie onder 3.0.9 moeten liggen en DAT lijkt me niet.
pi_46455156
PHP Version 5.0.5, maar het zou zomaar kunnen dat het een ERG beperkte PHP is.
  maandag 19 februari 2007 @ 13:18:00 #265
12880 CraZaay
prettig gestoord
pi_46455163
quote:
Op maandag 19 februari 2007 13:15 schreef veldmuis het volgende:
"Call to undefined function preg_match()"
Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
Je zou denken dat eerste, maar het lijkt me sterk dat je met PHP 3 bezig bent
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:19:18 #266
1972 Swetsenegger
Egocentrische Narcist
pi_46455189
quote:
Op maandag 19 februari 2007 13:17 schreef veldmuis het volgende:
PHP Version 5.0.5, maar het zou zomaar kunnen dat het een ERG beperkte PHP is.
quote:
Afhankelijkheden

Deze functies zijn beschikbaar als onderdeel van de standaard module die altijd beschikbaar is.
bron
Post je code eens dan.
  maandag 19 februari 2007 @ 13:23:01 #267
46383 Tiemie
sowieso wel!
pi_46455269
quote:
Op maandag 19 februari 2007 13:16 schreef Swetsenegger het volgende:

[..]
[ code verwijderd ]

Dan zou je php versie onder 3.0.9 moeten liggen en DAT lijkt me niet.
Of het is om een wazige reden zonder pcre gecompiled .

--without-pcre-regex
pi_46455325
quote:
Op maandag 19 februari 2007 13:23 schreef Tiemie het volgende:

[..]

Of het is om een wazige reden zonder pcre gecompiled .

--without-pcre-regex
Dat zou eventueel kunnen, voor de size-obsessed compileerders onder ons die denken genoeg te hebben aan de ereg_*-functies
pi_46455351
quote:
Op maandag 19 februari 2007 13:19 schreef Swetsenegger het volgende:

[..]


[..]

Post je code eens dan.
Ik heb deze gepakt:
1
2
3
4
5
6
7
8
<?php
#!/usr/bin/php

$inhoud = file_get_contents('test');
$matches = array();
preg_match('#^Waar:(.*)</P>#Ui', $inhoud, $matches);
echo
$matches[1];
?>
quote:
Op maandag 19 februari 2007 13:23 schreef Tiemie het volgende:

[..]

Of het is om een wazige reden zonder pcre gecompiled :{ .

--without-pcre-regex
Ow, dan is dat het. De reden is ruimtegebrek. Gok ik.
pi_46455373
quote:
Op maandag 19 februari 2007 13:25 schreef JeRa het volgende:

[..]

Dat zou eventueel kunnen, voor de size-obsessed compileerders onder ons die denken genoeg te hebben aan de ereg_*-functies
Is het daarmee te doen? .
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:32:13 #271
1972 Swetsenegger
Egocentrische Narcist
pi_46455497
quote:
Op maandag 19 februari 2007 13:27 schreef veldmuis het volgende:

[..]

Is het daarmee te doen? .
http://nl2.php.net/manual/nl/function.ereg.php
Volgens mij de preg_match alleen vervangen door ereg als ik de manual even snel scan.
pi_46455607
Ik heb 'm als module erin geduwt, en dat lijkt te werken! !
  maandag 19 februari 2007 @ 13:36:08 #273
37634 wobbel
Da WoBBeL King
pi_46455610
Kan ik ook een join doen in een delete?

Dus dat ik gegevens verwijder uit 2 tabellen die een relatie met elkaar hebben dmv ID?
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 13:36:38 #274
1972 Swetsenegger
Egocentrische Narcist
pi_46455628
quote:
Op maandag 19 februari 2007 13:36 schreef wobbel het volgende:
Kan ik ook een join doen in een delete?

Dus dat ik gegevens verwijder uit 2 tabellen die een relatie met elkaar hebben dmv ID?
Ja dat kan
pi_46455883
quote:
Op maandag 19 februari 2007 13:36 schreef Swetsenegger het volgende:

[..]

Ja dat kan
MySQL en subqueries? Ik leer telkens wat nieuws hier
pi_46455911
quote:
Op maandag 19 februari 2007 13:45 schreef Geqxon het volgende:

[..]

MySQL en subqueries? Ik leer telkens wat nieuws hier
Subqueries worden al erg lang door MySQL ondersteund, maar met een DELETE is het gewoon een simpele JOIN
pi_46456130
quote:
Op maandag 19 februari 2007 13:46 schreef JeRa het volgende:

[..]

Subqueries worden al erg lang door MySQL ondersteund, maar met een DELETE is het gewoon een simpele JOIN
Ik heb mijzelf in 2004/2005 MySQL aangeleerd, en één van de grote punten was de slechte support voor subqueries. Maar zoals ik al zei: Ik leer hier constant
  maandag 19 februari 2007 @ 13:58:53 #278
37634 wobbel
Da WoBBeL King
pi_46456306
quote:
Op maandag 19 februari 2007 13:36 schreef Swetsenegger het volgende:

[..]

Ja dat kan
Zo dus:

1
2
3
4
5
DELETE
FROM SHOP_Products
INNER JOIN SHOP_Products_Lang
ON ( SHOP_Products_Lang.ProductId = SHOP_Products.IdProduct ) 
WHERE SHOP_Products.SubcategoryId = '" . $SQL_SID . "'
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 14:01:08 #279
1972 Swetsenegger
Egocentrische Narcist
pi_46456370
quote:
Op maandag 19 februari 2007 13:58 schreef wobbel het volgende:

[..]

Zo dus:
[ code verwijderd ]
Precies. Probeer het eerst uit met SELECT FROM <rest van je query> en als dat werkt gewoon je SELECT FROM vervangen door delete
pi_46456403
Overigens, in sommige andere RDBMS'en wordt het bovenstaande gedaan door foreign key constraints met een ON DELETE-clausule een ON DELETE CASCADE zorgt er dan voor dat wanneer je een record verwijdert waarna andere records verwijzen, dat dan die andere records ook worden verwijderd. Erg handig als je de database-inhoud consistent wilt houden PostgreSQL is een goede open source RDBMS die zoiets doet (maar ook de grotere commerciële varianten).
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 14:08:05 #281
1972 Swetsenegger
Egocentrische Narcist
pi_46456561
quote:
Op maandag 19 februari 2007 14:02 schreef JeRa het volgende:
Overigens, in sommige andere RDBMS'en wordt het bovenstaande gedaan door foreign key constraints met een ON DELETE-clausule een ON DELETE CASCADE zorgt er dan voor dat wanneer je een record verwijdert waarna andere records verwijzen, dat dan die andere records ook worden verwijderd. Erg handig als je de database-inhoud consistent wilt houden PostgreSQL is een goede open source RDBMS die zoiets doet (maar ook de grotere commerciële varianten).
Interbase (firebird) doet dat ook begreep ik
pi_46456588
quote:
Op maandag 19 februari 2007 12:55 schreef JeRa het volgende:

[..]


1
2
3
4
5
6
<?php
$inhoud 
file_get_contents('bestandsnaam');
$matches = array();
preg_match('#^Waarde1:(.*)</P>#Ui'$inhoud$matches);
echo 
$matches[1];
?>
Werkt inderdaad...MAAR!
Er staat nog crap voor Waarde1:, hoe zorg ik dat-ie die crap negeert? :+.
pi_46456605
Oh, en er komt ook nog een waarde2 achteraan, na weer wat crap .
pi_46456775
Een verkapte UTFS post:

http://weblogtoolscollection.com/regex/regex.php

Staat al weer maanden tussen mijn bookmarks, een erg handig overzicht
pi_46456806
Dank, ik ga lezen!
  maandag 19 februari 2007 @ 14:20:55 #286
37634 wobbel
Da WoBBeL King
pi_46456896
Betreffende query: DELETE FROM SHOP_Products INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = SHOP_Products_Lang.ProductId ) WHERE SHOP_Products.SubcategoryId = '1'

MySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = ' at line 3

  maandag 19 februari 2007 @ 14:27:11 #287
37634 wobbel
Da WoBBeL King
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 14:30:48 #288
1972 Swetsenegger
Egocentrische Narcist
pi_46457185
quote:
Op maandag 19 februari 2007 14:20 schreef wobbel het volgende:
Betreffende query: DELETE FROM SHOP_Products INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = SHOP_Products_Lang.ProductId ) WHERE SHOP_Products.SubcategoryId = '1'

MySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = ' at line 3

Vreemd, zou gewoon moeten werken. Geen komma's quotes of andere ongein verkeerd?

http://www.electrictoolbox.com/article/mysql/cross-table-delete/
pi_46457554
Er zit een verschil in aanroep. In Swetsenegger's voorbeeld wordt er DELETE tabel1.*, tabel2.* FROM ... gedaan
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 14:47:22 #290
1972 Swetsenegger
Egocentrische Narcist
pi_46457691
quote:
Op maandag 19 februari 2007 14:43 schreef JeRa het volgende:
Er zit een verschil in aanroep. In Swetsenegger's voorbeeld wordt er DELETE tabel1.*, tabel2.* FROM ... gedaan
Inderdaad.
Maar zelf delete ik ergens in een script ook met een join en heb ik volgens mij hetzelfde gedaan als Wobbel in eerste instantie....Maar kan ook een leftjoin zijn...Ik zal vanavond even kijken.
pi_46459771
Ik kom er nog niet helemaal uit met die regex. Ben al wat wijzer geworden, maar nu...
Ik heb nu
1preg_match('/Waarde1:(.*)</', $inhoud, $matches);

De waarde komt er nu uit, maar er komt ook een </P> mee. Hoe fix ik dat nu?

Edit: Kut, dat was een nieuwe regel. Het begin pakt-ie goed op, het eind niet. Betekent dat ik weer aan de gang kan, weet ik waar het fout gaat .

[ Bericht 11% gewijzigd door veldmuis op 19-02-2007 16:01:04 ]
pi_46460784
Hmm, ben eruit intussen.

Ik begrijp dat je moet escapen, maar wat is nou het verschil tussen / en #?
Ik las overal / maar jullie gaven in jullie voorbeeld # aan, en dat werkt dus wel.
pi_46462565
Okay, andere vraag.

dmv een shell_exec haal ik met wget het bestand op waar ik de data uit wil halen, dat gaat prima, maar daardoor krijg ik allemaal bagger in de pagina. Kan ik de output die wget geeft ergens anders heen sturen zodat het niet op m'n scherm komt?
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 17:32:37 #294
1972 Swetsenegger
Egocentrische Narcist
pi_46462744
quote:
Op maandag 19 februari 2007 16:29 schreef veldmuis het volgende:
Hmm, ben eruit intussen.

Ik begrijp dat je moet escapen, maar wat is nou het verschil tussen / en #?
Ik las overal / maar jullie gaven in jullie voorbeeld # aan, en dat werkt dus wel.
die # is alleen start patroon, mag bijna elk teken zijn
  FOK!-Schrikkelbaas maandag 19 februari 2007 @ 17:33:42 #295
1972 Swetsenegger
Egocentrische Narcist
pi_46462780
quote:
Op maandag 19 februari 2007 17:26 schreef veldmuis het volgende:
Okay, andere vraag.

dmv een shell_exec haal ik met wget het bestand op waar ik de data uit wil halen, dat gaat prima, maar daardoor krijg ik allemaal bagger in de pagina. Kan ik de output die wget geeft ergens anders heen sturen zodat het niet op m'n scherm komt?
eh... niet de zooi parsen maar bewerken?
pi_46464366
Eh, geen idee? Hoe doe je dat? .
pi_46465010
veldmuis: wget -q "http://forum.fok.nl"
pi_46465077
Niet eens aan gedacht, natuurlijk! Thanks!
  dinsdag 20 februari 2007 @ 00:00:00 #299
71919 wonderer
Hung like a My Little Pony
pi_46478181
Als ik een lange tekst heb (7000 woorden of zo) en ik wil alleen de eerste pakweg 250 woorden laten zien, hoe kan ik dat het beste aanpakken? explode lijkt me een beetje omslachtig...
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46478552
Denk zoiets als dit:
http://nl2.php.net/manual/nl/function.chunk-split.php

Eerste comment laat precies zien wat jij wilt.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')