PHP.SU

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

Страниц (142): В начало « ... 134 135 136 137 138 139 140 [141] 142 »

> Найдено сообщений: 2118
Zuldek Отправлено: 07 Ноября, 2010 - 11:07:01 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 935
vitaliy_mad пишет:
PHP:
скопировать код в буфер обмена
  1.          while($db=mysql_fetch_assoc($pgs))
  2.          {
  3.            echo "<li><a href=index.php?id_page=".$db['id'].">"$db['part']."</a></li>";
  4.          }

NAME будет равно $db['name']

Не $db['part'] а $db['name'].
как я писал в таблице 2 поля id и name ($part в моём скрипте просто присваивалось значение поля name)
И это понятно Улыбка, но нужно всего одно значение $db['name'], которое соответствует единственному значению $db['id'] в массиве. и оно будет выведено тут! -
CODE (htmlphp):
скопировать код в буфер обмена
  1. {
  2.            echo "<li><a href=index.php?id_page=".$db['id'].">"$db['part']."</a></li>";
  3.          }[/PHP]

Тут будут выведены вообще все $db['id'] и $db['part'] (читай name), а мне нужно только одно $db['part'] (читай значение поля name), которое соответствует одному значению $db['id'].

То есть в этом скрипте
1. - Я вывожу циклом while все значения двух полей этой таблицы (это список разделов сайта)
2. - У меня в $_GET хранится уникальное значение id этой же таблицы! И мне нужно вывести значение поля name этой таблицы, которое соответствует этому id!
Выше в пункте 1 я вывел уже это name, среди всех прочих в цикле while, а теперь нужно вывести всего одно нужное значение. Вот как это сделать без нового запроса в базу?
Zuldek Отправлено: 07 Ноября, 2010 - 10:58:10 • Тема: карта сайта • Форум: Программирование на PHP

Ответов: 6
Просмотров: 522
psevdo пишет:
Приветствую. Возникла необходимость написания карты сайта с нуля. Не знаю с какого бока подойти. В инете не смог найти внятного ответа на мой вопрос, поэтому спрашиваю здесь.

Можно воспользоваться сайтмап-генератором от google, это позиции сайта в гугле улучшит. http://code[dot]google[dot]com/p/googlesitemapgenerator/
Если же генерировать карту сайта самому в своих скриптах то я делаю это двумя способами
- 1. добавляем изменения в файл карты сайта при добавлении,-удалении раздела сайта (позицию в структуре и url страницы).
- 2. генерируем карту непосредственно при каждом открытии страницы карты сайта map.php
В последнем случае скрипт связывается с бд, выстраивая пирамидку -
Раздел1 (имя, url, позиция в структуре)
статья1(имя, url, позиция в структуре)
статья2(имя, url, позиция в структуре)
Раздел2 (имя, url, позиция в структуре)
статья1(имя, url, позиция в структуре)
статья2(имя, url, позиция в структуре)
В любом движке в БД найдутся все необходимые поля для выстраиваивания такой карты
Zuldek Отправлено: 06 Ноября, 2010 - 23:35:13 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 935
Саныч пишет:
А почем не сделать так?
PHP:
скопировать код в буфер обмена

1.
$query = 'SELECT name FROM таблица WHERE id_page='.$_GET['id'];

Потому что фактически мы вторично запрашиваем у бд те данные которые уже есть.
Нужное значение name уже есть в массиве mysql_fetch_array($pgs, MYSQL_NUM), его нужно только выбрать както.
Zuldek Отправлено: 06 Ноября, 2010 - 22:35:07 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 935
DlTA пишет:
совсем непонятна суть вопроса.


CODE (htmlphp):
скопировать код в буфер обмена
  1.       <?php
  2.        // Выводим список разделов
  3.        $query = "SELECT * FROM  ";
  4.        if($pgs = mysql_query($query))
  5.        {
  6.          while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
  7.          {
  8.            echo "<li><a href=index.php?id_page=$id_page>$part</a></li>";
  9.          }
  10.        } else puterror("Ошибка при обращении к блоку статей");
  11.      ?>


этим выражением записаны в массив два поля id_page и name таблицы artpage

И вот, дальше я и не могу сообразить, - как зная одно значение id_page (полученное из $_GET) найти соответствующее ему значение поля name таблицы artpage. В цикле while (значения поля name записываются в переменную $part).
Без дополнительного SQL-запроса конкретной строки в бд.
Zuldek Отправлено: 06 Ноября, 2010 - 20:52:34 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 935
CODE (htmlphp):
скопировать код в буфер обмена
  1. while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
  2.           {
  3.             echo "<li><a href=index.php?id_page=$id_page>$part</a></li>";
  4.           }
  5.         } else puterror("Ошибка при обращении к блоку статей");

подскажите одно нужное значение $part, зная $id_page ?
Zuldek Отправлено: 06 Ноября, 2010 - 16:48:08 • Тема: Ошибка в функции sprintf • Форум: Программирование на PHP

Ответов: 6
Просмотров: 630
OrmaJever пишет:
чё это за бред? %1\d
Это кто вас так учил писать название колонок? Однако
(Добавление)
по каким правилам вобще эту строку писал?
PHP:
скопировать код в буфер обмена
  1. $query = sprintf("INSERT INTO menu VALUES (%1\d, %2\d, %3\d)", $num, $part_art, $id);

зачем всё усложнять? Можно просто написать так

PHP:
скопировать код в буфер обмена
  1. $query = "INSERT INTO menu VALUES ('$num', '$part_art', '$id')"


из мануала по sprintf
Цитата:
порядка параметров
<?php
$format = "The %2\$s contains %1\$d monkeys";
printf($format, $num, $location);
?>
Нумерация аргументов имеет еще одно применение: она позволят вывести один и тот же аргумент несколько раз без передачи функции дополнительных параметров.


Так что это как минимум не бред. А код такой генерит например дримвивер мой, и не пишет переменные в составе самого запроса (хотя так я сам обычно делаю), а подставляет значения через шаблоны %.
Почему он так делает хз, в мануал по дримвиверу лень лезть чтобы это выяснить. Интересно было лишь то почему код не работал.
Zuldek Отправлено: 06 Ноября, 2010 - 13:28:45 • Тема: Ошибка в функции sprintf • Форум: Программирование на PHP

Ответов: 6
Просмотров: 630
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $num = $_POST['select_num'];
  3. $id = ($_POST['id']);
  4. $part_art = ($_POST['part_art']);
  5.  
  6. $query = sprintf("INSERT INTO menu VALUES (%1\d, %2\d, %3\d)", $num, $part_art, $id);
  7. if (!mysql_query($query)) puterror (mysql_error());


Результат выполнения -
Unknown column 'd' in 'field list'
синтаксис функции посмотрел и вроде сделал всё, как написано.
Значения $num, $part_art, $id скриптом получаются и выводятся, - проверял.

