http://nl2.php.net/class is een hele goede om mee te beginnenquote:Op maandag 3 december 2007 21:26 schreef PiRANiA het volgende:
ik snap eigenlijk nog steeds niet wat classes zijn, wat ze doen en waar ze goed voor zijn...
ik heb ze in 3 jaar nog nooit gebruikt iig...
wie legt het me uit?
Daarnaast zijn deze ook erg handig:quote:Op maandag 3 december 2007 21:32 schreef JortK het volgende:
[..]
http://nl2.php.net/class is een hele goede om mee te beginnen
Ik doelde eingelijk meer op een functie dat van het volgende voorbeeldquote:
1 2 3 4 5 6 7 8 9 10 | "ae" => "United Arab Emirates", "af" => "Afghanistan", "ag" => "Antigua and Barbuda", "ai" => "Anguilla", "al" => "Albania", "am" => "Armenia", "an" => "Netherlands Antilles", "ao" => "Angola", "aq" => "Antarctica", |
1 2 3 4 5 6 7 8 9 10 | "ae" => "United Arab Emirates", "af" => "Afghanistan", "ag" => "Antigua and Barbuda", "ai" => "Anguilla", "al" => "Albania", "am" => "Armenia", "an" => "Netherlands Antilles", "ao" => "Angola", "aq" => "Antarctica", |
htmlentities?quote:Op dinsdag 4 december 2007 16:02 schreef markiemark het volgende:
Hooii lieve vrienden! Heb in mijn mysql database een aantal teksten staan. Deze zijn in vershchillende talen. Het probleem is dat deze de pure teksten zijn dus inclusief alle haakjes en streepjes, niet omgezet naar &..; code. Als ik deze weergeef in mijn browser komen er in Firefox blokjes met vraagtekentjes te staan en in internet explorer kleine vierkantjes. Hoe kan ik dit oplossen. De codering in de database is utf-8- unicode.
Hoe kan ik dit oplossen?
moet daar dan nog iets achter? Zie http://nl2.php.net/manual/en/function.htmlentities.php hier dat er de nodige aanvullingen kunnen zijn..quote:
Probeer eerst maar gewoon eensquote:Op dinsdag 4 december 2007 16:06 schreef markiemark het volgende:
[..]
moet daar dan nog iets achter? Zie http://nl2.php.net/manual/en/function.htmlentities.php hier dat er de nodige aanvullingen kunnen zijn..
1 2 3 | htmlentities($string); ?> |
Er zit ook html in de database.. Die wordt dan ook omgezet naar tekst.. en das niet de bedoeling..quote:Op dinsdag 4 december 2007 16:07 schreef JortK het volgende:
[..]
Probeer eerst maar gewoon eens
[ code verwijderd ]
Als je met utf-8 wil werken moet *alles* utf-8 zijn, niet alleen je database. Dus zorgen dat je pagina ook in utf-8 is (meta content-type tag goed zetten en vooral ook zorgen dat utf-8 als content-type in de page headers wordt meegestuurd) en in php zorgen dat de mbstring extentie is geinstalleerd en alleen de utf-8 veilige functies gebruiken. Alle standaard string functies zoals strlen etc raken in de war van utf-8 en geven verkeerde resultaten als je niet expliciet instelt dat de utf-8 versie gebruikt moet worden, dus bijv door mb_strlen te gebruiken ipv strlen.quote:Op dinsdag 4 december 2007 16:02 schreef markiemark het volgende:
Hooii lieve vrienden! Heb in mijn mysql database een aantal teksten staan. Deze zijn in vershchillende talen. Het probleem is dat deze de pure teksten zijn dus inclusief alle haakjes en streepjes, niet omgezet naar &..; code. Als ik deze weergeef in mijn browser komen er in Firefox blokjes met vraagtekentjes te staan en in internet explorer kleine vierkantjes. Hoe kan ik dit oplossen. De codering in de database is utf-8- unicode.
Hoe kan ik dit oplossen?
Dat is dus eigenlijk niet te doen.. met htmlentities() werkt het ook niet omdat dan de html code ook wordt omgezet.. hoe kan ik er voor zorgen dat de tekens wel om worden gezet, maar de html niet?quote:Op dinsdag 4 december 2007 21:48 schreef Farenji het volgende:
[..]
Als je met utf-8 wil werken moet *alles* utf-8 zijn, niet alleen je database. Dus zorgen dat je pagina ook in utf-8 is (meta content-type tag goed zetten en vooral ook zorgen dat utf-8 als content-type in de page headers wordt meegestuurd) en in php zorgen dat de mbstring extentie is geinstalleerd en alleen de utf-8 veilige functies gebruiken. Alle standaard string functies zoals strlen etc raken in de war van utf-8 en geven verkeerde resultaten als je niet expliciet instelt dat de utf-8 versie gebruikt moet worden, dus bijv door mb_strlen te gebruiken ipv strlen.
Dat wordt volgens mij een lastig verhaalquote:Op woensdag 5 december 2007 11:03 schreef markiemark het volgende:
[..]
Dat is dus eigenlijk niet te doen.. met htmlentities() werkt het ook niet omdat dan de html code ook wordt omgezet.. hoe kan ik er voor zorgen dat de tekens wel om worden gezet, maar de html niet?
Tja, dat is en blijft de vraag hé.quote:Op dinsdag 4 december 2007 21:32 schreef HuHu het volgende:
Ligt er een beetje aan wat je vervolgens met die zoekwoorden wil gaan doen. Wil je kijken wel woord afzonderlijk het meeste voor komt, dan kun je ze apart opslaan. Maar wil je ook relaties tussen zoekwoorden weten, dan moet je weer andere dingen bijhouden.
Ik ben altijd ervoor om je database relationeel te houden.quote:Op woensdag 5 december 2007 12:15 schreef Chandler het volgende:
[..]
Tja, dat is en blijft de vraag hé.
Maar zou jij relaties leggen? of juist niet?
En hier istie dan, als iemand er nog nut voor zietquote:Op dinsdag 4 december 2007 21:21 schreef Chandler het volgende:
Tnx Aquaatje, ik zal even een routine schrijven.
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 | function checkSpaces($in) { $inNew = explode("\n", $in); $inItems = count($inNew); $inMin = 1000; for ($x = 0; $x < $inItems; $x++) { for ($y = 0; $y < strlen($inNew[$x]); $y++) { if (substr($inNew[$x], $y, 1) != " ") { $inMin = $y; break; } } } return $inMin; } function removeSpaces($in, $remove) { $inNew = explode("\n", $in); $inItems = count($inNew); for ($x = 0; $x < $inItems; $x++) { $inNew[$x] = substr($inNew[$x], $remove, strlen($inNew[$x]) - $remove); } return implode("\n", $inNew); } $str = " hello world moi hoi lol test test test tes"; <h2>Original</h2> <pre> echo checkSpaces($str); echo "\r\n" . $str; </pre> <h2>Altered</h2> <pre> echo removeSpaces($str, checkSpaces($str)); </pre> ?> |
Het kan in ieder geval ietsje korterquote:Op woensdag 5 december 2007 13:35 schreef Chandler het volgende:
[..]
En hier istie dan, als iemand er nog nut voor ziet
[ code verwijderd ]als het sneller kan wil ik dit ook wel horen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function ltrimSpaceColumns($in) { if(preg_match_all('|^ +|m', $in, $matches)) { $min = 0x7fffffff; foreach($matches[0] as $match) { if(($newMin = strlen($match)) < $min) { $min = $newMin; } } if($min > 0) { $in = preg_replace('|^ {'.$min.'}|m', '', $in); } } return $in; } ?> |
1 2 3 4 5 6 7 8 9 10 11 | FROM client AS c WHERE c.DateAdded != 0 ORDER BY c.DateAdded DESC LIMIT ".$max." SELECT CONCAT('Updated client: ',c.Name) AS Description, c.DateUpdated AS Date FROM client AS c WHERE c.DateUpdated != 0 ORDER BY c.DateUpdated DESC LIMIT ".$max." |
1 2 3 4 5 6 7 8 | CONCAT('New client: ',c1.Name) AS DescriptionNew, c1.DateAdded, CONCAT('Updated client: ',c2.Name) AS DescriptionUpdated, c2.DateUpdated, CONCAT('Bladiebla client: ',c3.Name) AS DescriptionBladiebla, c3.DateBladiebla FROM client AS c1, client AS c2, client AS c3 WHERE c1.DateAdded != 0 AND c2.DateUpdated != 0 AND c3.DateBladiebla != 0 ORDER BY c.DateAdded DESC, c2.DateUpdated DESC, c3.DateBladiebla DESC LIMIT $max |
Zoiets?quote:Op woensdag 5 december 2007 21:59 schreef Geqxon het volgende:
Een enorm simpele vraag...
1 2 3 4 5 | FROM client AS c WHERE c.DateAdded != 0 OR c.DateUpdated != 0 ORDER BY (CASE c.DateUpdated WHEN 0 THEN c.DateAdded ELSE c.DateAdded END) DESC LIMIT ".$max." |
Er zijn clients zonder aanmaakdatum, dit is uit een oude systeemmigratie. Om deze uit het logboek te vermijden staat er deze CASE bij.quote:Op woensdag 5 december 2007 23:25 schreef SuperRembo het volgende:
[..]
Zoiets?
[ code verwijderd ]
Warom zijn die datum niet gewoon NULL als er geen datum in staat? (Dan kan je ook gewoon IFNULL gebruiken in plaats van die CASE).
Zijn er ook clients die niet toegevoegd zijn (DateAdded = 0)?
Is het niet handiger om de DateUpdated bij het toevoegen gelijk te maken aan DateAdded? (Dat sorteert makkelijker en sneller)
Dan moet je gewoon een union / union all gebruiken.quote:Op woensdag 5 december 2007 23:31 schreef Farenji het volgende:
Ongetest:
zorg dat in elke query de kolomnamen hetzelfde zijn en zet alle queries onderaan in 1 string, gescheiden door puntkomma.Voor deze string uit. Als het goed is heb je dan alles in 1 recordset.
quote:Op woensdag 5 december 2007 23:31 schreef Farenji het volgende:
Ongetest:
zorg dat in elke query de kolomnamen hetzelfde zijn en zet alle queries onderaan in 1 string, gescheiden door puntkomma.Voor deze string uit. Als het goed is heb je dan alles in 1 recordset.
Top! Union was exact wat ik zocht. Dank u.quote:Op donderdag 6 december 2007 00:12 schreef SuperRembo het volgende:
[..]
Dan moet je gewoon een union / union all gebruiken.
Als je zowel de laatste 5 toevoegingen en de laatste 5 wijzigingen wilt zien dan heb je minimaal 2 queries nodig, omdat je niet kunt sorteren op 2 dingen. Als je een toevoeging ook als een wijziging beschouwt (en bij toevoegen dus wijzigdatum en toevoegdatum gelijk maakt) dan kun je met 1 query toe.quote:Op woensdag 5 december 2007 21:59 schreef Geqxon het volgende:
Ik kan natuurlijk in een loop gaan werken, maar ik vind het het mooist om zo veel als mogelijk in de query te doen, en dat in één keer in een array te stoppen. Of kan dit niet?
Het totaalproduct, mocht dat het duidelijker maken. Het product van drie (in de applicatie vijftien) verschillende queries:quote:Op donderdag 6 december 2007 00:31 schreef Light het volgende:
[..]
Als je zowel de laatste 5 toevoegingen en de laatste 5 wijzigingen wilt zien dan heb je minimaal 2 queries nodig, omdat je niet kunt sorteren op 2 dingen. Als je een toevoeging ook als een wijziging beschouwt (en bij toevoegen dus wijzigdatum en toevoegdatum gelijk maakt) dan kun je met 1 query toe.
Hoe je bij 15 queries komt is me niet helemaal duidelijk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | | Description | Date | +-----------------------------------+------------+ | Added client x to company y | 05-12-2007 | | Added client a to company y | 04-12-2007 | | Added client d to company y | 03-12-2007 | | Added client c to company y | 02-12-2007 | | Added client b to company z | 02-12-2007 | | Added company y | 01-12-2007 | | Added company ... | 30-10-2007 | | Added company ... | 30-10-2007 | | Added company ... | 11-07-2007 | | Added company ... | 05-03-2007 | | Changed information on company y | 02-12-2007 | +-----------------------------------+------------+ |
1 2 3 4 | $query = mysql_query("SELECT * FROM vrijwilligers_gegevens WHERE YEAR(datum) = YEAR('$jaar') AND geslacht = '$geslacht' AND nationaliteit = '$nationaliteit' AND YEAR(geboortedatum) = YEAR('$geboortedatum')"); ?> |
1 2 3 4 5 6 7 8 9 | if(isset($year)){ $query_where.=" AND year(datum)='".mysql_real_escape_string($year)."'"; } if(isset($geslacht)){ $query_where.=" AND geslacht='".mysql_real_escape_string($geslacht)."'"; } $query=mysql_query("SELECT * FROM vrijwilligers_gegevens WHERE bla=bla".$query_where); ?> |
Klopt, die van mij had nog iets beter gekundquote:Op woensdag 5 december 2007 14:13 schreef autocue het volgende:
[..]
Het kan in ieder geval ietsje korter. Qua snelheid zou de volgende het denk ik moeten winnen, maar niet omdat het écht efficienter is.
[ code verwijderd ]
Als het overigens relatief vaak voorkomt dat een stuk tekst geen 'spatie kolom' heeft, dan zou jouw aanpak een stuk sneller kunnen worden (en zijn dan deze) wanneer je stopt met zoeken bij het vinden van een regel met $inMin == 0.
Vraagje; hoe zou je kunnen controlleren of een regel leeg is? in de zin van er zit een enter in je codequote:Op woensdag 5 december 2007 14:13 schreef autocue het volgende:
[..]
Het kan in ieder geval ietsje korter :P. Qua snelheid zou de volgende het denk ik moeten winnen, maar niet omdat het écht efficienter is.
[ code verwijderd ]
Als het overigens relatief vaak voorkomt dat een stuk tekst geen 'spatie kolom' heeft, dan zou jouw aanpak een stuk sneller kunnen worden (en zijn dan deze) wanneer je stopt met zoeken bij het vinden van een regel met $inMin == 0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | moi hoi lol test test test tes hello world moi hoi lol test test test tes"; |
Wat dan als er alleen een spatie op een regel staat, dan matcht ie al niet meer maar het is wel een lege regel.quote:Op donderdag 6 december 2007 20:47 schreef HuHu het volgende:
Matchen op een dubbele \n, dus \n\n.
Ik heb uit mijn css een regeltje bovenaan weggehaald waar iets over utf-8 stond.. Dat heb ik er uit gehaald. Nu zie ik geen problemen meer.quote:Op woensdag 5 december 2007 11:30 schreef JortK het volgende:
[..]
Dat wordt volgens mij een lastig verhaal
Door (bijvoorbeeldquote:Op donderdag 6 december 2007 20:17 schreef Chandler het volgende:
[..]
Vraagje; hoe zou je kunnen controlleren of een regel leeg is? in de zin van er zit een enter in je code
(voorbeeld)
[ code verwijderd ]
Nu zie je opeens een 'lege' regel.. die moet je dus overslaan? maar hoe kan ik die afvangen?
";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function ltrimSpaceColumns($in) { if(preg_match_all('|^( *)\S|m', $in, $matches)) { $min = 0x7fffffff; while(($pair = each($matches[1])) && $min > 0) { if(($newMin = strlen($pair[1])) < $min) { $min = $newMin; } } if($min > 0) { $in = preg_replace('|^ {'.$min.'}|m', '', $in); } } return $in; } ?> |
Werkt idd helemaal perfect, nu heb ik nog 1 andere vraag.quote:Op vrijdag 7 december 2007 00:41 schreef autocue het volgende:
[..]
Door (bijvoorbeeld) te forceren dat de matches waarbij de lengte van de whitespace gecheckt wordt niet enkel whitespace is. Er zal dus een niet whitespace karakter moeten volgen na de spaties, dus alleen de regex zal aangepast moeten worden en er moet verwezen worden naar een andere matching groep (namelijk die voor de spaties). Zoals volgt ongeveer
.
[ code verwijderd ]
Daar zou ik dan maar eens wat aan doen, een programmeur kan niet zonder.quote:Op vrijdag 7 december 2007 10:37 schreef Chandler het volgende:
* Chandler verstopt zich, snapt amper een bal van regex...
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |