probleem met undefined offset php 5.4

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Margot Schuitemaker

Margot Schuitemaker

30/04/2015 23:49:10
Quote Anchor link
Beste lezer,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>&nbsp;</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!
Gewijzigd op 30/04/2015 23:51:01 door - Ariën -
 
PHP hulp

PHP hulp

27/04/2024 15:41:30
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/05/2015 00:42:23
Quote Anchor link
$i heeft de waarde 0 terwijl dit waarschijnlijk een hogere waarde moet zijn. Ik vermoed dat $i staat voor het 'zoveelste' artikel dat op de pagina staat.

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
 
Thomas van den Heuvel

Thomas van den Heuvel

01/05/2015 11:30:25
Quote Anchor link
Een goed ontwerpprincipe is het volgende: op het moment dat je een (soort)gelijke actie meerdere keren uitvoert, zou je kunnen kijken of je deze kunt vereenvoudigen, bijvoorbeeld door een loop of functie.

Als ik deze code zie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>&nbsp;</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)
PHP script in nieuw venster Selecteer het PHP script
1
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 "&nbsp;" afdrukken in plaats van het aantal
    $label = ($q == 0 ? '&nbsp;' : $q);
    ?>
<option value="<?php echo $q ?>"<?php echo $selected ?>><?php echo $label ?></option><?php
}
?>
</select>
 
Margot Schuitemaker

Margot Schuitemaker

02/05/2015 21:09:27
Quote Anchor link
Hallo Thomas,

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.