Подскажите в чём ошибка
Zuldek Отправлено: 05 Ноября, 2010 - 21:40:34 • Тема: Некрасивое решение :( • Форум: Программирование на PHP

Ответов: 2
Просмотров: 284
DlTA пишет:
а это все правильно работает?


Не тестировал, но не суть, - логика правильная.. и чувствую что можно сделать всё проще и изящнее (Если вы про ошибочки в синтаксисе небольшие Закатив глазки )
Zuldek Отправлено: 05 Ноября, 2010 - 20:39:50 • Тема: Некрасивое решение :( • Форум: Программирование на PHP

Ответов: 2
Просмотров: 284
Всем здравствуйте.
Кроплю над страницей вывода пунктов меню навигации.
Задача вроде бы решена, но, совсем не рационально Недовольство, огорчение Прошу более опытных форумчан взглянуть на решение.
есть 3 таблицы

menu
---------------------
num | part_art | id

num - порядковый номер пункта меню для вывода на сайте
part_art - хранит тип страницы на которую ведёт пункт меню (1/0 - раздел/статья)
id - идентификатор статья или раздела. Равен id_article из таблицы статей для статьи либо id_artpage из таблицы разделов, соответственно для раздела.

aricle
-------------------
id_article | name

artpage
---------------------
id_artpage | name

Результатом работы скрипта должна стать -
таблица - порядок отображения пунктов меню на сайте
1 РазделN
2 СтатьяN
3 СтатьяС
4 РазделA
...

Моё решение:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. //Соединяемся с бд
  4. require_once($_SERVER["DOCUMENT_ROOT"]."/admin/config.php");
  5. //Количество пунктов меню которые разрешено вывести $pos_number
  6. $pos_number = 5;
  7. //Извлекаем всё из таблицы menu
  8. $query= "Select from menu";
  9. $one= mysql_query($query);
  10. if (!$one)
  11. {
  12. echo mysql_error();
  13. }
  14. else
  15. {
  16. //Если извлечение успешно, то помещаем результат в массив
  17. $menu = mysql_fetch_assoc($one);
  18. }
  19. ?>
  20. //Таблица вывода значений пунктов меню
  21. <table>
  22. <?
  23. //Начало цикла вывода пунктов меню, количество проходов равно количеству пунктов меню в переменной $pos_number
  24. for ($i=1; $i<= $pos_number; $i++)
  25. {
  26. //Проверяем стратус страницы на которую ведёт пункт меню. Если Раздел/Статья, то извлекаем данные из таблицы разделов/статей
  27. //Если раздел, выводим в строку порядковый номер пункта меню и название радела
  28. if($menu['part_art']=1)
  29.         {
  30.                 $query = sptintf("Select name from artpage where id_artpage = %d", $menu['id']);
  31.                 $zapros = mysql_query($query);
  32.                 if(!$zapros) puterror (mysql_error());
  33.                 $menu_name = mysql_fetch_assoc($zapros);
  34.                 echo "<td>".$menu['num']."</td><td>".$menu_name['name']."</td></tr>";
  35.         }
  36. //Если статья, выводим в строку порядковый номер пункта меню и название статьи
  37. else
  38.         {
  39.                 $query = sptintf("Select name from articles where id_article = %d", $menu['id']);
  40.                 $zapros = mysql_query($query);
  41.                 if(!$zapros) puterror (mysql_error());
  42.                 $menu_name = mysql_fetch_assoc($zapros);
  43.                 echo "<td>".$menu['num']."</td><td>".$menu_name['name']."</td></tr>";          
  44.         }
  45. }
  46. </table>
  47. ?>

Решение мне кажется не изящным в части постоянных запросов к бд в ходе выполнения цикла.
и, таблица выводится не отсортированной по номеру пунктов меню.
Более опытные форумчане поскажите как правильно построить скрипт, особенно SQL запрос на выбору сразу всех значений из обеих таблиц..

(Добавил)
То есть нужно извлекать значения полей name из таблиц разделов и статей, так чтобы id таблицы меню был равен id_artpage или id_article, поскольку в меню может попасть и раздел и статья...
CODE (htmlphp):
скопировать код в буфер обмена
  1. sprintf("Select name from artpages, articles where %d = id_artpage or %d = id_article", menu[id])

правильно?
Zuldek Отправлено: 24 Октября, 2010 - 18:12:44 • Тема: проблема с записью в файл • Форум: Программирование на PHP

Ответов: 6
Просмотров: 438
OrmaJever пишет:
Попробуй file_put_contents()
Если работаешь на винде то вот на все файлы стоят права на запись.
(Добавление)
Не когда не испоьзовал функцию is_writeable(), но мне каежтся параметром должно быть имя файла, а не то что вернёт fopen(). Подмигивание


Всё верно, в f]is_writeable()[/f] и проблема была. Больше не буду ей пользоваться. Она просто была единственным что помнил без справочника Закатив глазки Тема исчерпана.
Zuldek Отправлено: 24 Октября, 2010 - 17:48:13 • Тема: проблема с записью в файл • Форум: Программирование на PHP

Ответов: 6
Просмотров: 438
Мелкий пишет:
0) Результаты is_writeable кэшируются. возможно имеет смысл применить clearstatcache().
1) права на запись в файл есть у пользователя, от имени которого работает скрипт?

