ОК. Я ищу на этом сайте С 24 августа 2011 года (не это важно) для способа отображения файлов, которые были загружены пользователем. У меня есть моя форма на стороне администратора, и все работает нормально. У меня также есть таблица, отображающая все, что пользователь заполнил в форме, которая также работает. Но я не могу просмотреть файл или его имя в таблице.
В моей таблице базы данных есть первичный идентификатор auto_increment int (11) без знака.
Вот код, который я написал:
//This gets all the other information from the form $company=$_POST['company']; $location=$_POST['location']; $pic=($_FILES['userfile']['name']); $query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )"; //target to the path of my files $target_path = "uploads/post_id/"; if(!is_dir($target_path)) mkdir($target_path); $uploadfile = $target_path . basename($_FILES['userfile']['name']); //Move the uploaded file to $taget_path (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile));
В форме, которую вы заполняете, у меня есть следующее:
<tr> <td><label for="company_name">Company Name</label></td> <td><input type="text" name="company" id="company" value="" size="38" /></td> </tr> <tr> <td><label for="location">Location</label></td> <td><input type="text" name="location" id="location" value="" /></td> </tr> <tr> <td>Upload a File:</td> <td><input name="userfile" id="userfile" type="file" /></td> </tr>
Таблица, которая находится на передней панели, которая отображает результаты запроса, выглядит так: только файл feild.
echo "<td>"; echo "<a href=../admin/uploads/post_id/> $row'userfile'</a>"; echo "</td>";
Итак, как вы можете видеть, я пытаюсь получить имя файла, а также сам файл. Если его pdf / jpg / doc я должен иметь возможность просматривать / загружать его, когда я нажимаю ссылку.
Муравьиные идеи …
Некоторые предложения о том, что вы можете изменить, чтобы это работало.
Как выглядит ваш тег формы? Не забудьте включить параметр enctype
как enctype
ниже:
<form type="post" action="" enctype="multipart/form-data"> ... </form>
$company = mysql_real_escape_string($_POST['company']); $location = mysql_real_escape_string($_POST['location']); $pic = mysql_real_escape_string($_FILES['userfile']['name']);
Вышеупомянутые строки являются первым шагом, помогающим предотвратить ваши запросы от атак SQL-инъекций.
$userfile
не существует, поскольку вы фактически назначили имя файла $pic
поэтому ваш запрос должен выглядеть так:
$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$pic')";
Теперь, чтобы связать файл с вашей выходной таблицей:
echo "<td>"; echo "<a href=" . $target_path . basename($row['userfile']) . "> {$row['userfile']}</a>"; echo "</td>";
я думаю, это может заменить это
$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";
с
$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$pic' )";
Что-то очень основное, что вы, возможно, пропустили, это форма enctype. Многие начинающие делают это. Поэтому просто проверьте, есть ли атрибут enctype в форме.
<form enctype="multipart/form-data">
Только если у вас есть это, вы можете загружать файлы через свои формы. Другое место, где вы, возможно, пошло не так,
$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";
Вы сохраняете имя файла в переменной $ pic, но здесь вы указали $ userfile, поэтому просто попробуйте изменить это на $ pic.
вы можете использовать один столбец как auto_increament
когда вы вставляете нового пользователя, чем вы можете получить сумму уже зарегистрированных пользователей, используя этот запрос
$ qry = mysql_qyery ("select * from users
"); и вы можете получить счет пользователя, используя
$ count = mysql_num_rows ($ qry); поэтому после этого вы вставляете нового пользователя, и его идентификатор будет
$ count1 = $ count + 1; $ id = 'F'. $ count1;