login  Naam:   Wachtwoord: 
Registreer je!
 Forum

query in delen hakken

Offline Grayen - 20/02/2007 16:08
Avatar van GrayenPHP ver gevorderde Ik heb een poosje terug een mysql database nagemaakt met php, door gebruik te maken van bestanden. Dit werkte erg goed, het enige waar ik niet tevreden mee was, was de snelheid (ongeveer 20x zo langzaam als een normale mysql database) dus daarom ben ik nu bezig met een versie 2.0 van mijn script om meer snelheid te krijgen.

Het belangrijkste van het script is de query zo in een array te plaatsen dat het bruikbaar is. Ik zou niet weten hoe ik dit kon doen met preg_match of iets dergelijks dus ik ben opzoek gegaan naar andere manier. Nu maak ik gebruik van de functie strtok(), dit script werkt goed, alleen zit ik nog met 1 probleem.

Mijn script werkt niet als je geen komma+spatie (, ) achter elke waarde invoert. Dus:

(bla, bla bla, bla) werkt correct
(bla,bla bla,bla) werkt niet correct

Weet iemand een manier op dit op te lossen, want er zijn helaas zat mensen die achter de komma geen spatie plaatsen. (misschien iets met preg_replace?)

En weet iemand iets in het script te vinden wat beter (en sneller) kan?

Hier is het script http://www.plaatscode.be/4294/.
Hier is een voorbeeld http://grayen.gr.funpic.de/test/.

9 antwoorden

Gesponsorde links
Offline lasdesigner - 20/02/2007 16:23
Avatar van lasdesigner PHP beginner Ik snap het nut hier niet van in.. denk je dat het hierdoor sneller gaat door het allemaal in een array te gaan proppen? *-) je kan toch variabelen gaan gebruiken zoals INSERT INTO 'variabele' ('variabele array met dingen') VALUES ('dezelfde variabele array maar dan met de waarden')

?
Offline marten - 20/02/2007 16:25
Avatar van marten Beheerder Ik snap het nut er ook niet echt van. Maar voer je de query's ook uit? Als je een MySQL query uitvoerd en je post een ; (semicolon) dan sluit deze de query. Als dit ook bij jou gebeurt kan je de ; (semicolon) escapen met str_replace() functie.
Offline svm - 20/02/2007 16:32 (laatste wijziging 20/02/2007 16:32)
Avatar van svm PHP ver gevorderde Wat heeft dit voor nut?
Nou, mensen die geen MySQL kunnen gebruiken, die kunnen hiervan gebruik maken.

@Grayen
Waarom niet gewoon:
str_replace(",", ", ", $string);

Je zult zo ook dubbele spaties krijgen, maar je hebt zelf de functie om deze weg te werken.
Offline Grayen - 20/02/2007 16:34 (laatste wijziging 20/02/2007 16:38)
Avatar van Grayen PHP ver gevorderde jullie snappen het idd niet (behalve svm). Het enige wat het met mysql te maken heeft is dat het gebruik maakt van dezelfde commando's. Ik ben bezig met datafiles (zo noem ik het) wat je kunt gebruiken als je bijv geen mysql tot je beschikking hebt, maar alleen php. Alleen moet ik dus ervoor zorgen dat ik weet welke commando er wordt uitgevoerd en alle andere gegevens uit de commando kan halen. Snappen jullie dat? Ik heb al een werkende versie zoals ik al verteld heb, alleen is hij te langzaam. Voorbeeld van een hele simpele gastenboek kun je hier vinden http://grayen.gr.funpic.de/.

@svm, ja maar het moet niet zo zijn dat de de inhoud word aangepast

stel ik heb een formuliertje, ik post hem. ik stop de vars in de query. Die waardes moeten niet aangepast worden. zou iemand bijvoorbeeld dit poste: "," dan moet dat niet ", " worden. Dat is het probleem.
Offline svm - 20/02/2007 16:40
Avatar van svm PHP ver gevorderde Grayen, kom even online op MSN, dan geef ik je mijn manier.

Want voor de mensen die het niet weten (iedereen dus):
Grayen en ik doen allebei dit project.
Offline Thomas - 20/02/2007 16:41
Avatar van Thomas Moderator Ik heb hier zelf ook wel eens over nagedacht, over hoe je een "database" zou kunnen maken met louter bestanden.

Het idee van een database is, dat je gegevens gestructureerd opslaat, zodat je gegevens kunt ordenen, filteren en er doorheen kunt snuffelen met zoekopdrachten (queries).

Tekstbestanden of CSV-bestanden missen deze structuur, m.a.w. ze zijn "plat". Deze lenen zich dus niet als database.

Een bestand(stype) dat wèl structuur bevat is XML. Met XML zou je zoiets wel kunnen maken.

Op sitepoint.com staat een artikel waarin wordt beschreven hoe je een "XML-powered CMS" zou kunnen maken.

Ik durf te wedden dat als je naar "XML database project" o.i.d. Google'd, dat je dan ook tal van resultaten vindt.
Offline marten - 20/02/2007 16:44
Avatar van marten Beheerder ah ke zo dus maar idd wat Fangorn zegt sluit ik me bij aan. Goed artikel ook. Aanrader die Sitepoint. Veel goede artikels en goede nieuwsbrief 
Offline Grayen - 20/02/2007 16:44
Avatar van Grayen PHP ver gevorderde @fangorn
Ik maak daarom ook gebruik van array's die ik serialize (om de array in een bestand te plaatsen) en unserialize (om de array er weer uit te halen). Dit werkt goed, enige waar het nog slecht draait in mijn script is die query goed filteren.
Offline Ibrahim - 20/02/2007 18:55 (laatste wijziging 20/02/2007 18:56)
Avatar van Ibrahim PHP expert je kunt een regex gebruiken om die (,) toe te staan

  1. preg_match('~, +~', $query);

om 1 of meer spaties toe te staan
  1. preg_match('~, *~', $query);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s