[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод новостей
m4a1fox
Доброго времени суток, уважаемые знатоки! Буду вам признателен если укажите в каком направлении надо искать инфу! Проблема собственно вот в чем! Есть база - menu из нее выводится список меню(соответственно!) и есть другая база - data где содержаться новости под это меню! Как сделать так, что бы при нажатии на определенное меню из data выводился цикл мини новостей, а при клике по нему - она(новость) открывалась полностью! Собственно как на сайте lenta.ru! Спасибо!



Спустя 24 минуты, 55 секунд (9.11.2010 - 21:15) Slays написал(а):
в БД меню имеем уникальный id и название name
в БД новостей - уникальный id, заголовок новости head, текст новости text и связующий элемент id_menu, которое и показывает к какому разделу относится новость

меню выводим с гет параметром
<a href=' index.php?id=$id '>$name</a>

в индексе проверяем $_GET['id'] и выводим соответствующие новости

"SELECT * FROM news WHERE id_menu = ". (int)$_GET['id'];

вот тебе и весь принцип, это основа основ

user posted image

Спустя 17 минут, 8 секунд (9.11.2010 - 21:32) inpost написал(а):
Это прям вообще основы пхп...
Если хочешь круто: irbis-team.com
Если лишь бы научиться, но быстро: Попов, PHP+MySQL, видеоуроки

Спустя 13 часов, 58 минут, 48 секунд (10.11.2010 - 11:31) m4a1fox написал(а):
Вот такая ошибка возникает! Ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #8' at line 1

Спустя 4 минуты, 59 секунд (10.11.2010 - 11:36) nugle написал(а):
Ну тут всё понятно, ты же выложил листинг со всем кодом, как ту не ра3обраться!!
Э, алё чё тормо3им, выкладывай код, мы тут экстросенсорными способностями не обладаем

Спустя 4 минуты, 26 секунд (10.11.2010 - 11:40) m4a1fox написал(а):
Извините! НЕ подумал) Вот код
<?php
include ("admin/blocks/db.php");
$result = mysql_query("SELECT * FROM menu WHERE id=$_GET[ind]");
if(!result)
{
echo '<Ups>';
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo 'Yeha';
exit();
}
?>
<html>
<head>
<title><?php
echo $myrow[title];?></title>
<meta
name="description" content="<?php echo $myrow['description'];?>">
<meta
name="keywords" content="<?php echo $myrow['keywords'];?>">
</head>
<link
href="style.css" rel="stylesheet" type="text/css">
<body
topMargin="0">
<table
border=0 width="900px" align="center" topMargin="0"

<?php
include 'blocks/head.php';
?>
<tr>
<td
COLSPAN=3>
<table
border=0 class="menu"><tr>
<?php

$query = "SELECT * FROM menu";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
echo "<td VALIGN=MIDDLE><a href=page.php?ind=$ind[id]><img src='$ind[img]'> $ind[name]</a>  </td>";

}


?>
</tr></table>
</td>
</tr>

<tr
height="900px">
<?php

include 'blocks/lefttd.php';
?>
<td
width="500px" valign="top" style="padding-top: 20px;">
<?php

echo $myrow['text'];
echo '<hr />';
?>

<?php

$r = mysql_query('SELECT * FROM data ORDER BY date DESC');
$i=0;
$cnt = mysql_num_rows($r);

while($d = mysql_fetch_assoc($r))
{
$i++;
echo '
<div>'
.$d['title'].'</div>
<div>'
.html_entity_decode($d['text'],ENT_QUOTES).'</div>
'
;
if ($i<$cnt) echo '<BR>';
}
?>


</td>
<?php

include 'blocks/righttd.php';
?>
</tr>

<?php

include 'blocks/bottom.php';
?>
</table>
</body>
</html>

Собственно вопрос уже в другом! Как объединить две таблицы? menu и data! Что бы выводились новости только этого меню!

