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

Форум PHP

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

 

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

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

тема: как передать определённое значение из таблицы
 
 автор: Stasycat   (27.03.2008 в 17:49)   письмо автору
 
 

На странице star_z3.php выводится таблица - список заявок на рассмотрение директором.
У каждой заявки есть № и пароль к ней. Хочу, чтобы при нажатии на кнопку (рядом с № заявки) открывалась в новом окне zayavka_na_ras.php именно эта заявка. Вот мой код:

$query = "SELECT * FROM zayavki_na_ras"; 
$result = mysql_query($query) or die("Запрос ошибочный"); 
while($row=mysql_fetch_array($result)) 
{
.................
$log_z = $row["n_zayavki"];
$pas_z = $row["password"];
echo "<tr height=><td colspan='4' align='center' bgcolor='#$tsvet'>
<form name='form_1' action='../admin/izmenenie/zayavka_na_ras.php?log_z=$log_za&pas_z=$pas_z' method='get'>
<span class='catalog_group'>заявка № $log_z &nbsp;</span>    
<input type='hidden' name='log_z' value='$log_z'>
<input type='hidden' name='pas_z' value='$pas_z'>
<input type='button' value='Рассмотреть' onClick='openWin1()'>";
?>
                         <script language="JavaScript">
                <!-- hid
                function openWin1() {
                myWin = open("http://www.root5.ru/admin/izmenenie/zayavka_na_ras.php?log_z=<?=
                $log_z?>
&pas_z=<?=$pas_z?>","mywindow","");
                }
                // -->
                 </script>
<?php
print "</form></td>";
.........................................


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

   
 
 автор: mihdan   (28.03.2008 в 11:06)   письмо автору
 
   для: Stasycat   (27.03.2008 в 17:49)
 

Естественно, функция js постоянно генерится в цикле. Вынесите ее за пределы цикла

   
 
 автор: Stasycat   (28.03.2008 в 12:35)   письмо автору
 
   для: mihdan   (28.03.2008 в 11:06)
 

Да в том-то и дело - куда бы я её не поставила, везде при обращении она будет брать значение из переменной $log_z, а при выводе полной таблицы это, естественно, будет последнее значение. Как сделать так, чтобы в форме запоминалось значение именно текущей строки?

   
 
 автор: Хулиган   (28.03.2008 в 13:05)   письмо автору
 
   для: Stasycat   (28.03.2008 в 12:35)
 

Вы бы нарисовали ваш код полностью и поаккуратнее, а то совершенно не видно, где тело цикла
while($row=mysql_fetch_array($result)).
Вполне возможно, что вы делаете в цикле кучу форм с одним и тем же именем name='form_1' и кучу js-функций openWin1()

И после выноса js-функции за тело цикла измените
<input type='button' value='Рассмотреть' onClick='openWin1()'>";
на
<input type='button' value='Рассмотреть' onClick='openWin1(<? print '$log_z, pas_z'?>)'>";
сама функция при этом должна принимать два параметра:
function openWin1(login, pass)
и тело функции тоже надо подкорректировать в соответствие с этим

   
 
 автор: Stasycat   (28.03.2008 в 14:14)   письмо автору
 
   для: Хулиган   (28.03.2008 в 13:05)
 

Да, Вы правильно поняли меня - в каждой строчке цикла прописывается одна и та же форма. Вот я и спрашиваю - как сделать так, чтобы они отличались ссылками.
Вот весь код очень боьшой:

Заявка № 
<?php 
$vybor_zayavki
=$_POST['vybor_zayavki'];
$pass$_POST['pass'];        
print 
"$vybor_zayavki";
$k=0$k_1=0$k_2=0;
$m=0$tsvet='nnn';
$itogo_n=0$itogo_bn=0;    
$data_otr=0$n_otr=0;                
 
$link mysql_connect("mysql.root5.ru""dbu_monyc_2""werbnm") or die("Не соединилось!!!"); 
mysql_select_db("db_monyc_3") or die("Не найдена БД"); 
$query "SELECT * FROM zayavki"
$result mysql_query($query) or die("Запрос ошибочный"); 
while(
$row=mysql_fetch_array($result)) 
{
if (
$vybor_zayavki=='ras' and $pass=='vse')
{
$query "SELECT * FROM zayavki_na_ras"
$result mysql_query($query) or die("Запрос ошибочный"); 
while(
$row=mysql_fetch_array($result)) 
{
if (
$row['n_zayavki']>0
    {
    if (
$k_2==0
          {
    
$k_2++;
    echo 
"<form name='pechat' action='star_pechat.php' target='_blank' method='post'>
    <input type='hidden' name='p_o' value='
$vybor_zayavki'>
    <input type='hidden' name='p_p' value='
$pass'>      
    <table border='3' cellspacing='1' bordercolor='#666666'>
    <tr style='color:#000000' bgcolor='#CCCCCC' class='main_text'>
    <th width='2cm'>Снабженец</th>
    <th>Покупатель</th>
    <th>Объект</th>
    <th>Время план.</th>        
    <th>Продавец</th>
    <th>Материал</th>
    <th>Ед. изм.</th>
    <th>Кол-во</th>
    <th>Цена, руб.</th>
    <th>Сумма, руб.</th>
    <th>нал/ безнал</th>
    <th align='center' width='1cm'>Стоимость доставки, руб.</th>
    <th>Время доставки</th></tr>"
;
    }
    if (
$row["data_zayavki"]!=$data_otr)
    {
    
$data_otr $row["data_zayavki"];
    
$data $row["data_zayavki"];
    
$data_d=substr($data82);
    
$data_m=substr($data52);
    
$data_g=substr($data04);
    echo 
"<tr><td colspan='13' align='center' bgcolor='#FFD1BB'><span class='catalog_group'>"
    
.$data_d.".".$data_m.".".$data_g."</span></td></tr>";
    }
    if (
$row["n_zayavki"]!=$n_otr)
    {
    
$n_otr $row["n_zayavki"];
    
$log_z $row["n_zayavki"];
    
$pas_z $row["password"];
          if (
$tsvet=='nnn')
              {
        
$tsvet 'CAFEC2';
        }
    if (
$tsvet=='CAFEC2')
        {
        
$tsvet 'FBFEC5';
        echo 
"<tr height=><td colspan='4' align='center' bgcolor='#$tsvet'>
            
        <form name='form_1' action='../admin/izmenenie/
                   zayavka_na_ras.php?log_z=
$log_za&pas_z=$pas_z' method='get'>
        <span class='catalog_group'>заявка № 
$n_otr &nbsp;</span>
                    <input type='hidden' name='log_z' value='
$log_z'>
                    <input type='hidden' name='pas_z' value='
$pas_z'>
                    <input type='button' value='Рассмотреть' onClick='openWin1()'>"
;
?>
                         
<script language="JavaScript">
<!-- hid
unction openWin1() {
myWin = open("http://www.root5.ru/admin/izmenenie/zayavka_na_ras.php?log_z=<?=
$log_z?>
&pas_z=<?=$pas_z?>","mywindow","");
}
// -->
</script>
<?php
        
print "</form></td><td colspan='9'>&nbsp;</td></tr>";            
        }
    else
        {
        
$tsvet 'CAFEC2';
        echo 
"<tr><td colspan='4' align='center' bgcolor='#$tsvet'>
        <form name='form_1' action='../admin/izmenenie/
                    zayavka_na_ras.php?log_z=
$log_za&pas_z=$pas_z' method='get'>
        <span class='catalog_group'>заявка № 
$n_otr &nbsp;</span>    
                    <input type='hidden' name='log_z' value='
$log_z'>
                    <input type='hidden' name='pas_z' value='
$pas_z'>
                    <input type='button' value='Рассмотреть' onClick='openWin1()'>"
;
?>
<script language="JavaScript">
<!-- hid
function openWin1() {
myWin = open("http://www.root5.ru/admin/izmenenie/zayavka_na_ras.php?log_z=<?=
$log_z?>
&pas_z=<?=$pas_z?>","mywindow","");
}
// -->
</script>
<?php
        
print "</form></td><td colspan='9'>&nbsp;</td></tr>";
        }
    }
          
$snabzhenets mysql_query("SELECT * FROM snabzhentsy") or die("Запрос ошибочный");     
    while(
$snab=mysql_fetch_array($snabzhenets)) 
              {
        if (
$snab["id_snabzhentsa"]==$row["id_snabzhentsa"]) 
                  {
            
$inits=substr($snab["imya_snabzhentsa"],01);
            
$fam=$snab["familiya_snabzhentsa"];
            echo 
"<tr bgcolor='#$tsvet'><td>$fam $inits.</td>";
            }
        } 
    
$pokupatel mysql_query("SELECT * FROM klienty") or die("Запрос ошибочный");     
          while(
$pok=mysql_fetch_array($pokupatel)) 
              {
              if (
$pok["id_klienta"]==$row["id_klienta"]) 
                  {
            echo 
"<td>".$pok["klient"]."</td>";
            }
        } 

         
$obekt mysql_query("SELECT * FROM obekty") or die("Запрос ошибочный"); 
         while(
$ob=mysql_fetch_array($obekt)) 
                    {
              if (
$ob["id_obekta"]==$row["id_obekta"]) 
                        {
                 echo 
"<td>".$ob["poln_nazv_org"]."</td>";
                  }
              }
         
$v_p=substr($row["vremya_planiruemoe"],05);
         print 
"<td align='center' width='1cm' >$v_p</td>"

         
$material mysql_query("SELECT * FROM materialy") or die("Запрос ошибочный");     
         while(
$mat=mysql_fetch_array($material)) 
              {
        if (
$mat["id_materiala"]==$row["id_materiala"]) 
                  {
            
$id_postav $mat["id_postavschika"];
            
$postavschik mysql_query("SELECT * FROM postavschiki") or die("Запрос
                              ошибочный"
); 
            while(
$post=mysql_fetch_array($postavschik)) 
                      {
                if (
$post["id_postavschika"]==$id_postav
                          {
                    echo 
"<td>".$post["postavschik"]."</td>";
                    }
                }
            echo 
"<td>".$mat["material"]."</td>";
            
$ed_izm=$mat["ed_izm"];
            print 
"<td align='center' width='1cm' >$ed_izm</td>";             
            }
        }        
    
$kol_vo=$row["kol_vo"];
    print 
"<td align='center' width='1cm'> $kol_vo</td>";
    
$tsena=$row["tsena_pokupka"];
    print 
"<td align='center' width='1cm'>$tsena</td>"
    
$summa=$row["summa_pokupka"];
    print 
"<td align='center' width='1cm' class='text2'>$summa</td>";
    
$forma=$row["forma_oplaty_pokupka"];
    
$stoim=$row["stoim_dostavki"];
    if (
$forma=="нал"
              {
        
$itogo_n += $summa;
        
$itogo_n += $stoim
        }
    else 
              {
        
$itogo_bn += $summa;
        
$itogo_bn += $stoim
        } 
    print 
"<td align='center' width='1cm'>$forma</td>"
    print 
"<td align='center' width='1cm'>$stoim</td>";
    
$v_d=substr($row["vremya_dostavki"],05); 
    print 
"<td align='center' width='1cm'>$v_d</td></tr>";
    }
}
if (
$k_2>0)
          {
    
$itogo=($itogo_n+$itogo_bn);
    
$itogo=number_format($itogo,2,"."," ");
    
$itogo_n=number_format($itogo_n,2,"."," ");
    
$itogo_bn=number_format($itogo_bn,2,"."," ");
    echo 
"</table><BR>ИТОГО: <span class='show_cost'>$itogo руб. </span><BR>нал: <span
    class='catalog_group_name'>
$itogo_n руб.</span><BR>
    безнал:  <span class='catalog_group_name'>
$itogo_bn руб.</span>";
    echo 
"<div align='right'><input type='submit' value='Версия для печати'></div></form>";
    }
}
?>


Чтобы наглядно это увидеть заудите на http://www.root5.ru/old/star_z1.php и введите
логин: ras пароль: vse

   
 
 автор: Shiva   (28.03.2008 в 14:28)   письмо автору
 
   для: Stasycat   (27.03.2008 в 17:49)
 

1. Зачем вам переменные в атрибуте action у формы, если method="get"?
2. Зачем вам вообще здесь форма и ее поля, если в итоге вы сами формируете строку запроса для нового окна?

<?php
$query 
"SELECT * FROM zayavki_na_ras";  
$result mysql_query($query) or die("Запрос ошибочный");  
while(
$row=mysql_fetch_array($result))  

................. 
$log_z $row["n_zayavki"]; 
$pas_z $row["password"]; 
echo 
"
    <tr height=>
        <td colspan='4' align='center' bgcolor='#
$tsvet'> 
            <input type='button' value='Рассмотреть' onClick='window.open(\"http://www.root5.ru/admin/izmenenie/zayavka_na_ras.php?log_z=
$log_z&pas_z=$pas_z\",\"mywindow\",\"\");
        </td>"

?>

   
 
 автор: Stasycat   (28.03.2008 в 14:58)   письмо автору
 
   для: Shiva   (28.03.2008 в 14:28)
 

Так Ваши же товарищи посоветовали))) Т.е. с этого сайта.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50391&page=1

Если есть вариант проще - подскажите, пожалуйста.

Короче, весь вопрос сводится к тому, чтобы:
- открыть новую страницу с заявкой № х,
- открывается она при нажатии на кнопку "Рассмотреть", которая есть для каждого № хаявки.

Как сделать, чтоб они не были одинаковыми? формы эти...

   
 
 автор: Shiva   (28.03.2008 в 16:01)   письмо автору
 
   для: Stasycat   (28.03.2008 в 14:58)
 

Так вот же я вам и привел код.

   
 
 автор: Хулиган   (28.03.2008 в 14:59)   письмо автору
 
   для: Shiva   (28.03.2008 в 14:28)
 

.

   
 
 автор: Stasycat   (28.03.2008 в 15:03)   письмо автору
 
   для: Shiva   (28.03.2008 в 14:28)
 

Блин, как вот на этом форуме открываются определённые статьи? Ведь они тоже выведены таблицей.

   
 
 автор: Stasycat   (28.03.2008 в 16:28)   письмо автору
 
   для: Shiva   (28.03.2008 в 14:28)
 

Ну помогите-е-е!
Я уже форму в ссылку запихнула. Теперь открывается страница с нужными логином и паролем в адресе, но страница не та.
Он теперь ищет страницу http://www.root5.ru/old/zayavka_na_ras.php?log_z=4596&pas_z=3688 , а должен искать страницу http://www.root5.ru/old/zayavka_na_ras.php и передавать туда log_z=4596 и pas_z=3688.

Что изменить в коде, чтобы работало?

<?php
<form action='../admin/izmenenie/zayavka_na_ras.php method='get'>
заявка № $n_otr &nbsp;
<a href=zayavka_na_ras.php?log_z=$log_z&pas_z=$pas_z target='
_blank'>
<input type='
hidden' name='log_z' value='$log_z'>
<input type='
hidden' name='pas_z' value='$pas_z'>
<input type='
button' value='Рассмотреть'></a>
</form>    
?>

   
 
 автор: Stasycat   (28.03.2008 в 16:35)   письмо автору
 
   для: Stasycat   (28.03.2008 в 16:28)
 

Ой, простите... сама сглупила. Адрес неполный задала в ссылке.
Всё работает.

   
Rambler's Top100
вверх

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