Partyflock
 
Forumonderwerp · 731659
Waarschuw beheerder
hey
heeft iemand een scriptje dat de pagina automatisch refresht?
het moet maar 1 keer refreshen! na 1 seconde namelijk.
heb al genoeg gegoogled enzo maar kon nie ech iets vinden dat maar 1 keer refresht.
Waarschuw beheerder
leejoo.nl heeft er wel 1 ja, maar die blijft refreshen.
ik wil er 1 die maar 1 keer refresht ;P
Waarschuw beheerder
donateur
hoezo moet ie na 1 seconde refreshen dan ?
laatste aanpassing
Waarschuw beheerder
donateur
hoezo moet ie na 1 seconde refreshen dan ?


Dat lijkt mij enn betere vraag, waarschijnlijk is er een minder omslachtige oplossing..
Waarschuw beheerder
Idd, leg je verhaal uit en we kunnen de juiste oplossing aandragen, welke niet perse javascript gebonden is.

Het is namelijk best lastig om een pagina zichzelf maximaal 1 keer te laten refreshen (HTTP = stateless).
Waarschuw beheerder
nou kijk. ik heb een formulier waar ik gegevens van een klant kan toevoegen. op de profiel pagina van de klant heb ik een knopje "bewerk klant gegevens".
op die pagina krijg je gewoon het zelfde formulier weer alleen dan met de values uit de database er al in ( lijkt me logisch )
Alleen bij drop down menu's krijg je niet gelijk de waarde te zien die eerder ingevuld is, pas als je de pagina refresht komt de value in het drop down menu.
Nu heb ik leuk een knopje bovenin dat de pagina refresht als je erop klik maar het zou veel handiger zijn als er een script is dat de pagina na 1 seconde ofzo ( of nog korter ) 1 keer refresht zodat alle gegevens weer gegeven worden
Waarschuw beheerder
donateur
ik zou er geen oplossing voor weten...
wanneer je een pagina ververst, activeer je de codes ook opnieuw, dus zal hij blijven verversen, een simpele manier om dat te ontwijken zal er zeker niet zijn.

script anders schrijven zou een optie zijn
Waarschuw beheerder
Het lijkt me makkelijker als je dat probleem debugged in plaats van het met dit lapmiddel op te lossen.

De manier waarop ik zelf dropdown's op de juiste waarde zet is als volgt (misschien kan het netter, maar het werkt):



<select name="country">

<option value="Nederland"<? if ($input['country'] == "Nederland") echo " selected"; else if (empty($input['country']) && $user->getCountry == "Nederland") echo " selected"; ?>>Nederla$

<option value="Belgie"<? if ($input['country'] == "Belgie") echo " selected"; else if (empty($input['country']) && $user->getCountry == "Belgie") echo " selected"; ?>>België

</select>



In PHP overigens. Het moet niet mogelijk zijn om direct de juiste gegevens uit de database te halen.

Mocht je alsnog een keer willen refreshen, dan kan dat lastig met JavaScript. Het probleem zit hem erin dat je gewoon dezelfde pagina weer opvraagt, waardoor je blijft refreshen (oneindige loop).

Je moet dus een stopvoorwaarde creeren en dat is lastig in PHP. Een mogelijkheid is om aan de URI parameters mee te geven en deze te parsen en uit te lezen. Mocht je dit ondanks mijn eerdere advies toe willen passen, dan kan ik je wel voorbeeldcode geven.

Overigens kun je uiteraard ook conditioneel in je scriptingtaal deze stopvoorwaarde implementeren. Dit blijft echter net als de JavaScript methode een lapmiddel voor een ander probleem, maar heeft als voordeel dat het parsen van parameters uit je URI makkelijker gaat dan met JavaScript.

Wil je weten waarom de dropdown's niet direct op de juiste waarde staan, dan zul je hier de verantwoordelijke code moeten copy pasten, zodat we daar even naar kunnen kijken.
Waarschuw beheerder
hmmz.
jou manier werkt nog niet bij mij. ik heb in de database RT3 en hij laat RT5 zien. hier de code

<select name="rechts">
<option value="RT5"<? if ($input['rechts'] == "RT5") echo " selected"; else if (empty($input['rechts']) && $user->getRechts == "RT5") echo " selected"; ?>>RT5
<option value="RT4"<? if ($input['rechts'] == "RT4") echo " selected"; else if (empty($input['rechts']) && $user->getRechts == "RT4") echo " selected"; ?>>RT4
<option value="RT3"<? if ($input['rechts'] == "RT3") echo " selected"; else if (empty($input['rechts']) && $user->getRechts == "RT3") echo " selected"; ?>>RT3
<option value="RT2"<? if ($input['rechts'] == "RT2") echo " selected"; else if (empty($input['rechts']) && $user->getRechts == "RT2") echo " selected"; ?>>RT2
<option value="RT1"<? if ($input['rechts'] == "RT1") echo " selected"; else if (empty($input['rechts']) && $user->getRechts == "RT1") echo " selected"; ?>>RT1
</select>
Waarschuw beheerder
$user is bij mij een instantie van de gebruiker (Object Oriented), daar heb je dus weinig aan. Ik denk dat je met de volgende code wel ergens moet komen:



<?

// haal hier de waarde uit de database

$rechts = getFromDatabaseDeWaardeVanRechts($implementeerDitZelf);

?>

<select name="rechts">

<option value="RT5"<? if ($rechts == "RT5") echo " selected"; ?>>RT5

<option value="RT4"<? if ($rechts == "RT4") echo " selected"; ?>>RT4

<!-- zelfde verhaal voor RT3 t/m RT1 -->

</select>



Om te debuggen zou je $rechts even uit kunnen printen nadat hij uit de database komt. De code die ik had gecopy paste had ik ff snel uit een site gehaald en is iets ingewikkelder, omdat ik met 3 gevallen rekening moet houden (leeg, net ingegeven en uit database). Maar vergeet dat maar voor de rest.

Het principe komt er gewoon op neer dat als de waarde uit de database gelijk is aan de waarde van de huidige option, je een even " selected" in de tag moet printen (waarsch. niet XHTML compliant :$). Mocht je veel waarden hebben, overweeg dan een array van die waarden te maken en met een foreach loop zo alle <option> te printen, terwijl je dus door de array wandelt.
Waarschuw beheerder
werkt perfect !!
thnx!
levert bij grote drop down menu's wel veel code op maar ach :d
Waarschuw beheerder
nog klein vraagje, kan die methode ook werken met values waar een spatie in voor komt?
iets als dit dus:

<option value="Blauwe nagel"<? if ($afwijking == "Blauwe nagel") echo " selected"; ?>>Blauwe nagel
Waarschuw beheerder
Ja, spaties maakt niet uit. Uiteaard moet de string (de tekst tussen de aanhalingstekens) wel identiek zijn, maar dat is met 'normale' karakters hetzelfde.

Wil je jezelf wat code besparen, dan zou je het als volgt kunnen doen:



<?

// haal de 'echte' rechts uit de database

$rechts = getWeerUitDatabase($gedoe);

// definieer alle mogelijke waarden van rechts

$rechtsarray = array("RT1", "RT2", "RT3", "RT4", "RT5");

?>

<select name="rechts">

<?

// print voor elke mogelijke waarde van rechts een option

foreach($rechtsarray as $element) {

?>

<option value="<?= $element; ?>"<? if ($rechts == $element) echo " selected"; ?>><?= $element; ?>

<?

}

?>

</select>



Let wel dat hierboven de constructie:

<?= $parameter; ?>


gelijk is aan:

<? echo $parameter; ?>


Het is niets meer dan een verkorte schrijfwijze, het effect is precies hetzelfde.