Спустя 1 минута, 15 секунд (10.11.2010 - 11:42) Slays написал(а):
я собственно тебе и описал как это сделать

Спустя 1 минута, 28 секунд (10.11.2010 - 11:43) m4a1fox написал(а):
Да это так! Но вопросы блин возникают! Я не специально, чес слово!

Спустя 1 минута, 35 секунд (10.11.2010 - 11:45) m4a1fox написал(а):
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\qwerty\page.php on line 64

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\qwerty\page.php on line 66 вот такие ошибки возникают!

Спустя 1 минута, 39 секунд (10.11.2010 - 11:46) m4a1fox написал(а):
Это если делать как Вы сказали!

Спустя 3 минуты, 26 секунд (10.11.2010 - 11:50) m4a1fox написал(а):
Блин! Ну тут точно нужен запрос на объединение таблиц!

Спустя 5 минут, 12 секунд (10.11.2010 - 11:55) linker написал(а):
$result = mysql_query("SELECT * FROM menu WHERE id=" . (integer)$_GET['ind']);

Спустя 8 минут, 54 секунды (10.11.2010 - 12:04) m4a1fox написал(а):
Вопрос! Почему необходимо вынимать из menu! Меню и так нормально выводится с ind=id, мне необходимо вывести из базы data текст который бы равнялся ind[id] в пункте меню!

Спустя 5 минут, 31 секунда (10.11.2010 - 12:09) m4a1fox написал(а):
Если вставляю вашу строку вместо своей, то возникает ошибка! То есть ничего не выводится! А если оставляю свою - то все нормально! $result = mysql_query("SELECT * FROM menu WHERE id=$_GET[ind]"); - это работает, а это - $result = mysql_query("SELECT * FROM menu WHERE id=" . (integer)$_GET['ind']); - нет!

Спустя 2 минуты, 47 секунд (10.11.2010 - 12:12) nugle написал(а):
Вот так попробуй вставить
$result = mysql_query("SELECT * FROM menu WHERE id='" . (integer)$_GET['ind']."');

Спустя 5 минут, 11 секунд (10.11.2010 - 12:17) m4a1fox написал(а):
nugle
Нет! Так тоже не получается! А вы не могли бы объяснить, почему именно эта строка! Ведь, насколько я понимаю, необходимо вывести данные из таблицы, где id_menu = id(в табл. menu!)

Спустя 3 минуты, 44 секунды (10.11.2010 - 12:21) nugle написал(а):
Вам нужно в таблице menu и таблицы data сделать одинаковые поля равные допустим строке одинаковы
Пример
Новости спорта - строчка в menu, она же при 3апросе вы3ывает и3 таблицы data все строки, где имеется это строчка
Если я так понял, то постараюсь помочь, я тоже один ра3 так делал, ра3бирался правда весь день

Спустя 6 минут, 41 секунда (10.11.2010 - 12:28) m4a1fox написал(а):
У меню второй пошел!)

Спустя 30 секунд (10.11.2010 - 12:28) m4a1fox написал(а):
nugle Если вам не трудно! Буду благодарен!

Спустя 1 минута, 9 секунд (10.11.2010 - 12:30) linker написал(а):
m4a1fox
Эта строка потому, что синтаксис SQL-запроса кривой, тебе написали как необходимо. Не работает - это не ответ, ответом будет текст ошибки а именно
$result = mysql_query("SELECT * FROM menu WHERE id=" . (integer)$_GET['ind']) or die(mysql_error());
Но скорее всего $_GET['ind'] не передается, поэтому нужно так
$ind = isset($_GET['ind']) ? (integer)$_GET['ind'] : 0;
$result = mysql_query("SELECT * FROM menu WHERE id=" . $ind) or die(mysql_error());

Спустя 5 минут, 52 секунды (10.11.2010 - 12:35) m4a1fox написал(а):
Попробую!

Спустя 42 секунды (10.11.2010 - 12:36) m4a1fox написал(а):
Работает!

