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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Выборка
 
 автор: Peter   (29.06.2005 в 11:35)   письмо автору
 
 

добрый день, вопрос следующий: как мне добавить другую выборку, аналогичную $query (естественно,с другим условием), я что-то запутался...



 $color1="#eaeaea";
$color2="#f9f9f9";
   /* Выполняем SQL-запрос */
    $query = "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac > 1  ";

    $result = mysql_query($query) or die("Query failed : " . mysql_error());

    $key=1;
    /* Выводим результаты в html */


  print "<br><br><center><table align=center width=60%  border=1 class='tab' bordercolor=#cccccc>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
       foreach ($line as $col_value) {


      print "\t<tr bgcolor=$bgcolor><td align=center >второй_параметр</td><td align=center >$col_value</td></tr>\n";    }
            if($key=="1"){$bgcolor=$color1;$key--;}
 else{$bgcolor=$color2;$key++;}


    }
    print "</table></center>\n";

   
 
 автор: P@Sol   (29.06.2005 в 11:45)   письмо автору
 
   для: Peter   (29.06.2005 в 11:35)
 

все тоже самое
<?
//можно даже имена не менять:)
$query "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac > 1  "

    
$result mysql_query($query) or die("Query failed : " mysql_error()); 
//или так
$query2 "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac > 1  "

    
$result2 mysql_query($query2) or die("Query failed : " mysql_error()); 

   
 
 автор: Peter   (29.06.2005 в 13:36)   письмо автору
 
   для: P@Sol   (29.06.2005 в 11:45)
 

не получается...
должна формироваться таблица с двумя столбцами, в первом столбце данные от одной выборки, во втором - другой
в каждую последующую строку таблицы помещается следующий параметр...
собственно нужно добавить эту самую вторую выборку

   
 
 автор: P@Sol   (29.06.2005 в 13:38)   письмо автору
 
   для: Peter   (29.06.2005 в 13:36)
 

я бы сделал как умею:)
собрал массив(ы) из первого запроса, и массив(ы) из второго...и потом бы выводил значения из этих массивов

   
 
 автор: Loki   (29.06.2005 в 14:19)   письмо автору
 
   для: Peter   (29.06.2005 в 13:36)
 

А нельзя ли чуть поподробнее условие задачи, а то я не очень понял что мы пытаемся сделать.

   
 
 автор: Peter   (29.06.2005 в 16:12)   письмо автору
 
   для: Loki   (29.06.2005 в 14:19)
 

можно еще подробнее: на странице выводятся данные из базы (информация о вакансиях), формируется таблица где каждая последующая ячейка заполняется следующим параметром, нужно чтоб к каждой ячейке добавлялась ячейка с расшифровкой

должность: суперадмин(бог)
возраст: до 40
зарплата: от 50$
и т.д.

   
 
 автор: P@Sol   (29.06.2005 в 16:22)   письмо автору
 
   для: Peter   (29.06.2005 в 16:12)
 

или можно сложный запрос делать (по нескольким таблицам)

   
 
 автор: Peter   (29.06.2005 в 16:55)   письмо автору
 
   для: Peter   (29.06.2005 в 16:12)
 

... расшифровки у меня забиты в ту-же базу под строчкой с ID#1

   
 
 автор: Loki   (29.06.2005 в 16:56)   письмо автору
 
   для: Peter   (29.06.2005 в 16:12)
 

Чувствую, что опять не вполне понял. Это не то:

<?
$query 
"SELECT  vac, edu, st, age, money FROM vacancy WHERE id_vac > 1  "
$result=mysql_query($result);
print 
"<table>
<tr>
<td>вакансия</td>
<td>образование</td>
<td>стаж</td>
<td>возраст</td>
<td>з/п</td></tr>"
;
while (
$list=mysql_fetch_array($result))
{
print 
"<tr><td>".$list['vac']."</td>
<td>"
.$list['edu']."</td>
<td>"
.$list['st']."</td>
<td>"
.$list['age']."</td>
<td>"
.$list['money']."</td></tr>";
}
print 
"<table>;
?>

   
 
 автор: Peter   (29.06.2005 в 17:15)   письмо автору
 
   для: Loki   (29.06.2005 в 16:56)
 

проверить не смог, ошибка вылетает в этой
while ($list=mysql_fetch_array($result))
строке...

   
 
 автор: Loki   (29.06.2005 в 17:42)   письмо автору
 
   для: Peter   (29.06.2005 в 17:15)
 

Хм... а какую ошибку? в вашем коде ведь такая же конструкция.

   
 
 автор: cheops   (29.06.2005 в 19:18)   письмо автору
 
   для: Peter   (29.06.2005 в 17:15)
 

Поставьте после строки
<?php
$result
=mysql_query($result);
?>

проверку
<?php
  
if(!$result) exit(mysql_error());
?>

Что выводится в окно браузера?

   
 
 автор: Peter   (30.06.2005 в 10:49)   письмо автору
 
   для: cheops   (29.06.2005 в 19:18)
 

выводит: Query was empty

Но не суть важно, возвращаясь к первому посту и приведенному в нем коду, повторю задачу: производится выборка из базы с условием id_vac > 1, результаты помещаются в <table>, так вот, нужно сделать точно такую же выборку, но естественно с други условием (например id_vac = 1), и результаты помещать в ту же таблицу...
теперь вроде все ясно и подробно изложил...

   
 
 автор: cheops   (30.06.2005 в 12:38)   письмо автору
 
   для: Peter   (30.06.2005 в 10:49)
 

>выводит: Query was empty
А да действительно, исправьте строки
<?php
$query 
"SELECT  vac, edu, st, age, money FROM vacancy WHERE id_vac > 1  "
$result=mysql_query($result);
?>

на
<?php
$query 
"SELECT  vac, edu, st, age, money FROM vacancy WHERE id_vac > 1  "
$result=mysql_query($query);
?>

   
 
 автор: cheops   (30.06.2005 в 12:40)   письмо автору
 
   для: Peter   (30.06.2005 в 10:49)
 

>теперь вроде все ясно и подробно изложил...
Ясно, только не понятно это должна быть новая таблица или результат с условием id_vac = 1 или результат должен выводиться вместо первой таблицы?

   
 
 автор: P@Sol   (30.06.2005 в 12:44)   письмо автору
 
   для: cheops   (30.06.2005 в 12:40)
 

в одну таблицу:)


<? 
$query 
"SELECT  vac, edu, st, age, money FROM vacancy WHERE id_vac > 1  "
$result=mysql_query($query); 
$num=mysql_num_rows($result);

$query2 "SELECT  vac, edu, st, age, money FROM vacancy WHERE id_vac = 1  "
$result2=mysql_query($query2); 
$num2=mysql_num_rows($result2);

if (
$num>$num2$k=$num;
else 
$k=$num2;

print 
"<table> 
<tr> 
<td>вакансия</td> 
<td>образование</td> 
<td>стаж</td> 
<td>возраст</td> 
<td>з/п</td></tr>"

for (
$i=0;$i<$k;$i++)
{
$list mysql_fetch_array($result);
$list2 mysql_fetch_array($result2);

print 
"<tr><td>".$list['vac']."</td> 
<td>"
.$list['edu']."</td> 
<td>"
.$list['st']."</td> 
<td>"
.$list['age']."</td> 
<td>"
.$list['money']."</td></tr>"

print 
"<tr><td>".$list2['vac']."</td> 
<td>"
.$list2['edu']."</td> 
<td>"
.$list2['st']."</td> 
<td>"
.$list2['age']."</td> 
<td>"
.$list2['money']."</td></tr>"


print 
"<table>; 
?> 


что то типа того...ток тута получается строка с id_vac > 1, строка с id_vac = 1 и т.д.


for ($i=0;$i<$num;$i++)
{
$list = mysql_fetch_array($result);

print "<tr><td>".$list['vac']."</td> 
<td>".$list['edu']."</td> 
<td>".$list['st']."</td> 
<td>".$list['age']."</td> 
<td>".$list['money']."</td></tr>"; 
}

for ($i=0;$i<$num;$i++)
{
$list2 = mysql_fetch_array($result2);

print "<tr><td>".$list2['vac']."</td> 
<td>".$list2['edu']."</td> 
<td>".$list2['st']."</td> 
<td>".$list2['age']."</td> 
<td>".$list2['money']."</td></tr>"; 



а так сначало все с ">1", а потом все с "=1"

   
 
 автор: Loki   (30.06.2005 в 13:11)   письмо автору
 
   для: P@Sol   (30.06.2005 в 12:44)
 


<? 
$query 
"SELECT  id_vac, vac, edu, st, age, money FROM vacancy WHERE id_vac > 1  "
$result=mysql_query($query); 
$num=mysql_num_rows($result); 

print 
"<table> 
<tr> 
<td>вакансия</td> 
<td>образование</td> 
<td>стаж</td> 
<td>возраст</td> 
<td>з/п</td>
<td>вакансия2</td> 
<td>образование2</td> 
<td>стаж2</td> 
<td>возрас2т</td> 
<td>з/п2</td></</tr>"

 
while (
$list mysql_fetch_array($result)) 
{

print 
"<tr><td>".$list['vac']."</td> 
<td>"
.$list['edu']."</td> 
<td>"
.$list['st']."</td> 
<td>"
.$list['age']."</td> 
<td>"
.$list['money']."</td>"
if (
$list['id_vac']==1)
print 
"<td>".$list['vac']."</td> 
<td>"
.$list['edu']."</td> 
<td>"
.$list['st']."</td> 
<td>"
.$list['age']."</td> 
<td>"
.$list['money']."</td></tr>"
else
print 
"<td colspan=5>&nbsp;</td></tr>";

print 
"<table>; 
?> 


Но я опять нифига не понял что нужно сделать:)

   
 
 автор: Peter   (30.06.2005 в 15:04)   письмо автору
 
   для: P@Sol   (30.06.2005 в 12:44)
 

этот скрипт я посмотрел - работает... но немного не то.
а чем вам мой вариант не нравится, его трудно модернизировать?
(хотя для меня оказалось трудно)

<?
 
/* Выполняем SQL-запрос */
    
$query "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac > 1  ";

    
$result mysql_query($query) or die("Query failed : " mysql_error());
    
// добавил сам
$query2 "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac = 1  ";

    
$result2 mysql_query($query2) or die("Query failed : " mysql_error());
    
$line2 mysql_fetch_array($result2);

    
$key=1;
    
/* Выводим результаты в html */


  
print "<br><br><center><table align=center width=60%  border=1 class='tab' bordercolor=#cccccc>\n";

    while (
$line mysql_fetch_array($resultMYSQL_ASSOC))
    {
       foreach (
$line as $col_value) {


      print 
"\t<tr bgcolor=$bgcolor><td align=center >[b]$line2[/b]</td><td align=center >$col_value</td></tr>\n";    }
            if(
$key=="1"){$bgcolor=$color1;$key--;}
 else{
$bgcolor=$color2;$key++;}


    }
    print 
"</table></center>\n";
?>



вот... пытался сам добавить - выдает Array в первом столбце...
где накосячил?

   
 
 автор: P@Sol   (30.06.2005 в 15:13)   письмо автору
 
   для: Peter   (30.06.2005 в 15:04)
 

$line2 = mysql_fetch_array($result2); - должна быть в цикле - это раз, а так как это массив надо указать имя $line2['age']..
твой вариант не очень подходит для данного случая...как минимум из-за того что надо два цикла, т.к. значений может быть при разных условиях разное кол-во

   
 
 автор: Peter   (30.06.2005 в 15:38)   письмо автору
 
   для: P@Sol   (30.06.2005 в 15:13)
 

... просто я вбил по аналогии с первым запросом...
хорошо, если предположить что количество значений всегда будет совпадать, как должен выглядеть скрипт?
т.е. как мне вставить вторую выборку в этот же цикл? (если я правильно понял)

   
 
 автор: P@Sol   (30.06.2005 в 15:46)   письмо автору
 
   для: Peter   (30.06.2005 в 15:38)
 

Я точно не уверен...
<?

    $key
=1
    
/* Выводим результаты в html */ 

  
print "<br><br><center><table align=center width=60%  border=1 class='tab' bordercolor=#cccccc>\n"

    while (
$line mysql_fetch_array($resultMYSQL_ASSOC)) 
    { 
      
$line2 mysql_fetch_array($result2); 

       foreach (
$line as $col_value) { 
      print 
"\t<tr bgcolor=$bgcolor><td align=center >$line2</td><td align=center >$col_value</td></tr>\n";    } 
            if(
$key=="1"){$bgcolor=$color1;$key--;} 
else{
$bgcolor=$color2;$key++;} 
    } 

   
 
 автор: Peter   (30.06.2005 в 15:59)   письмо автору
 
   для: P@Sol   (30.06.2005 в 15:46)
 

пишет Array... ($line2)
ну да, $line2['age'] скрипт выводит, но мне-то нужно выводить все параметры по очереди, как это происходит во второй выборке...

   
 
 автор: P@Sol   (30.06.2005 в 16:18)   письмо автору
 
   для: Peter   (30.06.2005 в 15:59)
 

а где выводится первый параметр?

   
 
 автор: Peter   (30.06.2005 в 16:31)   письмо автору
 
   для: P@Sol   (30.06.2005 в 16:18)
 

еще раз: $col_value, то что выводится без проблем, $line2 то что должно выводится так же и там же, но не выводится...
уфф... страницу показать к сожалению не могу, а принт скрин прикрепить не получается :(

   
 
 автор: P@Sol   (30.06.2005 в 16:37)   письмо автору
 
   для: Peter   (30.06.2005 в 16:31)
 

пробовал написать код - ничего не получилось

   
 
 автор: Peter   (30.06.2005 в 17:08)   письмо автору
 
   для: Peter   (30.06.2005 в 15:04)
 


<?
/* Выполняем SQL-запрос */
    
$query "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac > 1  ";

    
$result mysql_query($query) or die("Query failed : " mysql_error());
    
//или так
$query2 "SELECT  vac, edu, st, nav, age, money, prim, cont, email FROM vacancy WHERE id_vac = 1  ";

    
$result2 mysql_query($query2) or die("Query failed : " mysql_error());
     
$line2 mysql_fetch_array($result2);
    
$key=1;
    
/* Выводим результаты в html */


  
print "<br><br><center><table align=center width=60%  border=1 class='tab' bordercolor=#cccccc>\n";

    while (
$line mysql_fetch_array($resultMYSQL_ASSOC))
    {

         foreach (
$line2 as $col_value2)
         {
print 
"<tr bgcolor=$bgcolor><td align=center >$col_value2</td>\n";
}

              foreach (
$line as $col_value)
        {


      print 
"\t<td align=center >$col_value</td></tr>";
       }

            if(
$key=="1"){$bgcolor=$color1;$key--;}
 else{
$bgcolor=$color2;$key++;}


    }
    print 
"</table></center>\n";

 
?>


вот так вроде начинает выводить обе выборки, но таблица формируется не правильно:
вакансия
вакансия
зарплата
зарплата сисадмин
email
email
и т.д.


большая часть из обоих выборок попадает в первый столбец

   
 
 автор: P@Sol   (01.07.2005 в 09:28)   письмо автору
 
   для: Peter   (30.06.2005 в 17:08)
 

я думал об этом варианте, но отказался, потому что:


 foreach ($line2 as $col_value2) 
         { 
print "<tr bgcolor=$bgcolor><td align=center >$col_value2</td>\n"; 


              foreach ($line as $col_value) 
        { 


      print "\t<td align=center >$col_value</td></tr>"; 
       } 


сначало работа полностью происходит с $line2, а только потом, как там считаются все данные, работа переходит на $line...т.е. получается

<tr bgcolor=$bgcolor><td align=center >$col_value2</td>\n //1 ячейка в 1 строке
<tr bgcolor=$bgcolor><td align=center >$col_value2</td>\n //1 ячейка во второй строке
<tr bgcolor=$bgcolor><td align=center >$col_value2</td>\n // 1-ая ячейка в третьей строке
а потом
<td align=center >$col_value</td></tr> //2 ячейка в третьей строке
<td align=center >$col_value</td></tr> //1 ячейка в четвертой строке
<td align=center >$col_value</td></tr>//1 ячейка в пятой строке

   
 
 автор: Peter   (01.07.2005 в 11:45)   письмо автору
 
   для: P@Sol   (01.07.2005 в 09:28)
 

да, это был тупиковый путь...
сегодня, на свежую голову, я решил этот вопрос так:

<?
 
print "<br><br><center><table align=center width=60%  border=1 class='tab' bordercolor=#cccccc>\n";

    while (
$line mysql_fetch_array($resultMYSQL_ASSOC))
    {



              foreach (
$line as $col_value)
        {
        if (
$col_value==$line['vac'])  {
             
$first="Вакансия"; }
              if (
$col_value==$line['email'])  {
             
$first="E-mail"; }
               if (
$col_value==$line['edu'])  {
             
$first="Требуемый уровень образования"; }

              if (
$col_value==$line['st'])  {
             
$first="Опыт работы"; }

               if (
$col_value==$line['nav'])  {
             
$first="Необходимые навыки"; }
                 if (
$col_value==$line['age'])  {
             
$first="Возраст"; }
               if (
$col_value==$line['money'])  {
             
$first="Зароботная плата"; }

             if (
$col_value==$line['prim'])  {
             
$first="Дополнительная информация"; }
               if (
$col_value==$line['cont'])  {
             
$first="Контактная информация"; }



      print 
"\t<tr bgcolor=$bgcolor><td>$first</td><td align=center >$col_value</td></tr>\n";
       }

            if(
$key=="1"){$bgcolor=$color1;$key--;}
 else{
$bgcolor=$color2;$key++;}


    }
    print 
"</table></center>\n";
?>


...но тут опять возникла маленькая проблемка: если какие-то параметры не введены в базу, при выборке пустые позиции определяются как $first="Контактная информация", т.е. по последниму условию

   
 
 автор: Peter   (01.07.2005 в 15:40)   письмо автору
 
   для: Peter   (01.07.2005 в 11:45)
 

всё... сделал сам...
всем спасибо!

   
Rambler's Top100
вверх

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