Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выбор значения из строки и столбца

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Viper
Отправлено: 07 Февраля, 2007 - 16:26:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Собстно возник вопрос такой. есть таблица
id config_name config_value
1 sitename Сайт

и код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $Local = @mysql_pconnect($hostname_Local, $username_Local, $password_Local) or trigger_error(mysql_error(),E_USER_ERROR);
  3. mysql_select_db($database_Local, $Local);
  4. $query_Recordset2 = "SELECT config_name, config_value FROM config ORDER BY id ASC";
  5. $Recordset2 = mysql_query($query_Recordset2, $Local) or die(mysql_error());
  6. //$row_Recordset2 = mysql_fetch_assoc($Recordset2);
  7. //$totalRows_Recordset2 = mysql_num_rows($Recordset2);
  8. while ($new = mysql_fetch_array($Recordset2)) {
  9.         $sitename = $new['sitename'];
  10. }
  11. ?>


вопрос:
как мне вывести на страницу слово Сайт из базы ?

при
CODE (text):
скопировать код в буфер обмена
  1. <?php echo $sitename; ?>
ничего не показывается.

ЗЫ! Мне просто нужно в разных частях страницы разные значения из разных ячеек одной таблицы выводить. В php я новичек.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 07 Февраля, 2007 - 16:51:33
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dblink = mysql_connect ( $dblocation, $dbuser, $dbpswrd );
  5. if ( !$dblink ) die ( "<p >В настоящий момент сервер базы данных не доступен.</p>" );
  6.  
  7. $select_db = mysql_select_db ( $dbname );
  8. if ( !$select_db ) die ( "<p >В настоящий момент база данных не доступна.</p>" );
  9.  
  10. $query = "SELECT config_name, config_value FROM config ORDER BY id ASC";
  11. $res = mysql_query( $query);
  12. if ( !$res ) die ( "<p >Ошибка при выполнении запроса.</p>" );
  13. if ( mysql_num_rows( $res ) > 0 )
  14. {
  15.     echo "<table border='1'>";
  16.     echo "<tr><th>Name</th><th>Value</th></tr>";
  17.     while ($new = mysql_fetch_array($res))
  18.     {
  19.         echo "<tr><td>".$new['config_name']."</td>";
  20.         echo "<td>".$new['config_value']."</td></tr>";
  21.     }
  22.     echo "</table>";
  23. }
  24.  
  25. ?>
  26.  

Если надо работать с отдельными ячейками результата запроса:
http://www.php.su/functions/?mysql-result
 
 Top
Viper
Отправлено: 07 Февраля, 2007 - 17:05:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




заработало.

а можно ли как-то не через массив считать, а в разные переменные и потом выводить их в разных местах html-страницы?

например между <title><? echo $sitename ?></title>
а между <p><? echo $sitename2 ?></p> где - $sitename2 уже вторая строка таблицы

по идее
$sitename = $new['config_value']
$sitename2 = $new['config_value'], но как перейти на другую строку ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 07 Февраля, 2007 - 20:22:11
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Таблица

id name value
---------------
1 name1 value1
2 name2 value2
3 name3 value3
4 name4 value4
5 name5 value5
---------------

SELECT name, value FROM config WHERE id IN ( 1, 3, 5 );

Результат запроса:

name value
------------
name1 value1
name3 value3
name5 value5

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Получаем вторую строку, первый столбец - name3
  4. echo mysql_result( $res, 1, 'name' );
  5. // Получаем третью строку, второй столбец - value5
  6. echo mysql_result( $res, 2, 'value' );
  7. ?>
  8.  

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  // Еще один способ
  4.  $query = "SELECT name, value FROM config WHERE id IN ( 1, 3, 5 ) ORDER BY id ASC";
  5.  $res = mysql_query( $query);
  6.  if ( !$res ) die ( "<p >Ошибка при выполнении запроса.</p>" );
  7.  if ( mysql_num_rows( $res ) > 0 )
  8.  {
  9.      while ( $new = mysql_fetch_array($res) )  
  10.      {
  11.           $result[] = $new;
  12.      }
  13.  }
  14.  
  15.  // Двухмерный массив $result теперь содержит результат запроса
  16.  // Получаем вторую строку, первый столбец - name3
  17.  echo $result[1]['name'];
  18.  // Получаем третью строку, второй столбец - value5
  19.  echo $result[2]['value'];
  20. ?>
  21.  
 
 Top