Спустя 52 секунды (10.11.2010 - 12:37) m4a1fox написал(а):
А в чем тогда разница? И так и так работало!

Спустя 7 минут, 35 секунд (10.11.2010 - 12:45) linker написал(а):
Разница как минимум в безопасности.
$r = mysql_query("SELECT * FROM `data` WHERE `menu` = '" . $ind . "' ORDER BY `date` DESC");

Спустя 1 минута, 6 секунд (10.11.2010 - 12:46) m4a1fox написал(а):
Согласен!

Спустя 2 минуты, 12 секунд (10.11.2010 - 12:48) linker написал(а):
Или так
$r = mysql_query("SELECT * FROM `data` WHERE " . (!$ind ? "" : "`menu` = '" . $ind . "'") . " ORDER BY `date` DESC");

Спустя 4 минуты, 20 секунд (10.11.2010 - 12:52) m4a1fox написал(а):
Я поставил ваш запрос! Спасибо! Но возникают ошибки:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\qwerty\page.php on line 65

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\qwerty\page.php on line 67

От одной точно можно избавиться!

Спустя 1 минута, 9 секунд (10.11.2010 - 12:53) m4a1fox написал(а):
Если заменить строку $cnt = mysql_num_rows($r); на $cnt = mysql_query($r); тогда ошибка пропадает только одна! а вторая так и остается!

Спустя 12 минут, 1 секунда (10.11.2010 - 13:05) m4a1fox написал(а):
Вроде получилось! При вот таком $r = mysql_query("SELECT * FROM `data` WHERE id_menu = $_GET[ind] ORDER BY `date` DESC"); запросе все нормально работает!

Спустя 30 секунд (10.11.2010 - 13:06) m4a1fox написал(а):
Если что, можно к вам обращаться за помощью?

Спустя 29 минут, 26 секунд (10.11.2010 - 13:35) linker написал(а):
Да, конечно.

Спустя 30 минут, 4 секунды (10.11.2010 - 14:05) m4a1fox написал(а):
linker
Спасибо! Может есть способ на этом форуме что бы с вами связаться?

Спустя 40 минут, 12 секунд (10.11.2010 - 14:46) inpost написал(а):
Быстро надоешь! Лучше уж пиши тут на форуме, поможем все, чем сможем

Спустя 8 минут, 2 секунды (10.11.2010 - 14:54) m4a1fox написал(а):
Хорошо!

Спустя 39 секунд (10.11.2010 - 14:54) linker написал(а):
Да, чем больше народу, тем быстрее помогут.

Спустя 12 минут, 37 секунд (10.11.2010 - 15:07) m4a1fox написал(а):
<form name="form1" method="post" action="add_news_form_conf.php" enctype='multipart/form-data'>

<p>
<label>
<input
type="hidden" name="id" value="<?php echo $_GET[ind]?>" id="id">
</label>
</p>

<p>
<label><b>
Введите название новости:</b>
<input
type="text" name="name" value="" id="title">
</label>
</p>

<p>
<label><b>
Слова для описания:</b>
<input
type="text" name="title" value="" id="meta_k">
</label>
</p>

<p> <label><b>
Ключевые слова:</b>
<input
type="text" name="description" value="" id="meta_d">
</label>
</p>

<p> <label><b>
Краткое описание:</b>
<textarea
name="text" id="description" cols="80" rows="10"></textarea>
</label>
</p>

<p>
<label><b>
Введите текст:</b><br />
<textarea
name="text" id="text" cols="80" rows="25"></textarea>
</label>
</p>

<p>
<lable><b>
Картинка</b><br />
<input
class=input type=file name=image>
</lable>
</p>

<p> <label>
<input
type="submit" id="submit" value="Занести">
</label>
</p>

</form>

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

Спустя 2 минуты, 31 секунда (10.11.2010 - 15:09) m4a1fox написал(а):
Насколько понимаю, изначально проверка
if (isset($_POST['id'])) 			{$id = $_POST['id'];}	
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}[code]

а теперь заносим данные

$query = "INSERT INTO data VALUES (NULL,
'".$_POST['id_menu']."',
".$_POST['meta_d'].",
".$_POST['meta_k'].",
".$_POST['description'].",
".$_POST['text'].",
".$_POST['id'].")";

Спустя 12 минут, 1 секунда (10.11.2010 - 15:21) m4a1fox написал(а):
А если вот такой обработчик:
<?
include("blocks/db.php");
mysql_query("SET NAMES UTF8");
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['id'])) {$id = $_POST['id'];}
?>
<html>
<head>
<title>
Главная для редактирования </title>
</head>
<link
href="style.css" rel="stylesheet" type="text/css">
<body
leftMargin=0 topMargin=0>
<table
class="tabel" width="100%" CELLPADDING=0 CELLSPACING=0>


<tr
valign="top" height="50px" bgcolor="#a50f10" align="center">
<td
valign="middle" colspan="2">
<?php

include ("blocks/top.php");
?>
</td>
</tr>


<tr >
<td
width="150px" style="margin-right: 50px; border-right: 2px solid black;" valign="top">
<div
style="margin-left: 10px; margin-top: 20px; text-decoration:none;">
Изменить меню гелереи<br /><hr />
<a
href="index.php">Назад</a>
</div>
</td>

<td
width="700px" valign="top">
<div
style="margin-left: 10px; margin-top: 20px; text-decoration:none;" align="center">
<p><?php

if (isset($title, $meta_k, $meta_d, $description, $text)) {

/* Здесь заносим инфо в базу */
$resul = mysql_query ("INSERT INTO data SET title='$title', meta_k='$meta_k', $meta_d='meta_d', description='$description', text='$text' WHERE id='$id'");

if ($resul == 'TRUE') {
echo "Добавленно";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='1; URL=index.php'>
</HEAD>"
;
} else {
"Не обновленно";
}


}

else {

echo "<p>Вы ввели не всю информацию</p>";

}
?></p>
</div>

</td>

</tr>
</table>
</body>
</html>

и вот такая форма:
<?php
include ("blocks/db.php");
mysql_query("SET NAMES UTF8");
?>
<html>
<head>
<title>
Страница для обновления главной </title>
</head>
<link
href="style.css" rel="stylesheet" type="text/css">
<script
type="text/javascript" src="tinymce/tiny_mce.js"></script>
<script
type="text/javascript" src="tinymce/tiny_mce.js"></script>

<script
type='text/javascript'>
tinyMCE.init({
mode : "textareas",
theme : "advanced",
relative_urls : false,
plugins : "markettoimages,safari,table,save,inlinepopups,contextmenu,paste,advimage",
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyrigh t,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockqu ote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,foreco lor,backcolor,",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,markettoimages",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resize_horizontal : true,
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
editor_deselector : "ignorewysywig",

content_css : "editor/myownerfolder/css/content.css",
template_external_list_url : "editor/myownerfolder/lists/template_list.js",
external_link_list_url : "editor/myownerfolder/lists/link_list.js",
external_image_list_url : "editor/myownerfolder/lists/image_list.js",
media_external_list_url : "editor/myownerfolder/lists/media_list.js",

// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234" }

}
);
</script>
<body
leftMargin=0 topMargin=0>
<table
class="table" CELLPADDING=0 CELLSPACING=0 width=100%>


<tr
valign="top" height="50px" bgcolor="#a50f10" align="center">
<td
valign="middle" colspan="2">
<?php

include ("blocks/top.php");
?>
</td>
</tr>


<tr >
<td
width="150px" valign="top" style="border-right: 2px solid black;">
<div
style="margin-left: 10px; margin-top: 20px; text-decoration:none;">
Добавить новость<br /> <hr />
<a
href="index.php">Назад</a>
</div>
</td>

<td
width="700px" valign="top">
<div
style="padding-left: 10px; margin-top: 20px; text-decoration:none;">

