Получить содержимое текстового поля, создать из него файл .txt и сохранить его в базе данных. - PullRequest
0 голосов
/ 02 марта 2012

Я создал форму, в которой пользователи должны вставить имя в первое текстовое поле и написать что-нибудь во втором (некоторая информация). Вот мой код для моей формы:

echo "<form method='post' action='insert.php?selected=$openFolder&id=$student'>
       Information name:</br> <input name='infoName' type='text' /><br />
       Information:<br />
       <textarea name='text' rows='15' cols='60'>
       </textarea><br />
       <input type='submit' name='submit' value='Submit Information'/>
       </form>";

Пока все хорошо.

Теперь, когда форма отправлена, мне нужно создать файл с:

Имя файла -> имя, которое пользователь вставляет в текстовое поле «infoName»

А затем вставить содержимое текстового поля 'text' в этот файл и сохранить весь файл в моей базе данных.

Вот мой код для этого:

if (isset($_POST['submit']))    
{    
//Make sure that a file name is given by the user    
if (!$_POST['infoName'])    
{    
echo "<center><font color='red'>You must complete the Information name field</font></center>";            
}     
else    
 {    
$informationName = $_POST['infoName'];
$informationContent = $_POST['text'];

$newFile = fopen($informationName,"w");         
$content = fwrite($newFile,$informationContent  . "\n");
$content = addslashes($content);        
fclose($newFile);

$theSize = filesize($informationName);

if(!get_magic_quotes_gpc())    
{    
  $informationName = addslashes($informationName);    
}    

$query = "INSERT INTO $openFolder (studentID, name, size, type, content, insertedBy ) ".
   "VALUES ('$student','$informationName', '$theSize', 'txt', '$content', '$username')";

mysql_query($query) or die('Error, query failed');                                      


}    
}        

Мои проблемы:
1) Файл создан правильно и хранится в моей базе данных, но в нем нет нужного содержимого. По какой-то причине я не вставляю правильный текст в файл ...

2) За исключением файла, который хранится в моей базе данных, еще один файл создается в моих каталогах, и я не хочу, чтобы это произошло.

Помогите мне, пожалуйста. Не стесняйтесь вносить любые изменения в мой код! Пожалуйста, скажите мне, что я делаю не так!

1 Ответ

0 голосов
/ 02 марта 2012

Я вижу, что причиной является утверждение $content = addslashes($content);. fwrite возвращает количество записанных байтов, а не сами данные. Правильное утверждение должно быть $informationContent = addslashes($informationContent); и должно соответствовать вашему if(!get_magic_quotes_gpc()) условию. Также измените ваш запрос и замените переменные как предложено.

Также убедитесь, что вы проверили возвращаемое значение fwrite. Если ничего не написано (=== ЛОЖЬ), не продолжайте и сообщайте об ошибке. Многие ошибки труднее отлаживать (как в этом случае), просто потому, что мы часто пишем допущение программирования. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...