php обновляет данные из нескольких флажков - PullRequest
0 голосов
/ 12 сентября 2010

У меня есть таблица с именем horse, я хотел бы создать форму для редактирования horse_name и horse_height, но данные не могут быть обновлены, оказывается, есть проблема с запросом на обновление, когда я печатаю запрос, чтобы показатьзначения, значение horse_name равно horse_height

</p> <pre><body bgcolor="#009933"> <?php include("connection.php"); $conn = oci_connect($UName,$PWord,$DB); if(empty($_POST["check"])) { $query="SELECT * FROM horse ORDER BY horse_name"; $stmt = oci_parse($conn, $query); oci_execute($stmt); ?> <center> <font face="Arial" size="3"><b>Horse Details</b></font> </center> <form method="post" action="multiplehorsemodify.php"> <table border="1" align="center"> <tr> <th>Horse ID</th> <th>Name</th> <th>Height</th> <th>Edit?</th> </tr> <?php while($row = oci_fetch_array ($stmt)) { ?> <tr> <td><?php echo $row["HORSE_ID"]; ?></td> <td align="center"> <input type="text" size="24" name="<?php echo $row["HORSE_ID"]; ?>" value="<?php echo $row["HORSE_NAME"]; ?>"></td> <td align="center"> <input type="text" size="5" name="<?php echo $row["HORSE_ID"]; ?>" value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td> <td align="center"> <input type="checkbox" name="check[]" value="<?php echo $row["HORSE_ID"]; ?>"> </td> </tr> <?php } ?> </table> <center> <input type="submit" value="Update Selected Titles" /> </center> </form> <?php oci_free_statement($stmt); } else { foreach($_POST["check"] as $horse_id) { echo $horse_id; $query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'"; echo $query; $stmt = oci_parse($conn,$query); oci_execute($stmt); header("location: multiplehorsemodify.php"); } } oci_close($conn); ?> </body>

Ответы [ 3 ]

1 голос
/ 12 сентября 2010

Ну, вы устанавливаете name и height для обоих $_POST[$horse_id] в своем запросе:

$query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";

И вы даже даете элементам ввода одно и то же имя:

name="<?php echo $row["HORSE_ID"]; ?>"

Имя входного элемента становится ключом массива $_POST на стороне PHP.Поэтому дайте полям ввода правильные имена, например:

 <input type="text" size="24" 
        name="horse_name[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_NAME"]; ?>">

 <input type="text" size="5" 
        name="horse_height[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_HEIGHT"]; ?>">

и измените свой запрос на

"UPDATE horse set horse_name = ".mysql_real_escape($_POST['horse_name'][$horse_id])
."horse_height = ".mysql_real_escape($_POST['horse_name'][$horse_id])
." WHERE horse_id = '".$horse_id."'"
1 голос
/ 12 сентября 2010
 <input type="text" size="24" 
                name="HorseName"
id="name-<?=row["HORSE_ID"] ?>" 
                value="<?php echo $row["HORSE_NAME"]; ?>"></td>

             <td align="center">
             <input type="text" size="5" 
                name="HorseHeight" 
id="height-<?=row["HORSE_ID"] ?>"
                value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
             <td align="center">

Таким образом, вы все равно можете использовать идентификатор, чтобы сделать флажки для конкретной лошади уникальными

UPDATE:

Идите и делайте так для каждой лошади:

<input type="text" size="24" name="HorseName"  value="<?= $row["HORSE_NAME"] ?>" />
<input type="text" size="5" name="HorseHeight"value="<?= $row["HORSE_HEIGHT"]; ?>" />
<input type="hidden" name="HORSE_ID" value="<?= $row["HORSE_ID"] ?>" />

Тогда ваш php и запрос могут выглядеть так:

$HORSE_NAME = $_POST['HORSE_NAME'];
$HORSE_HEIGHT = $_POST['HORSE_HEIGHT'];
$HORSE_ID = $_POST['HORSE_ID'];

"UPDATE table_name SET HORSE_NAME = $HORSE_NAME, HORSE_HEIGHT=$HORSE_HEIGHT WHERE HORSE_ID = $HORSE_ID"
1 голос
/ 12 сентября 2010

Оба поля формы имеют одинаковое имя ($ row ["HORSE_ID"]), что приведет к проблемам!

...