Hallo allemaal,

Ik ben bezig aan een hobby project waarbij ik gebruik maak van HTML, CSS, JavaScript en PHP.
Nu kwam ik op het volgende probleem uit.
Ik wil een <INPUT> element neerzetten, met als value een PHP variabel.
Na wat zoeken op het internet kwam ik uit op de volgende oplossing:

<INPUT type='text' value='<?php echo $var; ?>'>

of

<INPUT type='text' value='<?php echo htmlspecialchars($var); ?>'>

Beide oplossingen werken prima, echter, ik stuitte op een probleem met een array.
Ik had een simpele for-loop gemaakt waarin ik in iedere loop zoiets deed:

$var[$i] = "Tekst"; //$i staat hier voor de for-loop index variabel

Met de bovenstaande oplossing krijg ik het niet voor elkaar om de value van <INPUT> juist te krijgen:

<INPUT type='text' value='<?php echo $var[1]; ?>'>

Ik krijg als value "Resource" of "id".
Dit heb ik ook nog geprobeerd, met hetzelfde resultaat tot gevolg:

//for-loop
{
$var[$i] = $varvar;
echo "<INPUT type='text' value='<?php echo $varvar; ?>'>";
}

Ik heb het een en ander op internet opgezocht, maar tot dusver ben ik nog geen werkende oplossing tegen gekomen, vandaar deze thread.

Ik hoop dat jullie mij verder kunnen helpen!
Alvast bedankt!


Met vriendelijke groet,
Remmy
Ik krijg als value "Resource" of "id".


Klinkt mij alsof je het uit een database haalt.
Zo ja, laat dan ook dat relevante stukje code zien.

Gebruik bij je html geen enkele maar dubbele quotes. (")
Bedankt voor de snelle reactie!

Ik heb inmiddels overal dubbele quotes toegepast.

Ik gebruik trouwens geen database, ik haal de gegevens uit een ".dat" bestand die ik zelf heb aangemaakt.
Er staan slechts wat cijfers in, de exacte inhoud is:

5 7
3 1



Met vriendelijke groet,
Remmy
Laat eens zien hoe je dat array vult.
$file = fopen("results.dat", "r"); //Read all data inside to fill in the input elements
$counter = 0;
while(!feof($file))
{
$line = fgets($file);
$results_from_file = explode(" ", $file); //Het zijn twee getallen per regel in die file, dus ik split ze met explode, om ze vervolgens afzonderlijk op te slaan in de array
$results[$counter] = $results_from_file[0];
$counter++;
$results[$counter] = $results_from_file[1];
$counter++;
}
Dan kan je toch met de loop de input's vullen.
<?php
for($i=1; $i<=$counter; $i++)
{
echo '<input type="text" value="'.$results[$i].'" name="naam['.$i.']"/>';
}
?>
Bedankt voor de wederom snelle reacties!

Ik had daar inderdaad nog niet aan gedacht, maar helaas krijg ik met deze methode ook hetzelfde resultaat ("Resource" en "id").

Dit is de code die ik uiteindelijk heb gebruikt:

$file = fopen("results.dat", "r"); //Read all data inside to fill in the input elements
$counter = 0;
while(!feof($file))
{
$line = fgets($file);
$results_from_file = explode(" ", $file);
$results[$counter] = $results_from_file[0];
echo "<INPUT type='text' value='".$results[$counter]."' name='score".$counter."'>";
$counter++;
$results[$counter] = $results_from_file[1];
echo "<INPUT type='text' value='".$results[$counter]."' name='score".$counter."'>";
$counter++;
}
Zou het ook zo kunnen?

<?php

// initialisatie
$counter = 0;

if(!$content = file('results.dat'))
{
echo 'bestand kon niet gelezen worden.';
exit;
}

foreach($content as $line)
{
$numbers = explode(" ", trim($line));
foreach($numbers as $number)
{
echo '<INPUT type="text" value="'.$number.'" name="score'.$counter.'">';
$counter++;
}
}
?>

Toevoeging op 09/09/2015 20:35:19:

Met de functie file stop je alle regels uit een bestand in een array.
Met een foreach heb je een lus die alle elementen uit een array doorloopt.


Toevoeging op 09/09/2015 21:09:03:

Overigens als je nou toch bezig bent met array's:

<?php
echo '<INPUT type="text" value="'.$number.'" name="score[]">';
?>

geeft een $_POST['score'] met een array als waarde.

En dan kun je dus doen:

<?php
foreach($_POST['score'] as $score)
{
echo $score . '<br>';
}
je probleem komt trouwens door

explode(" ", $file);

waar je explode(" ", $line);

had moeten hebben....
@Ivo:
Zeer scherp gezien.
Ik had geen idee waar de 'resource' vandaan zou moeten komen.
Maar nu snap ik het.
Thanks.

Reageren