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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): [1] 2 3 4 5 »   

> Без описания
Symby
Отправлено: 14 Февраля, 2012 - 19:42:05
Post Id



Гость


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


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




Не нашел такой темы, где новички задавали бы вопросы, длинною в несколько предложений, а то зачем темы то плодить? Улыбка
Я на php не больше недели, но мне помогает небольшой опыт на других языках, да и сам уже привык к стандартным конструкциям из языка к языку. Речь пойдет конечно не об этом. Да и больше это тема, сводится к тому что не хочу быть "быдлокодером".
Вот собственной персоной мой говнокод:
PHP:
скопировать код в буфер обмена
  1.  
  2. function outputArrays($res = resource) {
  3.         $logic = true;
  4.         echo "<table style='border: 1px solid black; padding: 4px;'><thead style='background: #fc0;'><tr>";
  5.         while($arrOutput = mysql_fetch_assoc($res)) {
  6.                 if ($logic) {
  7.                         foreach ($arrOutput as $key => $value) echo "<td>" . $key . "</td>";
  8.                 }
  9.                 echo "</tr></thead>";
  10.                 echo "<tbody style='background: #C2C2C2;'><tr>";
  11.                 foreach ($arrOutput as $value) echo "<td>" . $value . "</td>";
  12.                 $logic = false;
  13.         }
  14.         echo "</tr></tbody>";
  15.         echo "</table>";
  16.         echo "<br>";
  17. }
  18.  

Цель сего чуда создания была такова: У меня было около 10 таблиц которые просто нужно было выдать виде таблицы для показа. Когда начал реализовывать это, то понял а что как дурак занимаюсь копипастом(написал один подобный фрагмент и размножил на несколько для вывода каждый раз отдельной таблицы) и вырос код до приличных размеров. Поставленное условие выполнялось, но мне не понравилось и стал писать функцию. В функцию лишь передавался указатель от SQL запроса, который обрабатывал assoc, от использование mysql_fetch_array отказался(он мне еще в добавок выдавал численный массив).

Вопрос мой в том, рисую шапку посредством цикла foreach, где значения шапки выдаются ключи массива. Допустим есть 2 ряда, то рисует он два раза шапку. Решение написал такое if ($logic), проверял была ли уже отображена шапка. Знаю можно как то лучше решить этот вопрос но не додумываюсь пока, видимо из за малого опыта работы с php еще.

Ушел читать Котерова дальше. Извините что столько воды в тексте, но хочу и делаю для этого все чтоб стать профессиональным php программистом, и самого начала не писать говнокод.

(Отредактировано автором: 14 Февраля, 2012 - 19:43:04)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
LIME
Отправлено: 14 Февраля, 2012 - 20:00:32
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




можно поиграть с http://php.su/functions/?mysql-field-name
в цикле while (не пустое значение)
отличие в том что делается вне цикла фетча и один раз и без logic
 
 Top
Symby
Отправлено: 14 Февраля, 2012 - 20:23:28
Post Id



Гость


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


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




LIME пишет:
можно поиграть с http://php.su/functions/?mysql-field-name

Спасибо за наводку на функцию. Помогла)
(Добавление)
Symby пишет:
LIME пишет:
можно поиграть с http://php.su/functions/?mysql-field-name

Спасибо за наводку на функцию. Помогла)


Все работает, но выдает варнинг:
Warning: mysql_field_name() [function.mysql-field-name]: Field 4 is invalid for MySQL result index 4 in Z:\home\php-test\www\php-output.php on line 22
Ясное дело, что такого поля нет, и он приводит к варнингу. Вид счет начинается с 0..3, пробовал блин и while, и for, все эта ошибка...

(Отредактировано автором: 14 Февраля, 2012 - 20:24:03)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
LIME
Отправлено: 14 Февраля, 2012 - 22:03:22
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




попробуйте while(isset(mysql-field-name($res,++$i)))
(Добавление)
вот нашел более подходящее http://php.su/functions/?mysql-list-fields
учитесь пользоваться онлайн документацией
http://php.su/functions/?mysql-num-fields
 
 Top
Symby
Отправлено: 15 Февраля, 2012 - 06:46:19
Post Id



Гость


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


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




LIME Спасибо большое. Насчет num-fields знал, но что-то забыл. Больше надеюсь не будет глупых вопросов от меня.
Решил так:
PHP:
скопировать код в буфер обмена
  1. $num = mysql_num_fields($res)-1;
  2. for($i = 0; $i <= $num; $i++) echo "<td>" . mysql_field_name($res, $i) . "</td>";

Теперь к несуществующим элементам массива не обращается.
Раньше надо спать ложится, а то глубокой ночью не мог дописать (-1), так что старайтесь ложится пораньше Радость

(Отредактировано автором: 15 Февраля, 2012 - 06:49:13)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
Symby
Отправлено: 20 Февраля, 2012 - 11:27:06
Post Id



Гость


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


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




Хотелось узнать про альтернативный синтаксис конструкций php, то есть про

Такие подобные конструкции используются для чего? Как я понимаю они используются для упрощения редактирования и чтения html кода заключенный в php файл?

(Отредактировано автором: 20 Февраля, 2012 - 11:32:59)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
DelphinPRO
Отправлено: 20 Февраля, 2012 - 11:43:56
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




Symby пишет:
Такие подобные конструкции используются для чего?
Легче воспринимаются в шаблонах посреди хтмл кода, только и всего


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Symby
Отправлено: 20 Февраля, 2012 - 11:53:05
Post Id



Гость


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


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




DelphinPRO пишет:
Легче воспринимаются в шаблонах посреди хтмл кода, только и всего

Оправдывается его использование? Или пользоваться стандартной конструкцией?


-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
DelphinPRO
Отправлено: 20 Февраля, 2012 - 12:09:39
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
incker
Отправлено: 20 Февраля, 2012 - 14:46:22
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Февр. 2012  


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




Symby пишет:
Хотелось узнать про альтернативный синтаксис конструкций php, то есть про

Такие подобные конструкции используются для чего? Как я понимаю они используются для упрощения редактирования и чтения html кода заключенный в php файл?



нет endif и endwhile. все сделано умнее. чтоб можно было делать условие внутри условия которое в еще одном условии (то же самое while)



к примеру

if (условие) // первое условие
{
if (условие) действие; // второе условие (первое верно)
else действие; // второе условие неверно (первое верно)
}
else действие; // первое условие неверно
 
 Top
LIME
Отправлено: 20 Февраля, 2012 - 18:59:04
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




incker а что с if endif так нельзя?
 
 Top
Symby
Отправлено: 22 Февраля, 2012 - 20:05:26
Post Id



Гость


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


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




Решаю проблему, нужно проделать такое..
Допустим:
PHP:
скопировать код в буфер обмена
  1.  
  2. //Есть переменная $a типа string
  3. $a = "SashaSlavaRomaDmitrySashaEvgen";
  4. //Нужна функция которая найдет слово Sasha в переменной, возвратит сколько раз встречается в строке, и допустим 1 = 0, 2 = 20
  5. // 1 - раз встретилось, 0 позиция в строке, 2 - раз встретилось в строке, 20 позиция в строке.
  6.  

Самому такое придется писать?? Или есть что то наподобие из стандартного??


-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
IllusionMH
Отправлено: 22 Февраля, 2012 - 20:26:09
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




preg_match_all
(Добавление)
Затупил, так не прокатит.
Но можно попытаться через preg_split()
 
 Top
Symby
Отправлено: 22 Февраля, 2012 - 20:52:48
Post Id



Гость


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


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




IllusionMH Нечего)
Я свою проблему немного по другому решил, изначально не так думал. Вот что значит не правильно поставленная задача! )
Теперь что мне делать ниже с ключом 5, там начинается новый массив, он мне допустим если все элементы рекурсивно выводит(чтоб по вложенным массивам тоже проходил) то он мне выводит Array, какую мне проверку сделать что если он наталкивается на такое вставляет допустим слово "массив". Надеюсь поняли что хочу)
PHP:
скопировать код в буфер обмена
  1.   0 => string 'Sasha' (length=5)
  2.   1 => string 'Roma' (length=4)
  3.   2 => string 'Dmitry' (length=6)
  4.   3 => string 'Slava' (length=5)
  5.   4 => string 'Nikita' (length=6)
  6.   5 =>
  7.     array
  8.       0 => string 'p1' (length=2)
  9.       1 => string 'p2' (length=2)
  10.       2 => string 'p3' (length=2)
  11.       3 =>
  12.         array
  13.           0 => string 'p4' (length=2)
  14.           1 => string 'p5' (length=2)
  15.           2 => string 'p6' (length=2)
  16.           3 => string 'p7' (length=2)
  17.           4 => string 'p8' (length=2)

(Отредактировано автором: 22 Февраля, 2012 - 20:53:17)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
LIME
Отправлено: 22 Февраля, 2012 - 20:58:42
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




IllusionMH тут нужен был strpos() в цикле со смещением на негоже
тут для числа вхождений можно счетчик цикла использовать
но есть и ф-ция для этого substr_count()
(Добавление)
 
 Top
Страниц (5): [1] 2 3 4 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB