Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Web-дизайн _ Выгрузка картинок в MySQL

Автор: fcbarcelona Суббота, 28 Апреля 2007, 19:39

Здравствуйте!
У меня картинки выгружаются из БД с помощью следующего скрипта:

<?php
$link=mysql_connect("localhost","root","");
mysql_select_db("artistsandpictures",$link);
$sql="SELECT name,photo,prim FROM artists";
$result=@mysql_query($sql,$link);
header("Content-type:image/jpeg");

if (mysql_num_rows($result)>0)
{
echo "<div align=\"center\">";
echo "<h2>Ранее загруженные файлы</h2>";
for ($i=0;$i<mysql_num_rows($result);$i++)
{
echo "<hr width=\"400\">";
echo "<table border=\"1\" width=\"300\"><tr><td>";
echo mysql_result($result,$i,'name');
echo "</td></tr><tr><td>";
echo mysql_result($result,$i,'artists.photo');
echo "</td></tr><tr><td>";
echo mysql_result($result,$i,'prim');
echo "</td></tr>";
echo "</table>";
echo "</div>";
}
}
else
{echo "<h2>В базе данных файлы отсутствуют</h2>";
}
?>

Однако в header какая-то ошибка! Вместо картинки выводится ерунда. В чём дело?

Автор: Ekho Вторник, 17 Июля 2007, 10:29

Хоть и давний пост, но все ж отвечу.

Дело в том, что header("Content-type:image/jpeg"); задает mime-тип для всего потока, генерируемого php. В данном случае поток это html-код, что в принципе неверно для данного типа.

если в поле photo в базе хранится лишь ссылка на картинку, то правильнее было бы написать так:

Код

...
if (mysql_num_rows($result)>0) {
 echo "<div align=\"center\">";
 echo "<h2>Ранее загруженные файлы</h2>";
 while ($row=mysql_fetch_assoc($result)) {
   echo <<<HTML
<hr width="400">
<table border="1" width="300">
<tr><td>$row[name]</td></tr>
<tr><td><img src="$row[photo]"></td></tr>
<tr><td>$row[prim]</td></tr>
</table>
</div>
HTML;
 }
}
else
{
 echo "<h2>В базе данных файлы отсутствуют</h2>";
}
...


Если же в базе в поле photo хранится бинарное содержимое картинки, то потребуется два скрипта: один будет выводить html-код, а другой (photo.php) - картинки.

Код

...
if (mysql_num_rows($result)>0) {
 echo "<div align=\"center\">";
 echo "<h2>Ранее загруженные файлы</h2>";
 while ($row=mysql_fetch_assoc($result)) {
   echo <<<HTML
<hr width="400">
<table border="1" width="300">
<tr><td>$row[name]</td></tr>
<tr><td><img src="photo.php?id=$row[id]"></td></tr>
<tr><td>$row[prim]</td></tr>
</table>
</div>
HTML;
 }
}
else
{
 echo "<h2>В базе данных файлы отсутствуют</h2>";
}
...


photo.php :
Код

$link=mysql_connect("localhost","root","");
mysql_select_db("artistsandpictures",$link);
$sql="SELECT photo FROM artists WHERE id=".$_GET['id'];
$result=@mysql_query($sql,$link);

if ($row=mysql_fetch_assoc($result) ) {
 header("Content-type:image/jpeg");
 echo $row['photo'];
} else {
 header("HTTP/1.0 404 Not Found");
}

Автор: pan Четверг, 19 Июля 2007, 15:26

А вообще говоря, хранить картники в MySQL не надо

Автор: Ekho Понедельник, 23 Июля 2007, 11:35

Согласен, но все ж таки встречаются некоторые маргиналы, которые любят все пихать в БД, независимо от того насколько хорошо эта бд с таким типом данных работает.

Автор: zeroku Понедельник, 23 Июля 2007, 15:46

