WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Skumt fel i PHP med PDO (https://www.wn.se/forum/showthread.php?t=1045026)

overlake 2010-11-24 22:56

Skumt fel i PHP med PDO
 
Har ett skumt fel när jag ska skapa en dropdown-lista i ett formulär med fotbollslag.

Koden ser ut som följer:

<form name="placementStudents" method="post"><br />
<select name = 'studentrow'>
<?php
include("inc/db.php");
$getTeams= $dbh ->query("SELECT DISTINCT Home_Team FROM tbl_matches WHERE League = 'E0'");
$rowarray2 = $getTeams->fetchAll();
$teamrow = 0;
foreach($rowarray2 as $row)
{
echo "<option value = $row[Home_Team]>$row[Home_Team]</option>";
$teamrow++;
}
?>
</select>
<input type="submit" value="Select Student">
</form>
?>

Den skapar en dropdown med alla lagnamn korrekt MEN, kikar man i koden så ser man följande:

<select name="studentrow">

<option value="Arsenal">Arsenal</option>
<option villa="" value="Aston">Aston Villa</option>
<option value="Chelsea">Chelsea</option>
<option value="Liverpool">Liverpool</option>
<option city="" value="Man">Man City</option><option
</select>

Som ni ser så byter denut "value" mot det andra ordet om ett av lagnamnen består av två ord.
Aston Villa blir då:
<option villa="" value="Aston">Aston Villa</option>

Någon som ser något direkt fel i min kod?

overlake 2010-11-24 23:06

Hittade felet:
<option value = $row[Home_Team]>$row[Home_Team]</option>
Ska vara:
<option value = '$row[Home_Team]'>$row[Home_Team]</option>

dotvoid 2010-11-24 23:12

Ja. Det är konstigt att det fungerar alls om jag ska vara ärlig. Attribut till html-element ska alltid omges med dubbla citattecken. Dessutom ska man alltid ange enkla citattecken runt text-nycklar för associativa arrayer i PHP. Annars tror PHP först att det är en konstant och gör en del onödigt processande. Dessutom så bör du omge mer avancerade variabeluttryck i PHP-strängar med måsvingar för att undvika att PHP tolkar det fel.

Så din kod
Citat:

Ursprungligen postat av overlake (Inlägg 20379597)
PHP-kod:

foreach($rowarray2 as $row)
{
echo 
"<option value = $row[Home_Team]>$row[Home_Team]</option>";
$teamrow++;



borde vara
PHP-kod:

foreach ($rowarray2 as $row) {
  echo 
"<option value=\"{$row['Home_Team']}\">{$row['Home_Team']}</option>";
  
$teamrow++;



overlake 2010-11-24 23:25

Tackar för tipsen.
Lade in dina ändringar.


Alla tider är GMT +2. Klockan är nu 05:25.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson