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

Форум MySQL

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

 

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

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

тема: Обновление таблицы
 
 автор: JESS   (21.07.2007 в 20:28)   письмо автору
 
 

Не знаю как правельно выразиться, так что выдам пример:

Нажатием на ссылку, происходит изменение Операторов MySQL, и еще можно сказать как бы отсортировать данные по вкусу из базы данных... =?)

   
 
 автор: Unkind   (21.07.2007 в 21:54)   письмо автору
 
   для: JESS   (21.07.2007 в 20:28)
 

Оператор (первое определение)

   
 
 автор: SportSoft   (21.07.2007 в 22:39)   письмо автору
 
   для: Unkind   (21.07.2007 в 21:54)
 

Eto eshe i drugoj podforum. Obnovlenie zapisi v MySQL: UPDATE table SET name='value', name2='value2'. Dlya vyborki ispol'zuetsya(samoe prostoe): SELECT * FROM table WHERE name='value' ORDER BY date ASC. WHERE - vyborka zapisej, udovletvoryayushih znacheniyu. ORDER BY - gruppirovka zaprosa. V dannom sluchae po vozrostaniyu v 'date'.

   
 
 автор: JESS   (22.07.2007 в 00:53)   письмо автору
 
   для: SportSoft   (21.07.2007 в 22:39)
 

конечно профессионалу все лего, просто UPDATE table SET прошу по подробнее нельзя??

   
 
 автор: Бамси   (22.07.2007 в 02:24)   письмо автору
 
   для: JESS   (21.07.2007 в 20:28)
 

Я не очень вопрос понял.
Вам надо отсортировать полученные данные из запроса? Для этого есть функции, sort, usort, etc..
Или прямо в запросе ORDER BY "fldName"
http://dev.mysql.com/doc/refman/5.1/en/select.html

   
 
 автор: JESS   (22.07.2007 в 12:41)   письмо автору
 
   для: Бамси   (22.07.2007 в 02:24)
 

Я именю виду как мошно отсортировать данные нажатием на ссылку..?

   
 
 автор: marcus   (22.07.2007 в 13:42)   письмо автору
 
   для: JESS   (21.07.2007 в 20:28)
 

Я так понимаю нужно упорядочить их вывод.
Ну, если речь о ссылке, то можно так:
пусть нужно упорядочить по полю "name".
На этой ссылке напрмер написать (самый очевидный и простой пример):
<a href='index.php?moda=name'>Упорядочить по имени</a>.

пусть мы жмем на эту ссылку.

Проверяем на $_GET['moda'] на == 'name'

псевдокод:

$byw='';

Если истина, то
$byw=' ORDER BY name ';
и сам запрос: $res = mysql_query("SELECT * FROM table_name $byw");

иначе
$res = mysql_query("SELECT * FROM table_name $byw");

а потом делаем что надо с результатом запроса.

   
 
 автор: JESS   (22.07.2007 в 14:05)   письмо автору
 
   для: marcus   (22.07.2007 в 13:42)
 

Да точто нужно, а если у нас две ссылки,


$_GET['mod'] = 'N'; 
$byw='WHERE cat1=15 ';

$_GET['mod'] = 'D'; 
byw='WHERE cat1=5 ';

print "<a href='show.php?mod=N'>-N-</a>"; 
print "<a href='show.php?mod=D'>-D-</a>";


то все сортируеться по последней "D"

a oстальные ссылки просто не рабитают,


<?php
include "./conn.php";

mysql_connect("$dbHost""$dbUser""$dbPass");
mysql_select_db("$dbName");

$_GET['moda'] = 'N'
$byw='WHERE cat1=15';

$_GET['moda'] = 'D'
$byw='WHERE cat1=15';

result mysql_query("SELECT * FROM $tablename $byw");
if (
mysql_num_rows($result) != 0) {
while(
$query_data mysql_fetch_row($result)) {
$body "<table cellpadding=2 cellspacing=2 width=100% bordercolordark=black bordercolorlight=black>
    <tr>
        <td width=965 bgcolor=#39393B>

            <p><img src=images/for_menu_2.gif border=0 align=absmiddle>
 <a href=#>
$query_data[1]</a></p>

        </td>
    </tr>
</table>"
;
print 
$body;
}
} else {
   echo 
"Sorry!";
}
print 
"<a href='show.php?moda=N'>-N-</a>"
print 
"<a href='show.php?moda=D>-D-</a>";

   
 
 автор: marcus   (22.07.2007 в 16:24)   письмо автору
 
   для: JESS   (22.07.2007 в 14:05)
 

если ссылок две и более, то можно поработать например с неповоротливым switсh, или просто описать все как if / else.
Например:

<?php
.....

$byw='';

$mod=$_GET['moda'];

if(
$mod!='')
   {
    switch(
$mod)
         {
        
//например такие поля
          
case 'phone'$byw=' ORDER BY tel ';  break;  
          case 
'mail'$byw=' ORDER BY email '; break;
          case 
'name'$byw=' ORDER BY name '
         }
  }
result mysql_query("SELECT * FROM $tablename $byw");

......
?>


по такой же схеме добавить asc/desc (если нужно)

а вообще использовать GET метод как-то уже не то... лучше забить все в сессионные глобальные переменные

   
 
 автор: JESS   (22.07.2007 в 20:04)   письмо автору
 
   для: marcus   (22.07.2007 в 16:24)
 

вот ошибка не могу исправить иначе ничего не работает

Notice: Undefined index: moda in z:\home\localhost\www\my_001\show.php on line 11

   
 
 автор: marcus   (22.07.2007 в 21:11)   письмо автору
 
   для: JESS   (22.07.2007 в 20:04)
 

покажите скрипт show.php

   
 
 автор: JESS   (22.07.2007 в 21:41)   письмо автору
 
   для: marcus   (22.07.2007 в 21:11)
 

вот он:

<?php
include "./conn.php";

mysql_connect("$dbHost""$dbUser""$dbPass");
mysql_select_db("$dbName");

print 
"<a href='index2.php'>-Home-</a>";

$byw='';

$mod $_GET['action'];

if(
$mod!='')
   {
    switch(
$mod)
         {
case 
'a'$byw=' WHERE cat1=2 ';break;
case 
'b'$byw=' WHERE cat1=3 ';break;
case 
'c'$byw=' WHERE cat1=4 '; break;
case 
'd'$byw=' WHERE cat1=5 '; break;
case 
'e'$byw=' WHERE cat1=6 '; break;
case 
'f'$byw=' WHERE cat1=7 ';  break;
case 
'g'$byw=' WHERE cat1=8 '; break;
case 
'h'$byw=' WHERE cat1=9 ';  break;
case 
'i'$byw=' WHERE cat1=10 ';break;
case 
'j'$byw=' WHERE cat1=11 ';break;
case 
'k'$byw=' WHERE cat1=12 ';break;
case 
'l'$byw=' WHERE cat1=13 '; break;
case 
'm'$byw=' WHERE cat1=14 ';break;
case 
'n'$byw=' WHERE cat1=15 ';break;
case 
'o'$byw=' WHERE cat1=16 '; break;
case 
'p'$byw=' WHERE cat1=17 ';break;
case 
'q'$byw=' WHERE cat1=18 '; break;
case 
'r'$byw=' WHERE cat1=19 ';break;
case 
's'$byw=' WHERE cat1=20 '; break;
case 
't'$byw=' WHERE cat1=21 ';break;
case 
'u'$byw=' WHERE cat1=22 ';break;
case 
'v'$byw=' WHERE cat1=23 ';break;
case 
'w'$byw=' WHERE cat1=24 ';   break;
case 
'x'$byw=' WHERE cat1=25 '; break;
case 
'y'$byw=' WHERE cat1=26 '; break;
case 
'z'$byw=' WHERE cat1=27 '; break;
case 
'#'$byw=' WHERE cat1=28 ';        
case 
'home'$byw=' ORDER BY type'; break;

         }
  }

$result mysql_query("SELECT * FROM $tablename $byw ORDER BY name");

while(
$query_data mysql_fetch_row($result)) {


$body "<table cellpadding=2 cellspacing=2 width=100% bordercolordark=black bordercolorlight=black>
    <tr>
        <td width=965 bgcolor=#39393B>

            <p><img src=images/for_menu_2.gif border=0 align=absmiddle>
 <a href=# 
 onclick=JavaScript:window.open('
$query_data[2]','','width=400,height=100,toolbar=no,resizable=no')

>&nbsp;
$query_data[1]</a></p>

        </td>
    </tr>
</table>"
;
print 
$body;
}

print 
"<a href='$PHP_SELF?action=n'>-N-</a>"
print 
"<a href='$PHP_SELF?action=d>-D-</a>";
?>

   
 
 автор: SportSoft   (22.07.2007 в 22:25)   письмо автору
 
   для: JESS   (22.07.2007 в 21:41)
 

A zachem Vy pishite: $byw = '';

   
 
 автор: JESS   (22.07.2007 в 22:31)   письмо автору
 
   для: SportSoft   (22.07.2007 в 22:25)
 

да я не знаю, а что надо писать что то другое?

   
 
 автор: marcus   (22.07.2007 в 22:51)   письмо автору
 
   для: SportSoft   (22.07.2007 в 22:25)
 

:) предостережение (из C/C++ пошло :)), а так вроде при инициализации в php все по нулям стоит.
но хуже не будет

   
 
 автор: marcus   (22.07.2007 в 22:47)   письмо автору
 
   для: JESS   (22.07.2007 в 21:41)
 

Вместо $mod = $_GET['action']; поставьте: if(isset($_GET['action'])) $mod = $_GET['action'];
Затем в предпоследнем case нужно добавить break;

Последний case "лишний", т.к. если выпадет на него условие, то будет ошибка запроса sql.

Потом сохрание в переменную $body лучше не делать, а в блоке while записать:

echo "<table cellpa................</table>";

В строке
print "<a href='$PHP_SELF?action=d>-D-</a>";

не хватает ещё одной одинарной ковычки.


для дебага скрипта удобно использовать дебаггер, или оператор die("переменная на вывод")

   
 
 автор: JESS   (22.07.2007 в 23:41)   письмо автору
 
   для: marcus   (22.07.2007 в 22:47)
 

Ты уж прости что так все спрашиваю, но я пока новичек в этом деле...

Вот еще ошибка, код исправил..
Notice: Undefined variable: mod in z:\home\localhost\www\my_001\show.php on line 13


<?php
include "./conn.php";

mysql_connect("$dbHost""$dbUser""$dbPass");
mysql_select_db("$dbName");

print 
"<a href='index2.php'>-Home-</a>";

$byw='';

if(isset(
$_GET['action'])) $mod $_GET['action'];

if(
$mod!='')
   {
    switch(
$mod)
         {
case 
'a'$byw=' WHERE cat1=2 ';break;
case 
'b'$byw=' WHERE cat1=3 ';break;
case 
'c'$byw=' WHERE cat1=4 '; break;
case 
'd'$byw=' WHERE cat1=5 '; break;
case 
'e'$byw=' WHERE cat1=6 '; break;
case 
'f'$byw=' WHERE cat1=7 ';  break;
case 
'g'$byw=' WHERE cat1=8 '; break;
case 
'h'$byw=' WHERE cat1=9 ';  break;
case 
'i'$byw=' WHERE cat1=10 ';break;
case 
'j'$byw=' WHERE cat1=11 ';break;
case 
'k'$byw=' WHERE cat1=12 ';break;
case 
'l'$byw=' WHERE cat1=13 '; break;
case 
'm'$byw=' WHERE cat1=14 ';break;
case 
'n'$byw=' WHERE cat1=15 ';break;
case 
'o'$byw=' WHERE cat1=16 '; break;
case 
'p'$byw=' WHERE cat1=17 ';break;
case 
'q'$byw=' WHERE cat1=18 '; break;
case 
'r'$byw=' WHERE cat1=19 ';break;
case 
's'$byw=' WHERE cat1=20 '; break;
case 
't'$byw=' WHERE cat1=21 ';break;
case 
'u'$byw=' WHERE cat1=22 ';break;
case 
'v'$byw=' WHERE cat1=23 ';break;
case 
'w'$byw=' WHERE cat1=24 ';   break;
case 
'x'$byw=' WHERE cat1=25 '; break;
case 
'y'$byw=' WHERE cat1=26 '; break;
case 
'z'$byw=' WHERE cat1=27 '; break;
case 
'#'$byw=' WHERE cat1=28 ';  break;      

         }
  }

$result mysql_query("SELECT * FROM $tablename $byw ORDER BY name");
if (
mysql_num_rows($result) != 0) {
while(
$query_data mysql_fetch_row($result)) {


$body "<table cellpadding=2 cellspacing=2 width=100% bordercolordark=black bordercolorlight=black>
    <tr>
        <td width=965 bgcolor=#39393B>

            <p><img src=images/for_menu_2.gif border=0 align=absmiddle>
 <a href=# 
 onclick=JavaScript:window.open('
$query_data[2]','','width=400,height=100,toolbar=no,resizable=no')

>&nbsp;
$query_data[1]</a></p>

        </td>
    </tr>
</table>"
;
print 
$body;
}
} else {
    
    echo 
"Sorry!";
}

print 
"<a href='$PHP_SELF?action=n'>-N-</a>"
print 
"<a href='$PHP_SELF?action=d'>-D-</a>";
?>

   
 
 автор: marcus   (23.07.2007 в 00:51)   письмо автору
 
   для: JESS   (22.07.2007 в 23:41)
 

Ну, оповещает, что не определена эта переменная $mod :(
Попробуй перед $byw=''; поставить $mod=''; - возможно поможет, т.к. будет инициализация уже

   
 
 автор: JESS   (23.07.2007 в 02:06)   письмо автору
 
   для: marcus   (23.07.2007 в 00:51)
 

Большое спасибо!!! Как все гениально просто =)

   
Rambler's Top100
вверх

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