probleem met undefined offset php 5.4
Sinds 21 april 2015 is er upgrade php 5.4 bij mijndomein.nl en ben ik bezig dagelijks bezig voor oplossingen. Bijna alle errors heb ik opgelost is via hulp php websites, maar bij onderstaand statement krijg ik het niet voor elkaar.
Bijvoorbeeld - http://rspp.nl/motor.php:
* Wanneer ik in de eerste regel isset toevoeg (geen artikel), dan zie ik op mijn site een lege regel met een keuzepijl rechts.
* Wanneer ik op mijn website op de keuzepijl klik en kies voor undefined offset enz. value 1, dan springen de artikelen op de website weer in de oude vorm, maar wanneer ik dan een 1 of 2 artikelen wil toevoegen, dan springen alle artikelen op 9. Ik kan het niet verklaren.
Wie o wie wil of kan mij hierbij helpen? Bij voorbaat dank, Margot Schuitemaker
Hieronder mijn huidige bestel-statement.
++++++++++++++++++++++++++++++++
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Ik bestel
<select name="invoer<?=$i;?>" id="invoer<?=$i;?>" onChange="document.forms['guestform'].submit();">
<option <? if (isset($aantal[$i])=="") {?>selected <?};?> value=0> </option>
<option <? if ($aantal[$i]=="1") {?>selected <?};?> value=1>1</option>
<option <? if ($aantal[$i]=="2") {?>selected <?};?> value=2>2</option>
<option <? if ($aantal[$i]=="3") {?>selected <?};?> value=3>3</option>
<option <? if ($aantal[$i]=="4") {?>selected <?};?> value=4>4</option>
<option <? if ($aantal[$i]=="5") {?>selected <?};?> value=5>5</option>
<option <? if ($aantal[$i]=="6") {?>selected <?};?> value=6>6</option>
<option <? if ($aantal[$i]=="7") {?>selected <?};?> value=7>7</option>
<option <? if ($aantal[$i]=="8") {?>selected <?};?> value=8>8</option>
<option <? if ($aantal[$i]=="9") {?>selected <?};?> value=9>9</option>
</select>
<select name="invoer<?=$i;?>" id="invoer<?=$i;?>" onChange="document.forms['guestform'].submit();">
<option <? if (isset($aantal[$i])=="") {?>selected <?};?> value=0> </option>
<option <? if ($aantal[$i]=="1") {?>selected <?};?> value=1>1</option>
<option <? if ($aantal[$i]=="2") {?>selected <?};?> value=2>2</option>
<option <? if ($aantal[$i]=="3") {?>selected <?};?> value=3>3</option>
<option <? if ($aantal[$i]=="4") {?>selected <?};?> value=4>4</option>
<option <? if ($aantal[$i]=="5") {?>selected <?};?> value=5>5</option>
<option <? if ($aantal[$i]=="6") {?>selected <?};?> value=6>6</option>
<option <? if ($aantal[$i]=="7") {?>selected <?};?> value=7>7</option>
<option <? if ($aantal[$i]=="8") {?>selected <?};?> value=8>8</option>
<option <? if ($aantal[$i]=="9") {?>selected <?};?> value=9>9</option>
</select>
++++++++++++++++++++++++++++
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/04/2015 23:51:01 door - Ariën -
Dus:
1e artikel: $i=1
2e artikel: $i=2
etc
Met alle respect maar deze website is echt aan een giga facelift toe :-)
Gewijzigd op 01/05/2015 00:44:59 door Frank Nietbelangrijk
Als ik deze code zie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<select name="invoer<?=$i;?>" id="invoer<?=$i;?>" onChange="document.forms['guestform'].submit();">
<option <? if (isset($aantal[$i])=="") {?>selected <?};?> value=0> </option>
<option <? if ($aantal[$i]=="1") {?>selected <?};?> value=1>1</option>
<option <? if ($aantal[$i]=="2") {?>selected <?};?> value=2>2</option>
<option <? if ($aantal[$i]=="3") {?>selected <?};?> value=3>3</option>
<option <? if ($aantal[$i]=="4") {?>selected <?};?> value=4>4</option>
<option <? if ($aantal[$i]=="5") {?>selected <?};?> value=5>5</option>
<option <? if ($aantal[$i]=="6") {?>selected <?};?> value=6>6</option>
<option <? if ($aantal[$i]=="7") {?>selected <?};?> value=7>7</option>
<option <? if ($aantal[$i]=="8") {?>selected <?};?> value=8>8</option>
<option <? if ($aantal[$i]=="9") {?>selected <?};?> value=9>9</option>
</select>
<option <? if (isset($aantal[$i])=="") {?>selected <?};?> value=0> </option>
<option <? if ($aantal[$i]=="1") {?>selected <?};?> value=1>1</option>
<option <? if ($aantal[$i]=="2") {?>selected <?};?> value=2>2</option>
<option <? if ($aantal[$i]=="3") {?>selected <?};?> value=3>3</option>
<option <? if ($aantal[$i]=="4") {?>selected <?};?> value=4>4</option>
<option <? if ($aantal[$i]=="5") {?>selected <?};?> value=5>5</option>
<option <? if ($aantal[$i]=="6") {?>selected <?};?> value=6>6</option>
<option <? if ($aantal[$i]=="7") {?>selected <?};?> value=7>7</option>
<option <? if ($aantal[$i]=="8") {?>selected <?};?> value=8>8</option>
<option <? if ($aantal[$i]=="9") {?>selected <?};?> value=9>9</option>
</select>
Dan kan deze wel wat korter gemaakt worden. Hierbij kun je de volgende strategie hanteren voor het "selected" zijn van een waarde:
- als er geen aantal is geselecteerd voor item $i zou de waarde 0 geselecteerd moeten zijn
- als er wel een aantal is geselecteerd voor item $i dan moet deze waarde geselecteerd worden
Daarbij is het ook belangrijk dat je HTML correct is. Alle waarden van eigenschappen dienen tussen "dubbele quotes" te staan. Daarnaast zou ik voor een code-variant gaan die compatibeler is, dat wil zeggen, schrijf de PHP-tags uit.
Hiermee kom je tot de volgende aanpassing:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// test waarden
// test #1 5 wordt geselecteerd
$i = 2;
$aantal[2] = 5;
// test #2 0 wordt geselecteerd
/*
$i = 1;
$aantal[12] = 6;
*/
?>
<select name="invoer<?php echo $i ?>" id="invoer<?php echo $i ?>" onChange="document.forms['guestform'].submit();"><?php
for ($q=0; $q < 10; $q++) {
// wat is het aantal wat geselecteerd zou moeten zijn voor item $i?
$selectedValue = isset($aantal[$i]) ? $aantal[$i] : 0;
// is dit de huidige optie?
$selected = ($selectedValue == $q ? ' selected="selected"' : '');
// ingeval het aantal gelijk is aan 0 willen we " " afdrukken in plaats van het aantal
$label = ($q == 0 ? ' ' : $q);
?><option value="<?php echo $q ?>"<?php echo $selected ?>><?php echo $label ?></option><?php
}
?></select>
// test waarden
// test #1 5 wordt geselecteerd
$i = 2;
$aantal[2] = 5;
// test #2 0 wordt geselecteerd
/*
$i = 1;
$aantal[12] = 6;
*/
?>
<select name="invoer<?php echo $i ?>" id="invoer<?php echo $i ?>" onChange="document.forms['guestform'].submit();"><?php
for ($q=0; $q < 10; $q++) {
// wat is het aantal wat geselecteerd zou moeten zijn voor item $i?
$selectedValue = isset($aantal[$i]) ? $aantal[$i] : 0;
// is dit de huidige optie?
$selected = ($selectedValue == $q ? ' selected="selected"' : '');
// ingeval het aantal gelijk is aan 0 willen we " " afdrukken in plaats van het aantal
$label = ($q == 0 ? ' ' : $q);
?><option value="<?php echo $q ?>"<?php echo $selected ?>><?php echo $label ?></option><?php
}
?></select>
Bedankt voor je reactie. Ik ben maar een amateur en heb dit in 2009 samen met een coach in elkaar gezet. Ik ben al blij dat ik deze website werkend kan houden:)).
Ik ben er nu aan het knutselen.
Groet, Margot
Toevoeging op 02/05/2015 23:16:15:
Super Thomas,
Super het is gelukt!!
Mijn statement verwijderd en jouw select statement ervoor in de plaats gezet.
In een ander functiebestand staat $i=0 enz.
Nogmaals hartelijk bedankt, Margot