Цитата(Ekho @ Понедельник, 23 Июля 2007, 8:35)
Согласен, но все ж таки встречаются некоторые маргиналы, которые любят все пихать в БД, независимо от того насколько хорошо эта бд с таким типом данных работает.
*


значит надо объяснить им все ЗА и ПРОТИВ этого метода...
чтобы больше так не любили-)

Автор: pan Среда, 25 Июля 2007, 10:19

zeroku, бесполезно. Проще расстрелять на месте.

Автор: zeroku Среда, 25 Июля 2007, 11:44

Цитата(GeizeR @ Среда, 25 Июля 2007, 7:19)
zeroku, бесполезно. Проще расстрелять на месте.
*


уж вот такая вот профессия, Сань...
у каждого есть свои проблемы-)

Автор: AlexKus Пятница, 07 Марта 2008, 10:09

Профи помогите чайнику у меня БД. при поиске появляется так:
картинка название
картинка название
нужно сделать чтобы при нажатии на картинку открывалась другая страница с этой же картинкой и ее описанием.
БД уже готово осталось только написать запрос.

Вот код страницы которая должна выбрать нужную картинку, на которыю я клацаю:

<?php
mysql_connect('localhost', 'root','test');
mysql_select_db('goods');
mysql_query("SET NAMES cp1251");
if (mysql_errno())
{
echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
exit;
}
$name='name';
$q = mysql_query("select * from dop WHERE name = \"".mysql_escape_string($name)."\"");
header("Content-type:image/jpeg");
$i=0;
while ($row = mysql_fetch_row($q))
{
echo "<div align=\"center\">";
echo <<<HTML
<table width="500" id="table3" height="100">
<tr>
<td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td>
<td><p><strong>Название: $row[2]</td>
</tr>
<tr>
<td></strong>ISBN: $row[1]</td>
</tr>
<tr>
<td>Цена руб: $row[3]</td>
<hr></tr>
</table>
HTML;
echo '</p>';
$i=$i+1;
}
echo '<p>Найдено товара: '.$i.'</p>';
mysql_close();
?>
Вопрос переменную $name с чем нужно сравнить чтобы выбиралась нужная картинка.
Если я вписываю имя одной картинки то при кликании на любую открывается
та которую я вписал
$name='имя картинки';
Помогите плизз.


и еще в результате поиска БД выкидывает 60 -70 картинок с описанием на 1 страницу хотелось бы сделать навигатор <<< 1 2 3 ...>>> помогите какой скрипт нужен для этого.

Автор: Ekho Пятница, 07 Марта 2008, 10:55

список ссылок на картинки у тебя должен выглядеть приблизительно так
<a href="showpicture.php?name=picture1">picture1</a>
...
<a href="showpicture.php?name=pictureN">pictureN</a>

по ссылке открывается файл showpicture.php (т.е. тот код, который ты привел)

а вот чтобы получить ?name=picture1 нужно в php написать следующее

$name = $_GET['name'];

Автор: AlexKus Пятница, 07 Марта 2008, 22:35

СПАСИБО а что на счет навигаторов?

Автор: Ekho Пятница, 07 Марта 2008, 23:01

приблизительно так:
страницы <a href="pictureindex.php?page=1">1</a> <a href="pictureindex.php?page=2">2</a> ... <a href="pictureindex.php?page=N">N</a>

в pictureindex.php

$imagesperpage = 20; // картинок на страницу

$page = isset($_GET['page'] ? $_GET['page'] : '0' ); // если page не передан, то считаем, что выводится 1ая страница

if (!ctype_digit($page)) $page = 0; // на всякий случай проверяем чтобы передали нам только цифирки

$offset = $page * $imagesperpage; // с какой картинки начиная будем выводить

$result = mysql_query("SELECT * FROM pictures LIMIT $imagesperpage,$offset");

.... далее по вкусу =)

Автор: AlexKus Пятница, 07 Марта 2008, 23:08

спасибо щас попробую

Автор: AlexKus Пятница, 07 Марта 2008, 23:20

Это сново я. Я наверно покажусь полным чайником но у меня ничего не получается может вы мне подредактируете прямо в скрипте сам код а?
Начальный код dop.php

<?php

mysql_connect('localhost', 'root','test');
mysql_select_db('goods');


mysql_query("SET NAMES cp1251");

if (mysql_errno())
{
echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку

позже.';
exit;
}

$result=mysql_query("select * from dop");
header("Content-type:image/jpeg");



$i=0;
while ($row = mysql_fetch_row($result))
{
echo "<div align=\"center\">";

echo <<<HTML

<table width="500" id="table3" height="100">
<tr>
<td width="180" rowspan="3" valign="middle"><img src="$row[0]"></td>
<td><p><strong><a href="showpicture.php?name=$row[2]">$row[2]</a></td>
</tr>
<tr>
<td></strong>ISBN: $row[1]</td>
</tr>
<tr>
<td>Цена руб: $row[3]</td>
<hr></tr>
</table>
HTML;


echo '</p>';
$i=$i+1;
}
echo '<p>Найдено товара: '.$i.'</p>';

mysql_close();

?>

конечный код showpicture.php


<?php


mysql_connect('localhost', 'root','test');
mysql_select_db('goods');


mysql_query("SET NAMES cp1251");

if (mysql_errno())
{
echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку

позже.';
exit;
}

$name = $_GET["name"];


$imagesperpage = 20;

$page = isset($_GET['name'] ? $_GET['name'] : '0' );
if (!ctype_digit($page)) $page = 0;

$offset = $name * $imagesperpage;

$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset");

$q = mysql_query("select * from dop WHERE name = '$name'");
header("Content-type:image/jpeg");
$i=0;
while ($row = mysql_fetch_row($q))
{
echo "<div align=\"center\">";
echo <<<HTML
<table width="500" id="table3" height="100">
<tr>
<td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td>
<td><p><strong>Название: $row[2]</td>
</tr>
<tr>
<td></strong>ISBN: $row[1]</td>
</tr>
<tr>
<td>Цена руб: $row[3]</td>
<hr></tr>
</table>
HTML;
echo '</p>';
$i=$i+1;
}
echo '<p>Найдено товара: '.$i.'</p>';
mysql_close();
?>

Автор: Ekho Суббота, 08 Марта 2008, 18:00

Ничего страшного, все мы были новичками.

--- dop.php ---
$result=mysql_query("select * from dop");
- заменить на
$imagesperpage = 20;
$page = isset($_GET['name'] ? $_GET['name'] : '0' );
if (!ctype_digit($page)) $page = 0;
$offset = $name * $imagesperpage;
$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset");
--- ---

--- showpicture.php ---
- убрать нафиг
$imagesperpage = 20;

$page = isset($_GET['name'] ? $_GET['name'] : '0' );
if (!ctype_digit($page)) $page = 0;

$offset = $name * $imagesperpage;

$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset");
--- ---


и кстати, header("Content-type:image/jpeg"); н в одном из этих двух файлов не нужно, оно нужно только в том слуае, если ты непосредственно в php создаешь изображения и/или выводишь их.

Автор: Ekho Суббота, 08 Марта 2008, 18:23

вообще я showpicture.php сделал так

<?php

mysql_connect('localhost', 'root','test') OR die('Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.');

mysql_select_db('goods') OR die ('Ошибка: Нет доступа к базе данных');

mysql_query("SET NAMES cp1251");

if ( !isset($_GET["name"]) || !$_GET["name"]) die('Ошибка: не передано название картинки');

$name = mysql_escape_string($_GET["name"]);

$result = mysql_query("select * from dop WHERE name = '$name'");
if ($row = mysql_fetch_row($result)) {
echo "<div align=\"center\">";
echo <<<HTML
<table width="500" id="table3" height="100">
<tr><td><strong>Название: $row[2]</strong></td></tr>
<tr><td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td></tr>
<tr><td>ISBN: $row[1]</td></tr>
<tr><td>Цена руб: $row[3]</td></tr>
</table>
HTML;
echo '</div>';
} else {
echo "<p>Картинка '$name' не найдена</p>";
}
mysql_close();
?>

Автор: AlexKus Суббота, 08 Марта 2008, 23:37

пасибо тебе Ekho ты сдвинул этот камень ссылка открывает то что надо, но
--- dop.php ---
$result=mysql_query("select * from dop");
- заменить на
$imagesperpage = 20;
$page = isset($_GET['name'] ? $_GET['name'] : '0' );
if (!ctype_digit($page)) $page = 0;
$offset = $name * $imagesperpage;
$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset");
--- ---
это не работает или я не допер как оно работает.

Автор: AlexKus Понедельник, 10 Марта 2008, 11:11

Ekho помоги пожалуста еще
$imagesperpage = 2; // картинок на страницу

$page = isset($_GET['name'] ? $_GET['name'] : '0' );
if (!ctype_digit($page)) $page = 0;
$offset = $page * $imagesperpage;
$result = mysql_query("SELECT * FROM zerkalo_vlag limit $imagesperpage, $offset");
это не работает я не понимаю почему помоги а?

Автор: AlexKus Среда, 12 Марта 2008, 21:27

Кто нибудь помогите доделать скрипт. Открывается страничка внизу номера других страничек 12345... При нажатии на любую цифру открывается толь первая страничка вот скрипт

<?php
mysql_connect('localhost', 'root','test');
mysql_select_db('goods');
mysql_query("SET NAMES cp1251");
if (mysql_errno())
{
echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
exit;
}

$on_page = 2; //количество на одну страницу
if($page<0 || $page == "") $page = 0; //проверяем переменную

$res = mysql_query("SELECT count(*) as cnt FROM zerkalo_vlag");//
$res = mysql_fetch_array($res); // определяем общее количество элементов
$res = $res['cnt']; //

//строим панельку с номерами страниц
$txt = '<table><tr>';
if($page>0) $txt .= '<td><a href="?name='.($page-1).'" </td>';
$set_page = round($res/$on_page);
for($i = 1; $i <= $set_page; $i++)
$txt .= '<td><a href="?page='.$i.'">'.$i.'</a> </td>';
if($page<round($res/$on_page)) $txt .= '<td><a href="?page='.($page+1).'"</td>';
$txt .= '</table>';

$offset = $page * $on_page;
$result = mysql_query("SELECT * FROM zerkalo_vlag LIMIT $offset, $on_page");
echo "<div align=\"center\">";
echo $txt;

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

echo <<<HTML

<table width="400" id="table3" height="100">
<tr>
<td width="180" rowspan="3" valign="middle"><img src="$row[0]"></td>
<td><p><strong>Название: $row[2]</td>
</tr>
<tr>
<td></strong>ISBN: $row[1]</td>
</tr>
<tr>
<td>Цена руб: $row[3]</td>
<hr></tr>
</table>
HTML;
echo '</p>';

}
echo $txt;
echo '<p>Найдено товара: '.$res.'</p>';
mysql_close();
?>

Автор: BillyBoom Четверг, 13 Марта 2008, 17:52

тема постраничного вывода уже затрагивалась на форуме http://www.wincity.ru/index.php?showtopic=10413&hl=%EF%EE%F1%F2%F0%E0%ED%E8%F7%ED%FB%E9%2B%E2%FB%E2%EE%E4, там вроде толково объяснили.

Автор: AlexKus Пятница, 14 Марта 2008, 9:16

Спасибо я нашел эту тему у меня уже другая проблеиа. В этой частью скрипта я выбираю строчку из таблицы. Как мне сделать чтобы выбирать из нескольких таблиц. Помогите начинающему Плиз.



if ( !isset($_GET["name"]) || !$_GET["name"]) die('Ошибка: не передано название картинки');
$name = mysql_escape_string($_GET["name"]);
$result = mysql_query("select * from dop WHERE name = '$name'");

Автор: Ekho Пятница, 14 Марта 2008, 12:21

Что значит из нескольких таблиц?

расскажи подробнее. заодно приведи структуру таблиц

Автор: AlexKus Суббота, 15 Марта 2008, 17:05

У меня 5 таблиц 1,2,3,4,5 в них одинаковые названия столбцов photo, name, isbn, price.
Делаю поиск, выходит результат:
картинка название
картинка название
картинка название
картинка название
я нажимаю на картинку, открывается та же катртинка с ее описанием.
Мне надо выбрать 1 название из нескольких таблиц. код я приводил выше. из 1 таблицы выбирается а другие не могу подключить.

Автор: Ekho Суббота, 15 Марта 2008, 21:43

SELECT * FROM table1 WHERE name = '$name'
UNION
SELECT * FROM table2 WHERE name = '$name'
UNION
SELECT * FROM table3 WHERE name = '$name'
UNION
SELECT * FROM table4 WHERE name = '$name'
UNION
SELECT * FROM table5 WHERE name = '$name'

а вообще нет смысла использовать несколько таблиц одинакового содержания. Но это уже совсем другая история.

Автор: AlexKus Суббота, 15 Марта 2008, 22:07

Спасибо а в 1 таблицу я не могу у меня выборка по котегориям идет

Автор: Ekho Воскресенье, 16 Марта 2008, 0:19

можешь =) если почитаешь теорию БД vertag.gif biggrin.gif

Автор: AlexKus Воскресенье, 16 Марта 2008, 22:09

А можно еще вопросик? smile.gif)
У меня при поиске появляется результат из нескольких строк я сделал листалку. но при нажатии на другую страничку появляется ошибка что данные для поиска пусты. на других страничках где я просто показываю картинки из котегорий листалка работает нормально но при поиске глючит. вот код:

Код
<?php
$searchtable=$_POST['searchtable'];

 $searchtype=$_POST['searchtype'];
 $searchterm=$_POST['searchterm'];

 $searchterm= trim($searchterm);

 if (!$searchtype || !$searchterm)
 {
    echo 'Вы не ввели параметры поиска.  Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.';
    exit;
 }
 
 if (!get_magic_quotes_gpc())
 {
   $searchtype = addslashes($searchtype);
   $searchterm = addslashes($searchterm);
 }

require_once './php/conf.php';

if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){
die('Не удалось установить соединение с MySQL!');
}

if(!mysql_select_db($_conf[mysql_dbname])){
die('База данных не найдена!');
}
$nums = 5; //количество на одну страницу

if (isset($_GET['page']))
{
   $page = intval($_GET['page']);
}
else
{
   $page = 1;
} //проверяем переменную

$query = "SELECT COUNT(*) AS `counter` FROM ".$searchtable."";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);

$elements = $row['counter'];

$pages = ceil($elements/$nums);

if ($page < 1)
{
   $page = 1;
}
elseif ($page > $pages)
{
   $page = $pages;
}

$start = ($page-1)*$nums;



// когда у нас в таблице нет записей
if ($start < 0) $start = 0;
$query="select * from ".$searchtable." where ".$searchtype." like '%".$searchterm."%' LIMIT {$start}, {$nums}";
$sql = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_row($sql))
{  echo "<div align=\"center\">";
   echo <<<HTML

<table width="400" id="table3" height="100">
<tr>
 <td width="180" rowspan="3" valign="middle"><a href="showpicture.php?name=$row[2]"><img

src="$row[0]"></a></td>
 <td><p><strong><a href="showpicture.php?name=$row[2]">Название: $row[2]</a></td>
</tr>
<tr>
 <td></strong>ISBN: $row[1]</td>
</tr>
<tr>
 <td>Цена руб: $row[3]</td>
<hr></tr>
</table>
HTML;
echo '</p>';
}

// далее нам надо прицепить листалку

$neighbours = 6;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;

$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;

if ($page > 1)
{
   print ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><сюда</a> ';
}

for ($i=$left_neighbour; $i<=$right_neighbour; $i++)
{
   if ($i != $page)
   {
       print ' <a href="?page=' . $i . '">' . $i . '</a> ';
   }
   else
   {
       // выбранная страница
       print ' <b>' . $i . '</b> ';
   }
}

if ($page < $pages)
{
   print ' <a href="?page=' . ($page+1) . '">туда></a> ... <a href="?page=' . $pages . '">конец</a> ';
}

echo '<p>Найдено товара: '.$elements.'</center></p>';
mysql_close();

?>

Автор: Ekho Понедельник, 17 Марта 2008, 1:28

Естественно, ведь при переходе на новую страницу php работает "с чистого листа". т.е. не помнит переменных $searchtable, $searchtype, $searchterm.
Значит встает задача их как-то сохранить.
Как вариант использовать сессии:
------------------------------------------------------------

Код
$searchtable=$_POST['searchtable'];
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];

$searchterm= trim($searchterm);

if (!$searchtype || !$searchterm)
{
   echo 'Вы не ввели параметры поиска.  Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.';
   exit;
}

--- Заменить на: -----------------------------------------
Код

if ( isset($_POST['searchtable']) ) {
 $_SESSION['searchtable'] = $searchtable = $_POST['searchtable'];
 $_SESSION['searchtype'] = $searchtype = $_POST['searchtype'];
 $_SESSION['searchterm'] = $searchterm = trim($_POST['searchterm']);
} elseif ( isset($_SESSION['searchtable']) ) {
 $searchtable = $_SESSION['searchtable'];
 $searchtype = $_SESSION['searchtype'];
 $searchterm = $_SESSION['searchterm'];
} else {
 $searchtable = false;
 $searchtype = false;
 $searchterm = false;
}

if (!$searchtype || !$searchterm) {
   echo 'Вы не ввели параметры поиска.  Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.';
   exit;
}

-------------------------------------------------------

а вообще для начала загляни сюда:
http://www.php.net/manual/ru/language.variables.predefined.php

Автор: AlexKus Понедельник, 17 Марта 2008, 9:03

Спасибо все работает. почитаю как нибудь

Автор: AlexKus Понедельник, 17 Марта 2008, 16:13

Это сново я. решил воспользоваться подсказкой перенести все данные в 1 таблицу получилось так

CREATE TABLE kotgoods (
id int unsigned not null,
photo char(100) not null,
ISBN char(13) not null primary key,
name char(50) not null, price float(6,2),
memo text not null);

получилась такая табл
id ... ... ...
1 ... ... ...
1 ... ... ...
2 ... ...
2 ... ...
..


нужно сделать поиск по котегориям помогите кто-нибудь
код search.php

Код
<form action="result.php" method=post>
<font size="2">Выберите:</font><br />
<select name="id">          
<option value="1"> Новинки</option>
<option value="2"> Корпусная</option>
<option value="3"> Из стекла</option>        
<option value="4"> Зеркала влагостойкие</option>
<option value="5"> Зеркала в багете</option>
<option value="6"> Дополнительно</option></select>
<p>
<font size="2">Выберите группу поиска:</font><br />
<select name="searchtype">
<option value="name"> По названию</option>
<option value="ISBN"> По ISBN</option>
<option value="price"> По цене</option></select>
<p><font size="2">Введите информацию для  поиска:</font><br />
<input name="searchterm" type="text" size="20">
<br />
<input type="submit" value="Найти"></p></form>



код result.php

Код
<?php
 $id=$_POST['id'];
 $searchtype=$_POST['searchtype'];
 $searchterm=$_POST['searchterm'];

 $searchterm= trim($searchterm);

 if (!$searchtype || !$searchterm )
 {
    echo 'Вы не ввели параметры поиска.  Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.';
    exit;
 }
 
 if (!get_magic_quotes_gpc())
 {
   $searchtype = addslashes($searchtype);
   $searchterm = addslashes($searchterm);
   $id = addslashes($id);
 }

if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){
die('Не удалось установить соединение с MySQL!');
}

if(!mysql_select_db($_conf[mysql_dbname])){
die('База данных не найдена!');
}
$result=mysql_query("select * from kotgoods where  id = ??  ".$searchtype." like '%".$searchterm."%' ");
...
?>


Автор: AlexKus Суббота, 12 Апреля 2008, 9:40

НУ помогите со скриптом, который выше плиз.

Автор: Ekho Суббота, 12 Апреля 2008, 9:50

Код

$result=mysql_query("SELECT * FROM kotgoods WHERE  id = $id AND $searchtype LIKE '%$searchterm%' ");

Автор: AlexKus Суббота, 12 Апреля 2008, 10:34

выводит все без индекса id.
id = $id не проверяет почемуто

Автор: AlexKus Суббота, 12 Апреля 2008, 11:36

а может у меня ошибка в самой базе?

Код

CREATE TABLE kot
(id int unsigned not null auto_increment
primary key , kot char(50) not null);

CREATE TABLE kotgoods (id int unsigned  
not null, photo char(100) not null, ISBN char(13)
not null primary key, name char(50) not null, price
float(6,2), memo text not null);

insert into kot values (1,'Новинки');
insert into kot values (2,'Корпусная');
insert into kot values (3,'Стекло');
insert into kot values (4,'Зеркало влагостойкое');
insert into kot values (5,'Зеркало в багете');
insert into kot values (6,'Дополнительный ассортимент');

insert into kotgoods values (1,'images/00000000.jpg','0-672-31000-0','Стол компьютерный СТК №10','5267.00','Указана рекомендуемая розничная цена');
...
insert into kotgoods values (2,'images/modul01_s.jpg','0-672-31000-8','Модуль №1 Основа','11974.00','Указана рекомендуемая розничная цена');
...
insert into kotgoods values (3,'images/freestyle01_s.jpg','0-672-31001-7','«Фристайл-1»','7874.00','Указана рекомендуемая розничная цена');
...

Автор: Ekho Суббота, 12 Апреля 2008, 11:55

Проверь правильно ли у тебя заполнено поле id в таблице kotgoods (т.е. соответствуют ли значения поля значениям поля id из таблицы kot).

ещё можно проверить правильность SQL-запроса:

Код
$sqlquery = "SELECT * FROM kotgoods WHERE  id = $id AND $searchtype LIKE '%$searchterm%' ";
var_dump($sqlquery);
$result=mysql_query( $sqlquery );

Автор: AlexKus Суббота, 12 Апреля 2008, 12:00

проверил в sql все соответствует но при запросе ничего не выводит

Автор: Ekho Суббота, 12 Апреля 2008, 12:07

попробуй так:

Код
$sqlquery = "SELECT * FROM kotgoods WHERE  id = $id ";
if ( $searchterm ) $sqlquery .= " AND $searchtype LIKE '%$searchterm%' ";
var_dump($sqlquery);
$result=mysql_query( $sqlquery );


и заодно скопируй сюда sql-запрос, который выводится на экран var_dump'ом.

Автор: AlexKus Суббота, 12 Апреля 2008, 12:07

может я не так переменную указал?
$id=$_POST['id'];

Автор: Ekho Суббота, 12 Апреля 2008, 12:13

Код
<select name="id">

значит получать значение надо именно так как ты написал.

И скопируй сюда наконец sql-запрос, который выводится на экран var_dump'ом.

Автор: AlexKus Суббота, 12 Апреля 2008, 12:15

string(57) "SELECT * FROM kotgoods WHERE id = AND name LIKE '%1%' "
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\localhost\www\result.php on line 129
это?

Автор: Ekho Суббота, 12 Апреля 2008, 13:18

именно.

В данном случае видно, что в переменную $id ничего не присвоилось.
Почему, сказать не могу.

можно ещё посмотреть что в $_POST вообще записалось:
var_dump($_POST);

Автор: AlexKus Суббота, 12 Апреля 2008, 13:34

и че же мне делать?
вот то что в $_POST
string(57) "SELECT * FROM kotgoods WHERE id = AND name LIKE '%1%' " array(3) { ["searchtable"]=> string(3) "new" ["searchtype"]=> string(4) "name" ["searchterm"]=> string(1) "1" }

Автор: Ekho Суббота, 12 Апреля 2008, 13:53

Что делать? Для начала учить HTML!!!! ranting2.gif

элемент SELECT должен иметь закрывающий тэг

Код
<select name="id">
<option ... >
<option ... >
<option ... >
</select>


P.S. и PHP тебе тоже нужно подучить прежде чем браться за такие задачи.

Автор: AlexKus Суббота, 12 Апреля 2008, 21:07



Код

<select name="id">          
<option value="1"> Новинки</option>
<option value="2"> Корпусная</option>
<option value="3"> Из стекла</option>        
<option value="4"> Зеркала влагостойкие</option>
<option value="5"> Зеркала в багете</option>
<option value="6"> Дополнительно</option></select>


это есть у меня в коде search.php. я же приводил 2 скрипта поиск и результат

Автор: Ekho Суббота, 12 Апреля 2008, 21:13

Там тебе повезло, сработало.

а здесь из-за незакрытых тегов не работает.

УЧИ МАТЧАСТЬ! vertag.gif

P.S. http://stepbystep.htmlbook.ru/

Автор: AlexKus Суббота, 12 Апреля 2008, 21:54

это тот же стрипт поиска я его редактирую

Автор: AlexKus Четверг, 17 Апреля 2008, 12:31

Помогите пожалуста. Кнопка добавить работает, все добавляется, а удалить не работает.

Код
<form action="insert_goods.php" method="post" enctype="multipart/form-data">

<font size="2">Выберите:</font><br />
<select name="searchtable">
<option value="1"> Новинки</option>
<option value="2"> Корпусная</option>
<option value="3"> Из стекла</option>
<option value="4"> Зеркала влагостойкое</option>
<option value="5"> Зеркала в багете</option>
<option value="6"> Дополнительно</option></select>
<p>
<table border="0" width="275" height="256">
<input name="photo" type="file" size="21" />
<td width="69">ISBN</td> <td><input type="text" name="ISBN" maxlength="13" size="21"></td> </tr>
<tr> <td width="69">Название</td> <td> <input type="text" name="name" maxlength="60" size="21"></td> </tr>
<tr> <td width="69">Цена, руб</td><td><input type="text" name="price" maxlength="7" size="21"></td> </tr>
<tr> <td width="69">Описание</td> <td height="71" width="188"><textarea rows="7" name="memo" cols="21" rows="3"></textarea></td>
</tr><tr><td height="57" width="269" colspan="2"><input type="submit" value="Сохранить"><a href="insert_goods.php?name=del"><input type="submit" name="del" value=Удалить></a></td>
</p> <p> </tr> </table></form></p>

insert_goods.php

Код

...
$path = 'images/';
if(copy($_FILES['photo']['tmp_name'],$path.$_FILES['photo']['name'])) {
}

$result=mysql_query("insert into kotgoods values('".$searchtable."', '".$path.$_FILES['photo']['name']."', '".$ISBN."', '".$name."', $price, '".$memo."')");

if ($result)
    echo  " Товар добавлен в базу данных.";

$name = (!empty($_POST['name'])) ? $_POST['name'] : null;

if($name=="del")
{
      mysql_query("DELETE FROM kotgoods WHERE id = ".$searchtable." AND name='".$name."'")or die(mysql_error());
     }

...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)