Скрытое значение не опубликовано

У меня есть некоторые проблемы со следующим кодом.
Скрытое поле не публикуется на следующей странице.
Я попытался поместить его рядом с полем параметров, но это создает некоторые другие проблемы, такие как дублирование выпадающего меню.

Кто-нибудь может мне помочь?

<?php
$dbhost = 'localhost';
$dbuser = '-----';
$dbpass = '-----';
$db = '-----';

$conn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);

$query = "SELECT * FROM Eintraege"; $result = mysql_query($query);
?>

<form action="deletescript.php" method="post"><select name="loeschen">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['ID'];?>"><?php echo $line['Titel'];?></option>
<?php
}
?>
</select><?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<input type="hidden" name="titel" value="<?php echo $line['Titel'];?>" />
<?php
}
?>Vorname <br /><input type="text" name="name" value="" class="text" /><br /><br />
Name <br /><input type="text" name="vorname" value="" class="text" /><br /><br />
Email <br /><input type="text" name="email" value="" class="text" /><br /><br />

<input type="submit" name="submit" />
</form>

1

Решение

Вы должны хотя бы использовать mysqliубедитесь, что у вас есть соединение на защищенной странице, например:

// connect.php
<?php
function db(){
return new mysqli('host', 'username', 'password', 'database');
}
?>

У тебя тоже есть пара других проблем.

1) С mysql_fetch_array() всегда возвращает следующий ряд результатов, когда mysql_fetch_array() вызывается снова в вашем втором цикле while, $line является falsey, потому что больше нет строк для извлечения, поэтому цикл не запускается. Вы могли бы reset($line) если вы используете fetch, но я рекомендую иначе.

2) Вы не можете использовать тот же HTML name атрибут дважды, если вы не добавите [] до конца этого. Затем вы можете получить к нему доступ в виде массива в PHP.

// otherpage.php
<?php
include 'connect.php'; $db = db(); $opts = $hdns = '';
if($q = $db->query('SELECT * FROM Eintraege')){
if($q->num_rows > 0){
while($r = $q->fetch_object()){
$t = $r->Titel;
$opts .= "<option value='$t'>$t</option>";
$hdns .= "<input name='titel[]' type='hidden' value='$t' />";
}
// now you can echo $opts and $hdns where you want
}
else{
$errors[] = 'No result rows were found';
}
$q->free();
}
else{
$errors[] = 'database connection failure';
}
$db->close(); if(isset($errors))die(implode(' & ', $errors));
?>

Чтобы получить titel именованные входы на странице, которую вы отправляете, это как:

<?php
if(isset($_POST['titel'])){
// get each one
foreach($_POST['titel'] as $t){
// $t is each one
}
}
?>

Обратите внимание, что получать данные для помещения в скрытые входы и затем отправлять их обратно на сервер, как правило, бессмысленно, поскольку у вас есть доступ к этой информации в любом случае. Вам захочется изучить AJAX, если вы хотите, чтобы что-то пошло в базу данных на основе входных данных клиента.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]