Применение функции ничего не изменило, скрипт работает от админа Огорчение
Может это особые заморочки денвера?
Zuldek Отправлено: 24 Октября, 2010 - 17:10:09 • Тема: проблема с записью в файл • Форум: Программирование на PHP

Ответов: 6
Просмотров: 438
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $file ="oprosdata.txt";
  3. $count = 1;
  4. $age_18 = 2;
  5. $age_30 = 3;
  6. $age_30_more = 4;
  7. $zagran = 5;
  8. $rf = 6;
  9. $activ = 7;
  10. $passiv = 8;
  11. $exp_avangard = 9;
  12. $noexp = 10;
  13.  
  14. $data =
  15.  
  16. "$count|$age_18|$age_30|$age_30_more|$zagran|$rf|$activ|$pas
  17. siv|$exp_avangard|$noexp";
  18. echo $data;
  19.  
  20. // Открыть файл, удалить содержимое и установить указатель
  21.  
  22. текущей позиции в начало файла
  23.  
  24. $fh = fopen($file, "w+") or die("File $file does not
  25. exist!");
  26. // Если файл существует и в него возможна запись
  27.  
  28. if (is_writeable($fh)) {
  29. // Записать содержимое $data в файл
  30.  
  31. fwrite($fh, $data);
  32.  
  33. // Закрыть файл
  34.  
  35. fclose($fh);
  36. echo "Запись произведена";
  37. }
  38. else
  39. {
  40. echo "невозможно открыть файл для записи";
  41. }
  42.  
  43. ?>


Уже вероятно, туплю, ибо вечер Огорчение, но скрипт выводит "невозможно открыть файл для записи", при этом файл существует и даже удаляется его старое содержимое((. Подскажите где ошибка пожалуйста(
Zuldek Отправлено: 08 Октября, 2010 - 17:09:58 • Тема: Скрипт не может открыть отправленный ему файл • Форум: Программирование на PHP

Ответов: 3
Просмотров: 257
спасибо, стыдно Огорчение
Zuldek Отправлено: 08 Октября, 2010 - 17:04:26 • Тема: Скрипт не может открыть отправленный ему файл • Форум: Программирование на PHP

Ответов: 3
Просмотров: 257
отправляющая формы:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  echo " <b>Импорт прайс-листа</b><br><br>
  2. <form enctypee='multipart/form-data'
  3.         action='../allscript/csv.php'
  4.         method='post'>
  5.         Файл: <input type='file' name='filename'><br><br>
  6.         <input type='hidden' name='id' value=";
  7. echo $uniqid.">";
  8. echo "<input type='submit' value='Загрузить'><br>
  9. </form>";


часть принимающего скрипта:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. //получаем идентификатор пользователя
  3. $userid=isset($_POST["id"])? $_POST["id"] : false;
  4. echo $userid;
  5. //Начало скрипта импорта csv-файла
  6. //Открываем файл с прайсом
  7. if(!($handle = fopen($_FILES['filename']['tmp_name'],"r")))
  8. {
  9. echo "<p>Невозможно открыть файл.</p>";
  10. exit();
  11. }
  12. ...


Выпрыгивает как раз "Невозможно открыть файл". Сервер на денвере, размер файла мизер.
php.ini
CODE (htmlphp):
скопировать код в буфер обмена
  1. file_uploads = On
  2. upload_tmp_dir = /tmp
  3. upload_max_filesize = 2M

Подскажите пожалуйста, в чём ошибка?
Zuldek Отправлено: 11 Июня, 2010 - 11:13:28 • Тема: Запуск PHP-скрипта через шедулер • Форум: Программирование на PHP

Ответов: 1
Просмотров: 274
Прописал в задании C:\php\php.exe "C:\www\belfort\_!admin\cron\qwerty.php"

Скрипт должен выполнять рассылку писем, однако при запуске задания php.exe просто запускается и закрывается. В исходящую папку почтового сервере письма не складываются. Может я не правильно прописываю задание?

Страниц (142): В начало « ... 134 135 136 137 138 139 140 [141] 142 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB