abonnement Unibet Coolblue Bitvavo
  dinsdag 10 april 2007 @ 16:19:14 #181
85514 ralfie
!Yvan eht nioj
pi_48180854
Ik zie niet in waarom je die niet in één tabel zou doen, een lange text uit een tabel halen is natuurlijk sneller als een text uit a, een link dit uit b, linkinformatie dat uit b, en die dan ook nog eens samenvoegen in php met een hele constructie. Zelfs als je die links apart editbaar zou willen maken kun je gewoon met regexen aan de slag.
pi_48181332
Chandler, welke functie heeft de tabel 'html'?
pi_48184022
@ralfie; hoeft niet persee met regex toch? gewoon een extra optie in de tabel (link, html, etc)

@Jera: De tabel HTML heeft als functie om het HTML gedeelte van de links gescheiden te houden, dit waar ik denk dat dit scheelt in de preformance omdat hier gebruik gemaakt wordt van 'TEXT' maar hier ben ik dus niet zeker van daarom vraag ik het even
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_48185439
Ik ben een admin pagina aan het maken voor mijn gastenboek, daarvoor wil ik dat het originele bericht in een veld van een formulier gezet wordt.

1   <input type=text name=bericht value=$bericht> 


Dit doet hij wel alleen zet hij alleen het eerste woord van het bericht weg, hoe krijg ik dat dan voor elkaar?
pi_48185642
Je hoort bij HTML altijd (!) quotes te gebruiken rond de attributen, dus zo:

1<input type="text" name="bericht" value="{$bericht}">


Anders gaat het mis bij spaties. En als je de waarde van een PHP variabele in je output wil zetten, dan kun je er beter ook nog { en } omheen zetten.
pi_48185694
@ timbastiaansen: Met enkele of dubbele quotjes bij $bericht ?

Mijn vraag:

Hoe kan ik ervoor zorgen dat een php script op het laatst nog even zijn output opschoont:

Voorbeeld:

1
2
3
4
5
6
<?php 
  echo"hoi"; 
//doe wat 
// Nu pagina opschonen 
echo"dag"; 
?> 


Dat dit script dus allen "dag" echo-ed :-)
pi_48185782
Daarvoor kun je kijken naar Output Control.
pi_48185872
1
2
3
4
5
6
7
8
9
10
11
<?php
ob_start
();

echo 
"hoi";

ob_clean();

echo 
"dag";

ob_end_flush();
?>


Dit laat alleen 'dag' zien.
pi_48186205
quote:
Op dinsdag 10 april 2007 18:39 schreef HuHu het volgende:
Je hoort bij HTML altijd (!) quotes te gebruiken rond de attributen, dus zo:
[ code verwijderd ]

Anders gaat het mis bij spaties. En als je de waarde van een PHP variabele in je output wil zetten, dan kun je er beter ook nog { en } omheen zetten.
Helpt niet

Ik heb het nu zo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while ($i < $eind)
{
   $naam=mysql_result($result,$i,"naam");
   $buurt=mysql_result($result,$i,"buurt");
   $bericht=mysql_result($result,$i,"bericht");
   $datum=mysql_result($result,$i,"datum");

echo "
   <center>
<form action=edit.php method=POST name=edit> 
   <table border=1 bordercolor=black>
       <tr>
      <td width=80 VALIGN=top>
      <center>
   <input type=text name=naam value={$naam}>


En dit geeft hetzelfde resultaat als zonder { }
pi_48186675
1echo " <input value=BACKSLASH" ".$naam." BACKSLASH" > ";


Je kunt dit het beste zien als drie delen, <input value=" & $naam & "> , die doormiddel van punten aan elkaar worden gebonden.
pi_48187392
quote:
Op dinsdag 10 april 2007 18:53 schreef timbastiaansen het volgende:

[..]

Helpt niet ;(

Ik heb het nu zo
[ code verwijderd ]

En dit geeft hetzelfde resultaat als zonder { }
Wel de hele post lezen hè ;).

Het gaat voornamelijk om de quotes, de " dus.

1
2
FOUT: <input type=text ...
GOED: <input type="text" ...
pi_48187478
quote:
Op dinsdag 10 april 2007 19:04 schreef Geqxon het volgende:

[ code verwijderd ]

Je kunt dit het beste zien als drie delen, <input value=" & $naam & "> , die doormiddel van punten aan elkaar worden gebonden.
Als de de " in een string wilt hebben kun je makkelijker gewoon met de ' de echo beginnen. Dus zo:

1
2
3
<?php
echo '<input type="text" name="naam" value="' $value '">';
?>


Sowieso is het gebruik van de ' beter dan de ", omdat de tekst binnen een ' niet nog eens geparsed gaat worden en dus sneller wordt verwerkt.
pi_48187521
En wat als je dan een single-quote binnen string wilt hebben? Ik prefereer double quotes, en een backslash voor de double quote binnen de string.
pi_48187892
Een single-quote binnen een string komt met HTML output nauwelijks voor als het goed is. Verder is het sneller en persoonlijk vind ik al die backslashes maar rommelig staan.
  dinsdag 10 april 2007 @ 19:43:13 #195
85514 ralfie
!Yvan eht nioj
pi_48188122
quote:
Op dinsdag 10 april 2007 19:36 schreef HuHu het volgende:
Een single-quote binnen een string komt met HTML output nauwelijks voor als het goed is. Verder is het sneller en persoonlijk vind ik al die backslashes maar rommelig staan.
tijdje terug al gelezen (ergens in dit topique) dat enkele quotes niet tot nauwelijks sneller zijn, dus doe gewoon wat je makkelijk vind.
pi_48188590
quote:
Op dinsdag 10 april 2007 17:47 schreef Chandler het volgende:
@Jera: De tabel HTML heeft als functie om het HTML gedeelte van de links gescheiden te houden, dit waar ik denk dat dit scheelt in de preformance omdat hier gebruik gemaakt wordt van 'TEXT' maar hier ben ik dus niet zeker van daarom vraag ik het even
Nou weet ik niet wat je totaalplan is met je design maar ik weet wel wat de meeste softwarebouwers doen als ze voor een keuze staan zoals die waar jij nu mee bezig bent: best of both worlds

Als ik jou was zou ik je database zo inrichten dat het zo genormaliseerd mogelijk is (wat het gemakkelijk voor je maakt om de contents van een pagina aan te passen via een CMS en je niet in tekstkolommen hoeft te gaan zitten regexen). Vervolgens ga je contents cachen je rendert bij een opvraag van zo'n blok (of pagina) je databaseinhoud naar HTML en slaat die HTML op (in een bestand, in een aparte tabel, etc) zodat je bij toekomstige opvragen niets hoeft te gaan opbouwen in PHP maar gewoon de HTML letterlijk uit de database kunt trekken. Zodra je dan iets aanpast in de database via je CMS ga je je cache 'invalidaten' zoals dat zo mooi heet, waardoor bij de eerst volgende opvraag de HTML opnieuw gerendert wordt.

Hier op FOK! wordt dat vziw ook gedaan, met de trackers op de frontpage bijvoorbeeld. Het scheelt ontzettend qua load als je niet elke keer hoeft te joinen en HTML moet wegschrijven, terwijl je vrijwel niets inlevert op gebruiksgemak voor de beheerder
pi_48188669
quote:
Op dinsdag 10 april 2007 19:25 schreef HuHu het volgende:

[..]

Als de de " in een string wilt hebben kun je makkelijker gewoon met de ' de echo beginnen. Dus zo:
[ code verwijderd ]

Sowieso is het gebruik van de ' beter dan de ", omdat de tekst binnen een ' niet nog eens geparsed gaat worden en dus sneller wordt verwerkt.
Hoewel ik zelf alleen maar single quotes in PHP gebruik (voor zover dat mogelijk is) is dat laatste een slecht argument, keer op keer wijzen benchmarks erop dat het verschil om milliseconden gaat (op duizenden en duizenden echo's). Beter kijk je naar queries, de aanroep daarvan en alle overige functies van PHP (zie bijvoorbeeld het verschil tussen de preg* en de ereg*-functies ).
  FOK!-Schrikkelbaas dinsdag 10 april 2007 @ 20:13:01 #198
1972 Swetsenegger
Egocentrische Narcist
pi_48189230
quote:
Op dinsdag 10 april 2007 19:55 schreef JeRa het volgende:

[..]

Nou weet ik niet wat je totaalplan is met je design maar ik weet wel wat de meeste softwarebouwers doen als ze voor een keuze staan zoals die waar jij nu mee bezig bent: best of both worlds

Als ik jou was zou ik je database zo inrichten dat het zo genormaliseerd mogelijk is (wat het gemakkelijk voor je maakt om de contents van een pagina aan te passen via een CMS en je niet in tekstkolommen hoeft te gaan zitten regexen). Vervolgens ga je contents cachen je rendert bij een opvraag van zo'n blok (of pagina) je databaseinhoud naar HTML en slaat die HTML op (in een bestand, in een aparte tabel, etc) zodat je bij toekomstige opvragen niets hoeft te gaan opbouwen in PHP maar gewoon de HTML letterlijk uit de database kunt trekken. Zodra je dan iets aanpast in de database via je CMS ga je je cache 'invalidaten' zoals dat zo mooi heet, waardoor bij de eerst volgende opvraag de HTML opnieuw gerendert wordt.

Hier op FOK! wordt dat vziw ook gedaan, met de trackers op de frontpage bijvoorbeeld. Het scheelt ontzettend qua load als je niet elke keer hoeft te joinen en HTML moet wegschrijven, terwijl je vrijwel niets inlevert op gebruiksgemak voor de beheerder
Hoe invalidate je je cache, en hoe cache je op de eerste plaats? Ik bedoel hoe weet ik dat de specifieke request van dat moment door een browser wordt gedaan die de website in zijn huidige vorm al eens gezien heeft?
pi_48189411
quote:
Op dinsdag 10 april 2007 20:13 schreef Swetsenegger het volgende:

[..]

Hoe invalidate je je cache, en hoe cache je op de eerste plaats? Ik bedoel hoe weet ik dat de specifieke request van dat moment door een browser wordt gedaan die de website in zijn huidige vorm al eens gezien heeft?
Cachen is vrij simpel. Je houdt een aparte tabel bij met bijvoorbeeld een tekstuele identifier waarmee je de (unieke) cache identificeert. Het invalidaten kun je doen door zodra er in je CMS iets verandert de cache uit de tabel te gooien. Vervolgens kun je op de pagina waar de cache aangesproken wordt controleren of de cache bestaat, en zo niet: renderen die hap.

Je laatste vraag is een lastigere, maar dat bewerkstellig je door specificatie je moet specificeren óf iets wel gecached mag worden aan de hand van kennis over de inhoud. Een stukje HTML met daarin de huidige tijd moet je natuurlijk niet gaan cachen. Een cache kun je dus limiteren over een beperkt stuk van je website, maar ook in zijn geheel. Je zou bijvoorbeeld als unieke cache identifier de aanroep van de browser kunnen nemen (de URL?). Daarmee moet je natuurlijk oppassen dat je niet teveel meeneemt, anders kan een lolbroek je hele cache tabel volstoppen met nutteloze caches.

Verder is het niet beperkt tot één browser/client maar moet je caches voor iedereen beschikbaar maken zoals ik al als voorbeeld aanhaalde, de trackers op de frontpage hier zijn voor iedereen hetzelfde en hoeven pas geüpdatet te worden zodra een nieuwsposter een nieuw bericht plaatst.
  FOK!-Schrikkelbaas dinsdag 10 april 2007 @ 21:06:03 #200
1972 Swetsenegger
Egocentrische Narcist
pi_48191595
quote:
Op dinsdag 10 april 2007 20:17 schreef JeRa het volgende:

[..]

Cachen is vrij simpel. Je houdt een aparte tabel bij met bijvoorbeeld een tekstuele identifier waarmee je de (unieke) cache identificeert. Het invalidaten kun je doen door zodra er in je CMS iets verandert de cache uit de tabel te gooien. Vervolgens kun je op de pagina waar de cache aangesproken wordt controleren of de cache bestaat, en zo niet: renderen die hap.

Je laatste vraag is een lastigere, maar dat bewerkstellig je door specificatie je moet specificeren óf iets wel gecached mag worden aan de hand van kennis over de inhoud. Een stukje HTML met daarin de huidige tijd moet je natuurlijk niet gaan cachen. Een cache kun je dus limiteren over een beperkt stuk van je website, maar ook in zijn geheel. Je zou bijvoorbeeld als unieke cache identifier de aanroep van de browser kunnen nemen (de URL?). Daarmee moet je natuurlijk oppassen dat je niet teveel meeneemt, anders kan een lolbroek je hele cache tabel volstoppen met nutteloze caches.

Verder is het niet beperkt tot één browser/client maar moet je caches voor iedereen beschikbaar maken zoals ik al als voorbeeld aanhaalde, de trackers op de frontpage hier zijn voor iedereen hetzelfde en hoeven pas geüpdatet te worden zodra een nieuwsposter een nieuw bericht plaatst.
Helder, dank je
pi_48192034
Het gebruik van enkele (apostrophe) of dubbele aanhalingstekens scheelt een beetje, maar is nauwelijks merkbaar. Overigens zit er een verschil tussen het gebruik van enkele of dubbele aanhalingstekens. Alles wat tussen dubbele aanhalingstekens staat word dus geparsed:

1
2
3
4
5
<?php
$var
='Pietje';
echo 
"Ik heet $var";
// Resultaat: Ik heet Pietje
?>


1
2
3
4
5
<?php
$var
='Pietje';
echo 
'Ik heet $var';
// Resultaat: Ik heet $var
?>


Er zijn overigens veel meer manieren om iets te doen, zo kun je bijvoorbeeld ook een punt gebruiken, als volgt:

1
2
3
4
5
<?php
$var
='Pietje';
echo 
"Ik heet ".$var;
// Resultaat: Ik heet Pietje
?>


1
2
3
4
5
<?php
$var
='Pietje';
echo 
'Ik heet '.$var;
// Resultaat: Ik heet Pietje
?>


Mocht je in een PHP regel die je met dubbele aanhalingstekens opent dubbele aanhalingstekens willen gebruiken, of in een PHP regel die je met een enkel aanhalingsteken opent enkele aanhalingstekens gebruiken, dan gebruik je gewoon een 'escape character', die heeft vrijwel elke programmeertaal. Wat voorbeelden:

1
2
3
4
5
<?php
$var
='Pietje';
echo 
"Ik heet '$var'.";
// Resultaat: Ik heet 'Pietje'.
?>


1
2
3
4
5
<?php
$var
='Pietje';
echo 
"Ik heet \"$var\"";
// Resultaat: Ik heet "Pietje"
?>


1
2
3
4
5
<?php
$var
='Pietje';
echo 
'Ik heet " '$var .' ";
// Resultaat: Ik heet " Pietje "
?>


Ik kom dit heel vaak tegen omdat al mijn PHP bestanden altijd volledig uit PHP bestaan, in tegenstelling tot een soort van HTML pagina met meerdere PHP 'blocks' (aparte stukjes tussen de <? en ?> tags). Zoals eerder hier gezegd is is het héél belangrijk om alle HTML attributen te quoten, dus stel je hebt het volgende stukje HTML:

1
2
3
4
5
6
7
<div style="font-weight:bold; background-color:#0000ff;">

<p>test en zo, ik ben "Gabber Piet"!</p>

<img src="plaatje.jpg" style="width:100px; height:100px;" onclick="alert('Je hebt op het plaatje geklikt!');" alt="Plaatje" />

</div>


Dan zou ik, als ik een bestand volledig als PHP wil parsen, dus het volgende krijgen:

1
2
3
4
5
6
7
8
9
<?php
echo "<div style=\"font-weight:bold; background-color:#0000ff;\">

<p>test en zo, ik ben \"Gabber Piet\"!</p>

<img src=\"plaatje.jpg\" style=\"width:100px; height:100px;\" onclick=\"alert('Je hebt op het plaatje geklikt!');\" alt=\"Plaatje\" />

</div>"
;
?>


Puur een kwestie van de syntaxis kennen. Zoals ik al eerder zei, heeft vrijwel elke programmeertaal een escape character. In ASP kune je bijvoorbeeld een dubbel aanhalingsteken 'escapen' door er een tweede dubbel aanhalingsteken voor te zetten. Met andere woorden, in PHP is de escape character een , in ASP is de escape character een ".
pi_48193738
voor de regex / string koningen onder jullie:

Ik wil van een gegeven string checken of dit een geldige URL is. Nu heb ik een regex die allerlei mogelijke strings accepteert (niet alleen www.domein.nl, maar ook http://www.domein.nl:1080/~home/ bijvoorbeeld).

Nu wil ik echter ook de TLD checken tegen een lijst met bestaande TLD's, ik krijg deze alleen niet altijd te pakken in mijn string.... Als het ding op .nl / .com / .whatever eindigt lukt het wel natuurlijk, maar als er nog wat achteraan komt gaat het fout.

Wie weet raad?


Gerelateerd: vanaf welke PHP versie werken regex matches als P{M} ? In PHP 4.3.9 op mijn vorige Windows server werkte het, maar op mijn huidige Linux server niet
pi_48213484
Hoe kan ik met 1 regex oid alle spaties en - uit een string verwijderen?
pi_48214025
quote:
Op dinsdag 10 april 2007 21:51 schreef Xcalibur het volgende:
Als het ding op .nl / .com / .whatever eindigt lukt het wel natuurlijk, maar als er nog wat achteraan komt gaat het fout.

Wie weet raad?
Wat voor regex heb je nu dan?
quote:
Gerelateerd: vanaf welke PHP versie werken regex matches als P{M} ? In PHP 4.3.9 op mijn vorige Windows server werkte het, maar op mijn huidige Linux server niet
Dat staat gewoon in de manual hoor, zie deze pagina:
quote:
Unicode character properties
Since PHP 4.4.0 and 5.1.0, three additional escape sequences to match generic character types are available when UTF-8 mode is selected. They are:
\p{xx}
a character with the xx property
\P{xx}
a character without the xx property
\X
an extended Unicode sequence
pi_48214055
quote:
Op woensdag 11 april 2007 13:22 schreef super-muffin het volgende:
Hoe kan ik met 1 regex oid alle spaties en - uit een string verwijderen?
Je moet niet alles met regexen willen oplossen
1
2
3
<?php
$string 
str_replace(array(' ''-'), ''$string);
?>
pi_48214672
thnx, bijna zoals ik het had, alleen dan 2 maal een str_replace.
  woensdag 11 april 2007 @ 14:39:38 #207
161108 JohannesPaulus
Divide and conquer
pi_48216288
quote:
Op zaterdag 7 april 2007 16:11 schreef JeRa het volgende:

[..]

Zet je Messenger client aan
Sorry, ik zag je reactie zojuist pas
Ik stuur je een email met mijn probleem. Zodra het kan kom ik online op MSN
In peace, sons bury their fathers; in war, fathers bury their sons. (484 BC–ca.425 BC, Herodotus)
He who knows when he can fight and when he cannot will be victorious. (c. 544 – 496 BC, Sun Tzu)
pi_48220325
hoe kun je simpel ë veranderen naar e, is hier een functie voor? ik kon deze namelijk zelf niet vinden
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 11 april 2007 @ 16:30:27 #209
161108 JohannesPaulus
Divide and conquer
pi_48220490
quote:
Op woensdag 11 april 2007 16:27 schreef Chandler het volgende:
hoe kun je simpel ë veranderen naar e, is hier een functie voor? ik kon deze namelijk zelf niet vinden
je kan ë veranderen naar e in kladblok
bewerken -> vervangen

Of bedoel je dat niet?
In peace, sons bury their fathers; in war, fathers bury their sons. (484 BC–ca.425 BC, Herodotus)
He who knows when he can fight and when he cannot will be victorious. (c. 544 – 496 BC, Sun Tzu)
pi_48220497
quote:
Op woensdag 11 april 2007 16:27 schreef Chandler het volgende:
hoe kun je simpel ë veranderen naar e, is hier een functie voor? ik kon deze namelijk zelf niet vinden :{
1
2
3
<?php
echo str_replace("ë","e","Meine namë sëite Hans");
?>


:+
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')