selectbox

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.260
Hallo

Voor een selectbox volgende voorbeeld±

HTML:
 <select  name="status" id="status" onchange="if(this.value!= 0){location=this.options[this.selectedIndex].value}" >
 <option value="test1.html?id=3237&amp;month=04&amp;year=2016">April</option>
<option value="test1.html?id=3237&amp;month=05&amp;year=2016">Mei</option>
</select>

door de onchange wordt pagina ververs en gaat de option weer naar 1e waarde(April),
is er een manier om als ik mei kies deze waarde zichtbaar te houden in de select.

Het lijkt op deze post?
http://www.helpmij.nl/forum/showthread.php/902579-Tekst-(niet-value!)-van-dropdown-naar-textbox

maar heeft geen onchange functie.
 
Laatst bewerkt:
Met de function (die trouwens niet van mij is) kun je een variabele uit de url lezen. In jouw geval de month.
Code:
<select name="status" id="status" onchange="if(this.value != 0){location=this.options[this.selectedIndex].value}">
   <option value="index.php?id=3237&month=03&year=2016">Maart</option>
   <option value="index.php?id=3237&month=04&year=2016">April</option>
   <option value="index.php?id=3237&month=05&year=2016">Mei</option>
   <option value="index.php?id=3237&month=06&year=2016">Juni</option>
</select>
<script type="text/javascript">
function gup(name) {
   url = location.href;
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp(regexS);
   var results = regex.exec(url);
   return results == null ? null : results[1];
}
var Id = '3237';
var Datum = new Date();
var Jaar = Datum.getFullYear();
var Maand = gup('month');
var Status = document.getElementById("status");
Status.value = 'index.php?id='+Id+'&month='+Maand+'&year='+Jaar;
</script>
Suc6. Have fun.
 
Beste Bron,

Bedankt dat werkt! heb id weggelaten die had ik niet nodig.

Is er ook nog iets dat als url niks bevat , kal3.php de actuele maand wordt weergegeven anders moet het maar met PHP.

PHP:
  <?php  $jaar = date("Y"); ?>
// voor actueel jaar

PHP:
<select name="status" id="status" onchange="if(this.value != 0){location=this.options[this.selectedIndex].value}">
     
           <option value="kal3.php?month=01&amp;year=<?= $jaar ?>">Januari</option>
<option value="kal3.php?month=02&year=<?= $jaar ?>">Februari</option>

<option value="kal3.php?month=03&year=<?= $jaar ?>">Maart</option>

<option value="kal3.php?month=04&amp;year=<?= $jaar ?>">April</option>
<option value="kal3.php?month=05&amp;year=<?= $jaar ?>">Mei</option>
<option value="kal3.php?month=06&amp;year=<?= $jaar ?>">Juni</option>
<option value="kal3.php?month=07&amp;year=<?= $jaar ?>">Juli</option>
<option value="kal3.php?month=08&amp;year=<?= $jaar ?>">Augustus</option>
<option value="kal3.php?month=09&amp;year=<?= $jaar ?>">September</option>
<option value="kal3.php?month=10&amp;year=<?= $jaar ?>">Oktober</option>
<option value="kal3.php?month=11&amp;year=<?= $jaar ?>">November</option>
<option value="kal3.php?month=12&amp;year=<?= $jaar ?>">December</option>
            </select>

Code:
<script type="text/javascript">
function gup(name) {
   url = location.href;
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp(regexS);
   var results = regex.exec(url);
   return results == null ? null : results[1];
}
var Datum = new Date();
var Jaar = Datum.getFullYear();
var Maand = gup('month');
var Status = document.getElementById("status");
Status.value = 'kal3.php?month='+Maand+'&year='+Jaar;
</script>
 
Laatst bewerkt:
Het jaar kun je idd het beste met php invullen op deze manier
Code:
<select name="status" id="status" onchange="if(this.value != 0){location=this.options[this.selectedIndex].value}">
  <option value="kal3.php?month=01&year=<?php echo($jaar); ?>">Januari</option>
  <option value="kal3.php?month=02&year=<?php echo($jaar); ?>">Februari</option>
  <option value="kal3.php?month=03&year=<?php echo($jaar); ?>">Maart</option>
   .....
</select>
Het script bepaalt nu zelf de huidige maand en/of jaar als deze om wat voor reden dan ook niet in de url staan.
Code:
<script type="text/javascript">
//get url parameter
function gup(name) {
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var url = location.href;
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp(regexS);
   var results = regex.exec(url);
   return results == null ? null : results[1];
}
var Datum = new Date();
//year or current year
var Jaar = gup('year');
if (Jaar == null || Jaar == '') Jaar = Datum.getFullYear();
//month or current month
var Maand = gup('month');
if (Maand == null || Maand == '') Maand = ((Datum.getMonth() < 10) ? "0" : "") + Datum.getMonth();
//select value
var Status = document.getElementById("status");
Status.value = 'kal3.php?month='+Maand+'&year='+Jaar;
</script>
Het volgende werkt zonder probleem
kal3.php
kal3.php?year=
kal3.php?maand=
kal3.php?maand=&year=
 
Laatst bewerkt:
Als de url is kalender.php krijg ik geen data terug nu

In de Chrome console krijg ik foutmelding; Uncaught ReferenceError: Invalid left-hand side in assignment

het gaat dan om de regel met;

Code:
Status.value = kalender.php?month='+Maand+'&year='+Jaar;


Edit;
moet zijn
Code:
Status.value = [COLOR="#FF0000"]'[/COLOR]kalender.php?month='+Maand+'&year='+Jaar;


maar nog geen data
 
Laatst bewerkt:
Heb je ook in alle options kal3.php veranderd in kalender.php
(kal3.php haalde ik uit je eerdere voorbeeld)
<option value="kalender.php?month=.....&year=<?php echo($jaar); ?>">

Begint de select regel met
<select name="status" id="status" .......
 
Laatst bewerkt:
Ja dat staat allemaal goed


PHP alternatief:

Ik kan natuurlijk als er geen GET is, op de actuele maand/ jaar laten zoeken met php.
 
Edit:
De ' heb ik hierboven in post 4 tussengevoegd.
Even in Chrome getest op alle variaties, alles werkt nu goed.

Ik vind dat server-side php altijd de voorkeur heeft boven javascript, tenzij je iets met een gegronde reden client-side wilt uitvoeren.
 
Laatst bewerkt:
Dus als ik je goed begrijp krijg je op index.php nu de data van nov. 2016 terug, ZONDER verder gebruik te maken van php ,
bij mij is dat niet het geval
 
Ik ben ff de draad kwijt, we hebben het over bestand: test1.html, kal3.php, kalender.php en index.php.
Hoe heet het bestand waar dit allemaal in staat?
Code:
Ik ben van javascript uitgegaan, uitzondering deze php:

<?php $jaar = date("Y"); ?>

en in de options deze php:

<option value="index.php?month=01&year=<?php echo($jaar); ?>">Januari</option>

Als je in de options "index.php" gebruikt dan moet deze bestandsnaam ook in:

Status.value = 'index.php?month='+Maand+'&year='+Jaar;
 
Sorry , was mijn fout heb bestandsnaam wat te veel veranderd voor testwerk.

het is kalender.php

Ik heb alles goed staan maar met kalender.php wordt geen data getoond, uitgaande dat dit uit jou javascript moet voortkomen.
 
Copy/paste het volgende ergens tussen body en /body in bestand "kalender.php"
Code:
<!--volgende regel heb je al ergens staan, hier gebruik ik het om te testen-->
<?php $jaar = date("Y"); ?>

<select name="status" id="status" onchange="if(this.value != 0){location=this.options[this.selectedIndex].value}">
  <option value="kalender.php?month=01&year=<?php echo($jaar); ?>">Januari</option>
  <option value="kalender.php?month=02&year=<?php echo($jaar); ?>">Februari</option>
  <option value="kalender.php?month=03&year=<?php echo($jaar); ?>">Maart</option>
  <option value="kalender.php?month=04&year=<?php echo($jaar); ?>">April</option>
  <option value="kalender.php?month=05&year=<?php echo($jaar); ?>">Mei</option>
  <option value="kalender.php?month=06&year=<?php echo($jaar); ?>">Juni</option>
  <option value="kalender.php?month=07&year=<?php echo($jaar); ?>">Juli</option>
  <option value="kalender.php?month=08&year=<?php echo($jaar); ?>">Augustus</option>
  <option value="kalender.php?month=09&year=<?php echo($jaar); ?>">September</option>
  <option value="kalender.php?month=10&year=<?php echo($jaar); ?>">Oktober</option>
  <option value="kalender.php?month=11&year=<?php echo($jaar); ?>">November</option>
  <option value="kalender.php?month=12&year=<?php echo($jaar); ?>">December</option>
</select>

<!--volgende regel om te testen-->
<p><span id="test-jaar">jaar?</span> - <span id="test-maand">maand?</span></p>

<script type="text/javascript">
//get url parameter
function gup(name) {
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var url = location.href;
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp(regexS);
   var results = regex.exec(url);
   return results == null ? null : results[1];
}
var Datum = new Date();
//year or current year
var Jaar = gup('year');
if (Jaar == null || Jaar == '') Jaar = Datum.getFullYear();
//month or current month
var Maand = gup('month');
if (Maand == null || Maand == '') Maand = ((Datum.getMonth() < 10) ? "0" : "") + Datum.getMonth();
//select value
var Status = document.getElementById("status");
Status.value = 'kalender.php?month='+Maand+'&year='+Jaar;
//volgende 2 regels om te testen
document.getElementById("test-jaar").innerHTML = Jaar;
document.getElementById("test-maand").innerHTML = Maand;
</script>

** edit
Het script werkt niet goed als je bewust het jaartal in de url verandert. Dat is logisch want dit kleine script kan niet "raden" wat het jaartal moet zijn wat in elke option staat. Als je dit toch wilt dan zou je bijvoorbeeld voor het jaartal een aparte select box kunnen maken. Er zijn andere oplossingen maar misschien vind je het zo goed werken waarvoor je het nodig hebt.
 
Laatst bewerkt:
De regel om te testen geeft: met kalender.php:
2016 - 010

0 voor 10 moet wellicht weg?

selectbox staat op de maand okober en geen data (dat oktober is aanwezig in de database)


kalender.php?month=01&year=2016 januari 2016 = goed
ez..
kalender.php?month=10&year=2016 oktober 2016 = goed
kalender.php?month=11&year=2016 november 2016 = goed
enz
------------------------------------------------


Met PHP conditie.
PHP:
<?php 

// als Geen GET selecteer actuele maand en jaar.
        if (empty($_GET)){
	 $maand = date("m");
$jaar = date("Y"); 
}
echo $maand; 
?>


// query voor tabel in database ......
......WHERE MONTH(fromDate) = '$maand' AND YEAR(fromDate) = '$jaar' .....

Dit levert hetzelfde op: selectbox op de maand okober en geen data



edit:

nou voor de test regel:
2016 - 10

geen nul voor de 10 ..vreemd, maar geen data.

edit2:


kalender.php

Ik vermoed dat in het script iets fout gaat met okt/10, alles werkt nu (wel) in combinatie met de php conditie , alleen de select geeft oktober aan en de data is zoals het moet zijn van november.

Indien ik de overige maanden selecteer werkt alles goed, ook oktober
kalender.php?month=10&year=2016

Het punt is dus dat ik met index.php de data van november terug krijg (is ok want is de actuele maand), maar selectbox oktober aangeeft.

testregel: 2016 - 10

getest in Edge en Chrome
 
Laatst bewerkt:
Sorry, foutje van mij. De getMonth() geeft als resultaat 0-11 (niet 1-12). Dit is het goede stukje voor de maand:
Code:
//month or current month
var Maand = gup('month');
if (Maand == null || Maand == '') Maand = ((Datum.getMonth() < 9) ? "0" : "") + (Datum.getMonth() + 1);
Een url zonder maand en/of jaar moet in de php afgevangen worden omdat javascript dit niet aan de phpp kan doorgeven.
 
Beste Bron,

Bedankt voor de grote medewerking, zo te zien is het nu opgelost.
 
Hallo,

Alls URL er zo zou uit zien

Code:
t/.....test.php?special=Special

Kan de selectbox dan ook Special aangeven als die is geselecteerd i.p. van de geselecteerde maand?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan