Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Какой вариант кода, правельно сформирован?

Сообщения:  [1-8] 

 
 автор: Trianon   (25.09.2006 в 09:26)   письмо автору
 
   для: Diablo_   (24.09.2006 в 22:45)
 

потому что в SQL-операторе (1)синтаксические и (2)семантические ошибки.
(1) условие отбора по дате должно стоять после WHERE
(2) ошибка записи дат, подроно разобрана в
http://softtime.ru/forum/read.php?id_forum=3&id_theme=24883

   
 
 автор: Diablo_   (24.09.2006 в 22:45)   письмо автору
 
   для: Trianon   (24.09.2006 в 22:03)
 

Объясни пожалуйста, тогда почему вот такой вариант не хочет выводить картинку?

$my->sql_query="SELECT gp.ID, gp.description, gp.gen_name, gs.Section 
FROM gallery_picture as gp JOIN gallery_section as gs ON gs.id = gp.id_section (gp.datas<'20.09.2006') 
ORDER BY gp.datas DESC LIMIT 1";
$my->sql_execute();   
if (!$my->sql_err && mysql_num_rows($my->sql_res))  
{  
    list($id, $descr, $gen, $sect) = mysql_fetch_row($my->sql_res); 
    $descr = htmlspecialchars($descr); 
echo "<a href=\"index.php?cmd=gallery&big=$id\" title=\"$descr\"><img src=\"gallery/work/$sect/small_$gen\" border=0></a><br>"; 
        }

   
 
 автор: Trianon   (24.09.2006 в 22:03)   письмо автору
 
   для: Diablo_   (24.09.2006 в 21:52)
 

gallery_picture as gp
gallery_section as gs
- это назначение псевдонимов (вторых имен для таблиц)
Можно было бы и без них, то есть писать

SELECT gallery_picture.ID, gallery_picture.Section, gallery_section.Section  FROM....
но так код короче.
ON - часть синтаксиса соединения таблиц. Общий вид внутреннего соединения:

таб1 JOIN таб2 ON таб1.ст1=таб2.ст2  

   
 
 автор: Diablo_   (24.09.2006 в 21:52)   письмо автору
 
   для: Trianon   (24.09.2006 в 21:41)
 

Спасибо!
А нимогли бы вы, пояснить вот эту строку?

SELECT gp.ID, gp.description, gp.gen_name, gs.Section FROM gallery_picture as gp JOIN gallery_section as gs ON gs.id = gp.id_section ORDER BY rand() LIMIT 1

особенно gp, ON, gs

   
 
 автор: Trianon   (24.09.2006 в 21:41)   письмо автору
 
   для: Diablo_   (24.09.2006 в 20:07)
 

$ перед list уберите. Это я переусердствовал.

   
 
 автор: Diablo_   (24.09.2006 в 20:07)   письмо автору
 
   для: Trianon   (24.09.2006 в 17:15)
 

ошибку выдаёт вот в этой строке

 $list($id, $descr, $gen, $sect) = mysql_fetch_row($my->sql_res);

   
 
 автор: Trianon   (24.09.2006 в 17:15)   письмо автору
 
   для: Diablo_   (24.09.2006 в 16:26)
 


$my->sql_query="SELECT gp.ID, gp.description, gp.gen_name, gs.Section
    FROM gallery_picture as gp JOIN gallery_section as gs ON gs.id = gp.id_section 
    ORDER BY rand() LIMIT 1";  
$my->sql_execute();  
if (!$my->sql_err && mysql_num_rows($my->sql_res)) 

    $list($id, $descr, $gen, $sect) = mysql_fetch_row($my->sql_res);
    $descr = htmlspecialchars($descr);
    echo "<a href=\"index.php?cmd=gallery&big=$id\" title=\"$descr\"><img
        src=\"gallery/work/$sect/small_$gen\" border=0></a><br>"; 
}

   
 
 автор: Diablo_   (24.09.2006 в 16:26)   письмо автору
 
 

1 Вариант

<? 
//------------------------------ 
$my->sql_query="SELECT * FROM gallery_picture order by rand() LIMIT 1"
$my->sql_execute(); 

if (@
mysql_num_rows($my->sql_res)==0
    
$data='0'
else 

    for (
$data1=array(); $row1=mysql_fetch_assoc($my->sql_res); $data1[]=$row1);                 
    foreach (
$data1 as $element1
    { 
        
$data=$element1['datas']; 
        
$picture_name=$element1['gen_name']; 
        
$section=$element1['id_section']; 
        
$id_picture=$element1['ID']; 
        
$description=$element1['description']; 
    } 

//------------------------------- 
$my->sql_query="select * from gallery_section where ID='".$section."'"
$my->sql_execute(); 

if (@
mysql_num_rows($my->sql_res)==0
    
$data='0'
else 

    for (
$data1=array(); $row1=mysql_fetch_assoc($my->sql_res); $data1[]=$row1);                 
    foreach (
$data1 as $element1
    { 
        
$section_ok=$element1['Section']; 
    } 
echo 
'<a href="index.php?cmd=gallery&big='.$id_picture.'" title="'.$description.'"><img src="gallery/work/'.$section_ok.'/small_'.$picture_name.'" border=0></a>'

//-------------------------------------------------------- 
?>


2 вариант

<?
//------------------------------
if (eregi("random_work.php"$_SERVER['PHP_SELF'])) {
    
Header("Location: ../index.php");
    die();
}


function 
SectionNameRW($section_id)
{
    
$GLOBALS['my']->sql_query="select `section` from `gallery_section` where `ID`='".addslashes($section_id)."'";
    
$GLOBALS['my']->sql_execute();
    if (
$GLOBALS['my']->sql_err
    {
        echo 
$GLOBALS['my']->sql_err;
    } 

    for (
$temp=array();$row=mysql_fetch_array($GLOBALS['my']->sql_res);$temp[]=$row);
    foreach (
$temp as $temps)
    {
        
$section=$temps['section'];
    }
    return 
$section;

}

$my->sql_query="select * from `gallery_picture`";
$my->sql_execute();
if (
$my->sql_err
{
    echo 
$my->sql_err;
}

$num=mysql_num_rows($my->sql_res)-1;
mt_srand(time()+(double)microtime()*1000000+getmypid());
$les=mt_rand(0,$num)+1;
for(
$article=array(); $row=mysql_fetch_array($my->sql_res); $article[]=$row);

$i=0;
foreach(
$article as $artelement)
{
    
$i++;
    if (
$i==$les)
    {
        
$s=$artelement['description'];
        echo 
'<a href="index.php?cmd=gallery&big='.$artelement['ID'].'" title="'.$s.'"><img src="gallery/work/'.SectionNameRW($artelement['id_section']).'/small_'.$artelement['gen_name'].'" border=0></a><br>';
        break;
    }
};
//-------------------------------
?>


коды, делают одно и тоже, это получение картинки и информации о ней! просто хочу понять как правельно писать, один вариант мой а другой знакомого!
Если не затруднит, то с пояснениями почему то или иной вариант правильнее!

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования