2013-06-07 5 views
1

Я не могу получить свою форму, чтобы сохранить введенные данные. Как я могу исправить этот код, чтобы сохранить данные?Сохранять данные формы после проверки - PHP

Форма:

<div class="nyhedsdiv"> 

<form name="nyhedsform" onSubmit="return validateForm()" method="post"> 
    <label for="nyheds_overskrift">Overskrift</label> 
    <input id="nyheds_overskrift" name="nyheds_overskrift" type="text" value="<?php echo $nyheds_overskrift; ?>" /> 
    <br /> 
<label for="nyheds_tekst">Nyhed-tekst</label> 
    <textarea id="nyheds_tekst" name="nyheds_tekst" value="<?php echo $nyheds_tekst; ?>"></textarea> 
<br /> 
<label for="nyheds_forfatter">Forfatter</label> 
<input id="nyheds_forfatter" name="nyheds_forfatter" type="text" value="<?php echo $nyheds_forfatter; ?>" /> 
<br /> 
    <button name="opret_nyhed" type="submit">Opret nyhed</button> 
</form> 

PHP проверка сценария:

<div id="fejlbesked"> 

<?php 

    if (isset($_POST['opret_nyhed'])) 
    { 
//mysql_real_escape_string tjekker koden for symboler og sætter backslash ind foran, hvis den finder nogen. 
$nyheds_overskrift = mysql_real_escape_string($_POST['nyheds_overskrift']); 
$nyheds_tekst = mysql_real_escape_string($_POST['nyheds_tekst']); 
$nyheds_forfatter = mysql_real_escape_string($_POST['nyheds_forfatter']); 
$fejlbesked = ''; 

    if(empty($nyheds_overskrift)) 
     { 
$fejlbesked .= '<span class="red">Du skal skrive en overskrift!</span><br />'; 
} 

if(empty($nyheds_tekst)) 
    { 
$fejlbesked .= '<span class="red">Du skal skrive nyheden!</span><br />'; 
} 

    if(empty($nyheds_forfatter)) 
    { 
$fejlbesked .= '<span class="red">Du skal skrive navnet på nyhedens forfatter!</span><br />'; 
} 

    if(empty($fejlbesked)) 
    { 
//Sætter nyheden ind i mysql databasens tabelrækker, der passer til navnene, som er defineret for variablerne. 

$query_ind = "INSERT INTO nyheder VALUES ('', '$nyheds_overskrift', '$nyheds_tekst', '$nyheds_forfatter', NOW())";//mysql_real_escape_string tjekker koden for symboler og sætter backslash ind foran, hvis den finder nogen. 
mysql_query($query_ind) or die (mysql_error()); 
echo "Nyheden er oprettet"; 

    } 

else 
    { 
    echo $fejlbesked; 
    } 
} 

?> 

</div><!--fejlbesked--> 

    </div><!--nyhedsdiv--> 
+4

Просто наконечник; писать код и комментарии на английском языке. – powerbuoy

+0

Просто скопируйте/вставьте код, не задумываясь об этом. Это будет иметь в виду в будущих сообщениях;) – chmodder

ответ

2

Это потому, что вы используете переменные, которые здесь не определены, просто измените массив $_POST с областью действия для каждой переменной, которую вы хотите захватить. Например

value="<?php echo $nyheds_overskrift; ?>" 

Должно быть

value="<?php echo htmlentities($_POST['nyheds_overskrift']); ?>" 
+0

Безопасно ли это сделать? – DanMan

+0

Спасибо. Он отлично работал. Я просто работаю, так как это определено позже. BTW: Извините за датские комментарии кодов. Я просто копировал/вставлял код, не задумываясь. – chmodder

+0

@chmodder вас приветствует чувак. Не забудьте принять ответ, чтобы помочь людям в будущем с аналогичными проблемами. Для принятия вам просто нужно щелкнуть по большой зеленой отметке (✔) по счету ответа – Fabio

1
<?php 
echo ' 
<form method="post" action="index.php"> 
    <label>Name:</label> 
    <input type="text" name="Name" value="'.(isset($_POST['Name']) ? $_POST['Name'] : '').'" /> 
</form>'; 
?> 

При этом, значение атрибута будет заполняться, если $ _POST [ 'имя'] существует , если нет, он будет пустым.

+1

Индексы массивов чувствительны к регистру. – DanMan

+0

@DanMan Спасибо, что указали это. Это была небольшая опечатка, исправленная. – MisterBla

+0

Спасибо Ричарду А., но я использовал предложение Фабио. Я думаю, что это выглядит менее запутанным. Я только начал изучать PHP, поэтому мне нравится держать его простым на данный момент. Спасибо в любом случае;) – chmodder

Смежные вопросы