<form
name="form1" method="post" action="add_news_form_conf.php" enctype='multipart/form-data'>

<p>
<label>
<input
type="hidden" name="id" value="<?php echo $_GET[ind]?>" id="id">
</label>
</p>

<p>
<label><b>
Введите название новости:</b>
<input
type="text" name="title" value="" id="title">
</label>
</p>

<p>
<label><b>
Слова для описания:</b>
<input
type="text" name="meta_k" value="" id="meta_k">
</label>
</p>

<p> <label><b>
Ключевые слова:</b>
<input
type="text" name="meta_d" value="" id="meta_d">
</label>
</p>

<p> <label><b>
Краткое описание:</b>
<textarea
name="description" id="description" cols="80" rows="10"></textarea>
</label>
</p>

<p>
<label><b>
Введите текст:</b><br />
<textarea
name="text" id="text" cols="80" rows="25"></textarea>
</label>
</p>

<p> <label>
<input
type="submit" id="submit" value="Занести">
</label>
</p>

</form>

</div>

</td>

</tr>
</table>
</body>
</html>

Спустя 28 минут, 18 секунд (10.11.2010 - 15:50) inpost написал(а):
m4a1fox
Я убрал всё ненужное, чтобы ты понял схему, тут не надо создавать 2 отдельных файла для формы и внесения данных. Смотри, как оформлено, думаю, будет интересно:
<?php session_start();
include("blocks/bd.php");
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
header("Content-Type: text/html; charset=utf-8");

if (count($_POST) > 0)
{
$result = mysql_query("INSERT INTO `metodi` SET
`title`='"
.$_POST['title']."',
`number`='"
.(int)$_POST['number']."',
`text`='"
.$_POST['text']."'
"
,$db);
if ($result == true)
{
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?status=ok");
}
else
{
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?status=bad");
}
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</
head>
<
body>
<
form method="post" action="">
<
div align="justify" style="background-color:#DDE1C1 ">Методы работы (добавление): </div>
<?php
if (isset($_GET['status']))
{
if($_GET['status'] == "ok")
{
echo '<div align="justify" class="cat2" style="background-color:#AEEECB ">Ваши методы добавлены</div>';
}
else
{
echo '<div align="justify" class="cat2" style="background-color:#F8787B ">Ваши методы не были добавлены</div>';
}
}

?>
<p align="justify"><label>Введите название метода:<br><input type="text" name="title" size="70" /></label></p>
<
p align="justify"><label>Введите порядковый номер (сортировка):<br><input type="text" name="number" size="11" /></label></p>
<
p align="justify"><label>Введите текст:<br><textarea rows="30" cols="80" name="text"></textarea></label></p>
<
p align="justify"><label><input type="submit" name="submit" value="Занести методы в базу" /></label></p>
</
form>
</
body>
</
html>


Теперь по самой теме, когда делаешь INSERT, то:
1) Нету никакого $_GET['id'].
2) Не надо писать WHERE id=id!!! Эту строчку надо убрать вообще, так как у тебя добавление стоит через autoincrement(? вроде так слово пишется, лень проверять хД).
3) Если ты с JS не работаешь, то и ID тебе вообще не нужен, достаточно писать только name для формы и инпутов.

Спустя 52 минуты, 28 секунд (10.11.2010 - 16:42) nugle написал(а):
Вот это у вас тут листинги....
Я проще всё делал...
<?php 
require('blocks/bd.php');
mysql_set_charset('utf8');

$sql="Select name_menu from menu'";
$result = mysql_query($sql) or die(mysql_error() ."<br/>".

while($row = mysql_fetch_assoc($sql))
{

echo "<a href = "data.php?name_menu = '".$row['name_menu']."'";

}
?>


И второй код с выводом собстно новостей

<?php 

require('blocks/bd.php');
mysql_set_charset('utf8');
$name_menu = !empty($_POST['name_menu']) ? $_POST['name_menu'] : null;

$sql="Select * from articles where class='" . mysql_real_escape_string($name_menu) . "'";
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);

while ($row = mysql_fetch_assoc($result))
{

echo "$row['name_news']";

}

Спустя 53 минуты, 22 секунды (10.11.2010 - 17:35) m4a1fox написал(а):
nugle
Спасибо!
Но пока еще я сделал как у меня и было! Тоесть пусть он и большой, но - работает!) У меня тут теперь другая задача! Надо еще и картинку вставить в новость! Буду сейчас думать как!

Спустя 12 минут, 43 секунды (10.11.2010 - 17:48) m4a1fox написал(а):
 // Если во временном каталоге имеется соответствующий полю image
// файл, копируем его из временного каталога в каталог /files
if (!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$image = "file/".date("YmdHis",time())."$ext";
$smallimage = "file/".date("YmdHis",time())."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['image']['tmp_name'], "".$image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("".$image, 0644);
}
} else links($_POST['id'], "Фотография не передана на сервер");
// Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
// $image и помещающую её в файл $smallimage
if(!resizeimg($image, $smallimage, 133, 100))
links($_POST['id'], "Ошибка при создании уменьшенной копии изображения с помощью библиотеки GDLib");
// Заменяем одинарные кавычки обратными
$_POST['name'] = str_replace("'", "`", $_POST['name']);

есть такой вот скрипт! Кто может, посмотрите! Тут насколько я понимаю есть название картинки, и большая картинка, если я их удалю, это будет катострофически или нет?

Спустя 1 час, 33 минуты, 40 секунд (10.11.2010 - 19:22) m4a1fox написал(а):
Мда, с этим проблемка выходит!

Спустя 10 минут (10.11.2010 - 19:32) inpost написал(а):
Хочешь уметь им пользоваться? Напиши его сам =)

Спустя 14 минут, 44 секунды (10.11.2010 - 19:47) m4a1fox написал(а):
inpost
Дельный совет!) Буду пробывать!

Спустя 18 минут, 19 секунд (10.11.2010 - 20:05) m4a1fox написал(а):
А если вот такой загрузчик(форма):
<tr>
<td><p
class=zag2>Изображение</td>
<td><input
type="checkbox" name="chk_filename" onclick="freeze_filename(this.form)" <?php echo htmlspecialchars($chk_filename); ?>></td>
<td><input
class=input size=70 type=file name=filename></td>
</tr>


Собственно сама обработка:
  // Если поле выбора картинки не пустое - закачиваем её на сервер
$path = "";
// Если требуется загрузить файл - загружаем
if($_POST['chk_filename'] == "on")
{
if (!empty($_FILES['filename']['tmp_name']))
{
// Формируем путь к файлу
$path = "files/".date("YmdHis",time());
// Если оператор пожелал переименовать файл - переименовываем
if($_POST['chk_rename'] == "on")
{
// Проверяем, чтобы не было прямых и обратных слешей
$_POST['rename'] = str_replace("\\","",$_POST['rename']);
$_POST['rename'] = str_replace("/","",$_POST['rename']);
$_POST['rename'] = stripcslashes($_POST['rename']);
$path = "files/".substr($_POST['rename'], 0, strrpos($_POST['rename'], "."));
}

// Проверяем, не является ли файл скриптом PHP или Perl, html, если это так преобразуем его в формат .txt
$extentions = array("#\.php#is",
"#\.phtml#is",
"#\.php3#is",
"#\.html#is",
"#\.htm#is",
"#\.hta#is",
"#\.pl#is",
"#\.xml#is",
"#\.inc#is",
"#\.shtml#is",
"#\.xht#is",
"#\.xhtml#is");
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['filename']['name'], ".");
$add = $ext;
foreach($extentions AS $exten)
{
if(preg_match($exten, $ext)) $add = ".txt";
}
$path .= $add;

// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['filename']['tmp_name'], "../".$path))
{
// Уничтожаем файл во временной директории
@unlink($_FILES['filename']['tmp_name']);
// Изменяем права доступа к файлу
@chmod("../".$path, 0644);
}
}
else links("Не указан файл для загрузки");
}

Спустя 32 секунды (10.11.2010 - 20:05) m4a1fox написал(а):
Что скажите?

Спустя 1 час, 1 секунда (10.11.2010 - 21:05) m4a1fox написал(а):
Может кто пожет! Есть так штука:
<?
include("blocks/db.php");
mysql_query("SET NAMES UTF8");
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}

if (isset($_POST['ind'])) {$ind = $_POST['ind'];}
?>
<html>
<head>
<title>
Главная для редактирования </title>
</head>
<link
href="style.css" rel="stylesheet" type="text/css">
<body
leftMargin=0 topMargin=0>
<table
class="tabel" width="100%" CELLPADDING=0 CELLSPACING=0>


<tr
valign="top" height="50px" bgcolor="#a50f10" align="center">
<td
valign="middle" colspan="2">
<?php

include ("blocks/top.php");
?>
</td>
</tr>


<tr >
<td
width="150px" style="margin-right: 50px; border-right: 2px solid black;" valign="top">
<div
style="margin-left: 10px; margin-top: 20px; text-decoration:none;">
Изменить меню гелереи<br /><hr />
<a
href="index.php">Назад</a>
</div>
</td>

<td
width="700px" valign="top">
<div
style="margin-left: 10px; margin-top: 20px; text-decoration:none;" align="center">
<p><?php

if (isset($title, $meta_k, $meta_d, $date, $description, $text, $ind)) {
// Если требуется загрузить файл - загружаем
if (!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$smallimage = "file/".date("YmdHis",time())."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения

if (copy($_FILES['image']['tmp_name'], "".$image))
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения

if (copy($_FILES['image']['tmp_name'], "".$image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("".$image, 0644);
}

else links("Не указан файл для загрузки");
}



/* Здесь заносим инфо в базу */
$resul = mysql_query ("INSERT INTO data (title, meta_k, meta_d, date, description, text, small, id_menu) VALUES ('$title', '$meta_k', '$meta_d', '$date', '$description', '$text', '$smallimage', '$ind')");

if ($resul == 'TRUE') {
echo "Добавленно";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='1; URL=index.php'>
</HEAD>"
;
} else {
"Не обновленно";
}


}

else {

echo "<p>Вы ввели не всю информацию</p>";

}
?></p>
</div>

</td>

</tr>
</table>
</body>
</html>


в теории при выборе файла в форме:
<form name="form1" method="post" action="add_news_conf.php">

<p>
<label><b>
Введите название новости:</b>
<input
type="text" name="title" value="" id="title">
</label>
</p>

<p>
<label><b>
Слова для описания:</b>
<input
type="text" name="meta_k" value="" id="meta_k">
</label>
</p>

<p> <label><b>
Ключевые слова:</b>
<input
type="text" name="meta_d" value="" id="meta_d">
</label>
</p>

<p> <label><b>
Введите дату добавления новости:</b>
<input
type="text" name="date" value="<?php $date = date("Y-m-d"); echo $date?>" id="date">
</label>
</p>

Изображение
<input type="file" name="filename" id="path">


<p> <label><b>
Краткое описание:</b>
<textarea
name="description" id="description" cols="80" rows="10"></textarea>
</label>
</p>

<p>
<label><b>
Введите текст:</b><br />
<textarea
name="text" id="text" cols="80" rows="25"></textarea>
</label>
</p>

<p>
<label>
Категория:<br />
<select
name="ind">
<?php

$query = "SELECT id, name FROM menu";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
echo "<option value='$ind[id]'>$ind[name]</option><br />";
}
?>

</select>
</label>
</p>

<p> <label>
<input
type="submit" id="submit" value="Занести">
</label>
</p>

</form>

она должне заносить путь к картинке в бд. НО ОНА НЕ ЗАНОСИТ! В чем может быть причина! Спасибо!

Спустя 5 минут, 5 секунд (10.11.2010 - 21:11) vinnie написал(а):

if (copy($_FILES['image']['tmp_name'], "".$image))


здесь просто

if (copy($_FILES['image']['tmp_name'], $image))

Спустя 14 часов, 55 минут, 44 секунды (11.11.2010 - 12:06) m4a1fox написал(а):
vinnie
Не сработало! Не заносится он и все тут(

Спустя 1 час, 4 минуты, 42 секунды (11.11.2010 - 13:11) m4a1fox написал(а):
Значит никто не поможет? Печально! Ну тем не менее спасибо всем кто учавствовал!

Спустя 1 час, 29 минут, 53 секунды (11.11.2010 - 14:41) inpost написал(а):
m4a1fox
я тебе дал код выше, как надо исправить хотя бы логику и сделать всё на одной странице! Ты не хочешь исправляться, я не хочу помогать...

Спустя 3 часа, 5 минут, 24 секунды (11.11.2010 - 17:46) m4a1fox написал(а):
inpost Я не понимаю! Как то что вы написали связано с тем что я хочу добиться от загрузчика! В вашем коде даже намека на загрузку файлов нет! У меня же, все что мне надо заносится в базу и успешно из нее выводится! Кроме, разумеется, картинки, почему то она не хочет заносится в БД!

Спустя 21 минута, 4 секунды (11.11.2010 - 18:07) inpost написал(а):
Ты пишешь так, как учил батенька Попов... а он, увы, пример того, как не надо программировать.
Вот держи этот код, разбирай! Ещё одно, у тебя на папку, куда добавляются фотографии должен быть установлены права 755 (если не работает, то 775->777, в зависимости от хостинга).

<?php session_start();
include("blocks/bd.php");
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
header("Content-Type: text/html; charset=utf-8");

if (isset($_POST['title']))
{
if($_FILES['userfile']['name'] != "")
{

$allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // Здесь мы перечисляем допустимые типы файлов
$max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path = '../img/video/'; // Место, куда будут загружаться файлы (в данном случае это папка 'files').
$filename = $_FILES['userfile']['name']; // В переменную $filename заносим точное имя файла (включая расширение).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))
die('Данный тип файла не поддерживается.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Фаил слишком большой.');
if(!is_writable($upload_path))
die('Невозможно загрузить фаил в папку. Установите права доступа - 777.');
move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename);
}
else
{
$filename = '';
}
$result = mysql_query("INSERT INTO `video` SET
`title`='"
.$_POST['title']."',
`number`='"
.(int)$_POST['number']."',
`text`='"
.$_POST['text']."',
`photo`='"
.$filename."'
"
,$db);
if ($result == true)
{
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?status=ok");
}
else
{
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?status=bad");
}
exit();

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</
head>
<
body>
<
form method="post" action="" enctype="multipart/form-data">
<?php
if (isset($_GET['status']))
{
if($_GET['status'] == "ok")
{
echo '<div align="justify" class="cat2" style="background-color:#AEEECB ">Ваше видео добавлено</div>';
}
else
{
echo '<div align="justify" class="cat2" style="background-color:#F8787B ">Ваше видео не было добавлено</div>';
}
}

?>
<p><label>Введите название видео:<br><input type="text" name="title" size="70" /></label></p>
<
p><label>Введите порядковый номер (сортировка):<br><input type="text" name="number" size="11" /></label></p>
<
p><label>Введите текст:<br><textarea rows="30" cols="80" name="text"></textarea></label></p>
<
p><label>Выберите фотографию видео:<br><input type="file" name="userfile"></label></p>
<
p><label><input type="submit" name="submit" value="Занести видео в базу" /></label></p>
</
form>
</
body>
</
html>

Спустя 4 часа, 30 минут, 34 секунды (11.11.2010 - 22:38) m4a1fox написал(а):
inpost
Спасибо тебе добрый человек! ВЫРУЧИЛ!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.