Viper
Отправлено: 08 Февраля, 2007 - 10:03:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




evgenijj спасибо огромное все заработало и все получилось. только я немного изменил запрос к базе чтобы не писать каждый раз индекс в запросе.

SELECT config_value, config_name FROM config WHERE id IN (SELECT id from config ORDER BY id ASC) ORDER BY id ASC

Улыбка надеюсь дописал правильно Улыбка так как у меня такой запрос отрабатывается без ошибок и так как нужно Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 08 Февраля, 2007 - 14:12:25
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Я запросы писал просто ДЛЯ ПРИМЕРА (первое, что пришло в голову). Вот это:
SELECT config_value, config_name FROM config WHERE id IN (SELECT id from config ORDER BY id ASC) ORDER BY id ASC
хотя и правильно с точки зрения синтаксиса, но без необходимости загружает базу данных. Тот же результат даст запрос
SELECT config_value, config_name FROM config ORDER BY id
как у тебя и было с самого начала.
 
 Top
Viper
Отправлено: 21 Февраля, 2007 - 16:24:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




хех... Недовольство, огорчение теперь ещё возник вопрос как записать данные из форм в эту таблицу ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 21 Февраля, 2007 - 17:02:47
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Viper пишет:
хех... Недовольство, огорчение теперь ещё возник вопрос как записать данные из форм в эту таблицу ?

А в чем проблема? Указываешь в атрибуте action тега form обработчик данных формы и пишешь этот обработчик. Что-то в этом духе:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // РЕГИСТРАЦИЯ НОВОГО ПОЛЬЗОВАТЕЛЯ
  4.  
  5. // Обрезаем переменные до длины, указанной в параметре maxlength тега input
  6. $name         = substr( $_POST["name"], 0, 30 );
  7. $surname      = substr( $_POST["surname"], 0, 30 );
  8. $email        = substr( $_POST["email"], 0, 30 );
  9. $post         = substr( $_POST["post"], 0, 60 );
  10. $password     = substr( $_POST["password"], 0, 30 );
  11. $confirm      = substr( $_POST["confirm"], 0, 30 );
  12. $country      = substr( $_POST["country"], 0, 30 );
  13. $state        = substr( $_POST["state"], 0, 30 );
  14. $city         = substr( $_POST["city"], 0, 30 );
  15. $zip          = substr( $_POST["zip"], 0, 6 );
  16. $address      = substr( $_POST["address"], 0, 250 );
  17. $phone        = substr( $_POST["phone"], 0, 30 );
  18.  
  19. // Обрезаем лишние пробелы
  20. $name         = trim( $name );
  21. $surname      = trim( $surname );
  22. $email        = trim( $email );
  23. $post         = trim( $post );
  24. $password     = trim( $password );
  25. $confirm      = trim( $confirm );
  26. $country      = trim( $country );
  27. $state        = trim( $state );
  28. $city         = trim( $city );
  29. $zip          = trim( $zip );
  30. $address      = trim( $address );
  31. $phone        = trim( $phone );
  32.  
  33. // Проверяем, заполнены ли обязательные поля
  34. if( empty($name) or empty($surname) or empty($email) or empty($password) or empty($confirm) )
  35.         exit ("<p style='color:red'>Ошибка: не заполнены обязательные поля!</p>");
  36.  
  37. // Проверяем корректность e-mail
  38. if ( !preg_match( "|^[0-9a-z_\\-\\.]+@[0-9a-z\\-\\.]+\\.[a-z]{2,6}$|i" , $email ) )
  39.         exit ("<p style='color:red'>Ошибка: поле 'e-mail' должно соответствовать формату somebody@somewhere.ru!</p>");
  40.  
  41. // Проверяем, совпадают ли пароли
  42. if( $password != $confirm ) exit ("<p style='color:red'>Ошибка: не совпадают пароли!</p>");
  43.  
  44. // Добавляем запись в БД
  45. $query = "INSERT INTO ".TABLE_SITE_USERS."
  46.                   (puttime,
  47.                   name,
  48.                   surname,
  49.                   email,
  50.                   post,
  51.                   password,
  52.                   country,
  53.                   state,
  54.                   city,
  55.                   zip,
  56.                   address,
  57.                   phone)
  58.                   VALUES
  59.                   (NOW(),
  60.                   '".db_escape_string( $name )."',
  61.                   '".db_escape_string( $surname )."',
  62.                   '".db_escape_string( $email )."',
  63.                   '".db_escape_string( $post )."',
  64.                   '".db_escape_string( $password )."',
  65.                   '".db_escape_string( $country )."',
  66.                   '".db_escape_string( $state )."',
  67.                   '".db_escape_string( $city )."',
  68.                   '".db_escape_string( $zip )."',
  69.                   '".db_escape_string( $address )."',
  70.                   '".db_escape_string( $phone )."')";
  71.                  
  72. db_query( $query );
  73. $id_user = db_insert_id(); // user ID
  74.  
  75. echo "<p >Регистрация прошла успешно!</p>\\n";
  76.  
  77. ?>
  78.  
 
 Top
Viper
Отправлено: 22 Февраля, 2007 - 11:02:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




это конечно хорошо но не заработало.
Unknown column 'config_value' in 'field list'

вот то что у меня.

PHP:
скопировать код в буфер обмена
  1. if (!function_exists("GetSQLValueString")) {
  2. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  3. {
  4.   $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  5.  
  6.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  7.  
  8.   switch ($theType) {
  9.     case "text":
  10.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  11.       break;    
  12.     case "long":
  13.     case "int":
  14.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  15.       break;
  16.     case "double":
  17.       $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
  18.       break;
  19.     case "date":
  20.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  21.       break;
  22.     case "defined":
  23.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  24.       break;
  25.   }
  26.   return $theValue;
  27. }
  28. }
  29.  
  30. $editFormAction = $_SERVER['PHP_SELF'];
  31. if (isset($_SERVER['QUERY_STRING'])) {
  32.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  33. }
  34.  
  35. if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  36.   $txt_pagnum = $_POST['txt_pagnum'];
  37.   $txt_pagnum = trim($txt_pagnum);
  38.   $updateSQL = sprintf("UPDATE $dbname_Local SET config_value=%s WHERE config_name=%s",
  39.                        GetSQLValueString($_POST['txt_sitename'], "text"),
  40.                        GetSQLValueString($_POST['txt_sysname'], "text"),
  41.                        GetSQLValueString($_POST['txt_panname'], "text"),
  42.                        GetSQLValueString($_POST['txt_pagnum'], "text"));
  43.  
  44.   mysql_select_db($database_Local, $Local);
  45.   $Result1 = mysql_query($updateSQL, $Local) or die(mysql_error());
  46.  
  47.   $updateGoTo = "settings.php";
  48.   if (isset($_SERVER['QUERY_STRING'])) {
  49.     $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
  50.     $updateGoTo .= $_SERVER['QUERY_STRING'];
  51.   }
  52.   header(sprintf("Location: %s", $updateGoTo));
  53. }
  54.  
  55. mysql_select_db($database_Local, $Local);
  56. $query_Recordset2 = "SELECT * FROM config WHERE id IN (SELECT id FROM config ORDER BY id ASC) ORDER BY id ASC";
  57. $Recordset2 = @mysql_query($query_Recordset2, $Local) or die(mysql_error());
  58. if ( !$Recordset2 ) die ( "Something went wrong with query!" );
  59. if (mysql_num_rows($Recordset2) > 0) {
  60.         while ($new     = mysql_fetch_array($Recordset2)) {
  61.                 $result[] = $new;
  62.         }
  63. }
  64. <form name="form1" method="POST" action="<?PHP echo $editFormAction; ?>">
  65.                   <table border="0" cellspacing="1" cellpadding="0" style="border:1px solid #ebebeb;">
  66.             <tr>
  67.               <td width="33%" align="left" style="padding:1px;">Название сайта: </td>
  68.               <td width="67%" align="left" style="padding:1px;">
  69.                 <input name="txt_sitename" type="text" class="txt_info" id="txt_sitename" value="<?PHP echo htmlspecialchars($result[0]['config_value']); ?>"></td>
  70.             </tr>
  71.             <tr>
  72.               <td width="33%" align="left" style="padding:1px;">Название системы: </td>
  73.               <td align="left" style="padding:1px;"><input name="txt_sysname" type="text" class="txt_info" id="txt_sysname" value="<?PHP echo $result[1]['config_value']; ?>"></td>
  74.             </tr>
  75.             <tr>
  76.               <td width="33%" align="left" style="padding:1px;">Название панели управления: </td>
  77.               <td align="left" style="padding:1px;"><input name="txt_panname" type="text" class="txt_info" id="txt_panname" value="<?PHP echo $result[2]['config_value']; ?>"></td>
  78.             </tr>
  79.             <tr>
  80.               <td width="33%" align="left" style="padding:1px;">Кол-во строк в таблице: </td>
  81.               <td align="left" style="padding:1px;"><input name="txt_pagnum" type="text" class="txt_number" value="<?PHP echo $result[3]['config_value']; ?>"></td>
  82.             </tr>
  83.             <tr>
  84.               <td colspan="2" align="center" style="padding:1px;"><hr color="#CCCCCC" size="1">
  85.                           <input name="Submit" type="submit" class="txt_btn" value="Сохранить"></td>
  86.               </tr>
  87.           </table>
  88.                   <input type="hidden" name="MM_update" value="form1">
  89.                 </form>


