John Davidson

html - How to use PHP to populate a <select> Dropdown with json data

0 comments
Message:


I am trying to populate a dropdown using php and a json file. It should get populated with all of the "Name" values. If I use:


$printers=file_get_contents ("config/printers.json");
$test= json_decode($printers,true);
foreach($test as $test) {
echo $test['Name'];
}

It will display the correct values so I know the json is correct and using correct call to get the data.
(updated)If I use this as suggested I get an error "Fatal error, Uncaught TypeError: cannot access offset of type string on string in:" and points to the echo call.


<select id="printer" name="printer">
<option value="none">Select Printer</option>
<?php
foreach($test as $t) {
echo '<option value="'. $t['Name']. '">'. $t['Name'].'</option>';
}
?>
</select>

But if I change it to (which is probably wrong):


<select id="printer" name="printer">
<option value="none">Select Printer</option>
<?php
foreach($test as $t) {
echo '<option value="'. $test['Name']. '">'. $test['Name'].'</option>';
}
?>
</select>

The error goes away and the dropdown will get populated but with only 5 entries. (there are 20 elements in the array) and all 5 entries are the last item in the array.
I think I am missing something in escaping the quotes correctly? This part seems to be resolved?


The json file is:


[
{
"Name": "CR-10",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10 V2",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10 Mini",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10S",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10S4",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10S5",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10S Pro",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10S Pro V2",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-10 Max",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "CR-20",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 3",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 3X",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 3 V2",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 3 Pro",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 3 Pro/BLV Mod",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 5",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 5 Pro",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Ender 5 Plus",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Voxelab Aquila",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
},
{
"Name": "Anet ET4/ET5",
"GantryStyle": 1,
"comment": "",
"image": "cr-10.jpg",
"option1": ""
}
]


My Answer:
To populate a `';
echo '';

foreach ($test as $t) {
echo '';
}

echo '';


Make sure that the JSON file path is correct and the JSON data is valid. This code snippet should populate the dropdown with all the "Name" values from the JSON data.

Rate this post

3 of 5 based on 8312 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us