а структура базы такая как в самом первом сообщении.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 22 Февраля, 2007 - 12:49:32
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Что-то я ничего не понял. Давай по порядку: мухи отдельно, котлеты отдельно. Во-первых, какая-то странная у тебя таблица в БД получается. Все записи в таблице должны быть однородными, т.е. хранить однотипную информацию:
PHP:
скопировать код в буфер обмена
  1.  
  2. id sitename   systemname panelname count
  3. 1  first      system1    panel1    5
  4. 2  second     system2    panel2    3
  5. 3  third      system3    panel3    7
  6.  

Чтобы получить информацию об одной сущности, информацию о которой мы храним в этой таблице, делаем запрос:
SELECT * FROM config WHERE id=1;
Потом мы можем отредактировать эти данные:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $res = mysql_query( $query );
  4. $site = mysql_fetch_array( $res );
  5.  
  6. echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";
  7. echo "<input type='text' name='sitename' value='".$site["sitename"]."' />";
  8. echo "<input type='text' name='systemname' value='".$site["systemname"]."' />";
  9. echo "<input type='text' name='panelname' value='".$site["panelname"]."' />";
  10. echo "<input type='text' name='count' value='".$site["count"]."' />";
  11. echo "<input type='hidden' name='id' value='".$site["id"]."' />";
  12. echo "<input type='submit' name='update' value='Сохранить' />";
  13. echo "</form>";
  14. ?>
  15.  


У тебя же идет выборка ВСЕХ записей из таблицы, ты их помещаешь в двухмерный массив, а потом "распихиваешь" по полям ОДНОЙ формы для редактирования. Я бы еще понял, если бы ты хотел одновременно отредактировать и обновить ВСЕ записи таблицы - но так этого нет.

Ты лучше изложи нам всем (участникам форума), что ты хочешь сделать. Уверен - будет много рекомендаций. И тогда уже решишь, какой способ лучше.

Да, похожая тема уже обсуждалась - может тебе поможет:
http://forum.php.su/topic.php?fo...=28&topic=34
 
 Top
Viper
Отправлено: 22 Февраля, 2007 - 13:32:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




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

все написано и работает кроме настроек. изначально я хотел написать страницу с настройками так как сделано в админке форума phpBB, оттуда же взял за основу структуру базы. вывод общими усилиями на вашем форуме сделали. а вот как эти данные обновлять, с этим возникла проблема. так как перед этим я тупо считывал все в массив и выводил так же как они записаны в базе. но вот с настроками немного иначе. пробовал через do-while он просто дублирует строки таблицы html. к тому же нужно обновить все данные из всех полей страницы. вот на этом моменте ступор. да ещё в php&mysql дуб дубом (2 неделя только).

собстно если бы структура базы была такой:
id sitename sysname panname pagnum
1 Сайт Сайт1 Сайт2 15
я бы уже написал, но структура другая:
id config_name config_value
1 sitename Сайт
2 sysname Сайт1
3 panname Сайт2
4 pagnum 15

вот на этом как сделать обновление данных из той структуры формы ? каждый раз обращаться к id как то меня смущает...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 22 Февраля, 2007 - 13:54:46
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Так чем тебе этот вариант не подходит:
http://forum.php.su/topic.php?fo...=28&topic=34
Переименуй title в config_name, а description в config_value - и вперед. Скрипт выводит все записи из таблицы БД и позволяет редактировать отдельные записи. Там правда не хватает функции для добавления записей, но написать ее дело недолгое. Только протестируй сперва - я его писал на скорую руку. Соответственно, не тестировал.

P.S. Извини, но ничего более толкового предложить не могу - с форумом phpBB дела не имел.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB