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

Форум PHP

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

 

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

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

тема: вывод нужных строк
 
 автор: lukanuga   (12.08.2011 в 22:20)   письмо автору
 
 

Добрый день!
Подскажите, пожалуйста, как реализовать в следущем коде:
<?php 
printf 
("
<p>%s</p>
<p>%s</p>
<p>%s %s %s</p>
<p><strong>Phone:</strong> %s</p>
<p><strong>Fax:</strong> %s</p>
<p><strong> Web Site:</strong> %s</p>
<p><strong>Email Contacts: <u><a href='mailto:%s'>%s</a></u></strong></p>
"
$myrow3["title"], $myrow3["address"], $myrow["title"],$myrow2["title"],$myrow3["zip"], $myrow3["tel"], $myrow3["fax"], $myrow3["site"], $myrow3["email"], $myrow3["email"]);
?>

чтобы в случае пустых строк не выводились наименования этих строк.
Сейчас, если отсутствует номера факса, то строка выглядит так:
Fax: (пустая строка)
что согласитесь некрасиво.
Думаю, что понятно выразил свою мысль.

  Ответить  
 
 автор: Valick   (12.08.2011 в 23:00)   письмо автору
 
   для: lukanuga   (12.08.2011 в 22:20)
 

отказаться от использования printf (как ровно и от использования do{}while попой(вым) чувствую он у вас есть) и проверять при помощи if () каждый элемент и если не пусто то выводить вместе с описанием

  Ответить  
 
 автор: lukanuga   (12.08.2011 в 23:26)   письмо автору
 
   для: Valick   (12.08.2011 в 23:00)
 

что не правильно здесь?
<?php 
if (!empty($myrow ['tel'])) {
 
printf ("<p><strong>Phone:</strong> %s</p>"$myrow3["tel"]);}
 
?>

  Ответить  
 
 автор: cheops   (12.08.2011 в 23:28)   письмо автору
 
   для: lukanuga   (12.08.2011 в 23:26)
 

Не понятно, почему в условии $myrow, а в выводе уже $myrow3, откуда 3 взялось?

  Ответить  
 
 автор: lukanuga   (12.08.2011 в 23:51)   письмо автору
 
   для: cheops   (12.08.2011 в 23:28)
 

ошибка понятна.
подскажите, как отобразить нижеследующий код, чтобы вместо трех строк была одна <p>%s %s %s</p>
if (!empty($myrow ['title'])) {
 printf ("<p>%s</p>", $myrow["title"]);}
  if (!empty($myrow2 ['title'])) {
 printf ("<p>%s</p>", $myrow2["title"]);}
   if (!empty($myrow3["zip"])) {
 printf ("<p>%s</p>", $myrow3["zip"]);}

  Ответить  
 
 автор: lukanuga   (12.08.2011 в 23:51)   письмо автору
 
   для: cheops   (12.08.2011 в 23:28)
 

ошибка понятна.
подскажите, как отобразить нижеследующий код, чтобы вместо трех строк была одна <p>%s %s %s</p>
if (!empty($myrow ['title'])) {
 printf ("<p>%s</p>", $myrow["title"]);}
  if (!empty($myrow2 ['title'])) {
 printf ("<p>%s</p>", $myrow2["title"]);}
   if (!empty($myrow3["zip"])) {
 printf ("<p>%s</p>", $myrow3["zip"]);}

  Ответить  
 
 автор: f111   (13.08.2011 в 01:07)   письмо автору
 
   для: lukanuga   (12.08.2011 в 23:51)
 

echo '<p>';
if(isset($myrow['title'])) echo $myrow["title"];
if(isset($myrow2['title'])) echo $myrow2["title"];
if(isset($myrow3["zip"])) echo $myrow3["zip"];
echo '</p>';

и всё же прислушайтесь к словам Valick

  Ответить  
 
 автор: lukanuga   (13.08.2011 в 01:43)   письмо автору
 
   для: f111   (13.08.2011 в 01:07)
 

спасибо.
Чем грозит использование printf (как ровно и от использования do{}while ?

  Ответить  
 
 автор: Valick   (13.08.2011 в 09:03)   письмо автору
 
   для: lukanuga   (13.08.2011 в 01:43)
 

это грозит привычкой не думать собственной головой
вы просто копируете код и все
printf - это форматированный вывод и на мой взгляд он тут как собаке пятая нога
а учитывая то что он тяжелее обычного print (или echo), то его применение здесь и вовсе не оправдано
логика работы do{}while тут тоже не уместна, а при удачном стечении обстоятельств вообще может привести к ошибке, все (кроме Е.Попова) используют для обработки результата запроса цикл while{}

  Ответить  
 
 автор: Гавриленко Дмитрий   (13.08.2011 в 13:04)   письмо автору
 
   для: Valick   (13.08.2011 в 09:03)
 

Да, Попов поработил и зомбировал множество людей.

  Ответить  
 
 автор: lukanuga   (13.08.2011 в 20:28)   письмо автору
 
   для: Гавриленко Дмитрий   (13.08.2011 в 13:04)
 

Вопрос следующий.
В случае пустых строк строки все равно пустые, но выводятся. А что изменить в коде чтобы и пустые строки <p></p>, <br> не выводились
<?php 
echo "<p class='additional' align='center'>"
if(isset(
$myrow3['licence'])) echo $myrow3["licence"]; echo '<br>';
if(isset(
$myrow3['accreditation'])) echo $myrow3["accreditation"]; echo '<br>';
if(isset(
$myrow3["organ"])) echo $myrow3["organ"]; 
echo 
'</p>';
?>

  Ответить  
 
 автор: f111   (13.08.2011 в 23:01)   письмо автору
 
   для: lukanuga   (13.08.2011 в 20:28)
 

может как-то так?
<?php
if( isset($myrow3['licence']) || isset($myrow3['accreditation']) || isset($myrow3["organ"]) ){
echo 
'<p>',$myrow3["licence"],'<br>',$myrow3["accreditation"],'<br>',$myrow3["organ"],</p>; 
}
?>
ну или в прежнем примере добавить ещё один if

>В случае пустых строк строки все равно пустые

а в случае непустых строк строки всё равно непустые?

  Ответить  
 
 автор: lukanuga   (13.08.2011 в 23:12)   письмо автору
 
   для: f111   (13.08.2011 в 23:01)
 

ДАЕТ ОШИБКУ
Parse error: syntax error, unexpected '<'

  Ответить  
 
 автор: Владимир22   (13.08.2011 в 23:37)   письмо автору
 
   для: lukanuga   (13.08.2011 в 23:12)
 

<? 
if(isset($myrow3['licence']) || isset($myrow3['accreditation'])  || isset($myrow3['organ']))
echo 
"<p>".$myrow3['licence']."<br>".$myrow3['accreditation']."<br>".$myrow3['organ'].'"</p>";  
?> 

Попробуйте так, подправил код.

  Ответить  
 
 автор: lukanuga   (13.08.2011 в 23:55)   письмо автору
 
   для: Владимир22   (13.08.2011 в 23:37)
 

ошибок и вправду нет теперь, но <p>...</p> все равно выводит и при выполнении условия if

  Ответить  
 
 автор: f111   (14.08.2011 в 01:14)   письмо автору
 
   для: lukanuga   (13.08.2011 в 23:55)
 

>ДАЕТ ОШИБКУ
>Parse error: syntax error, unexpected '<'

,'</p>'; тег забыл взять в скобки
______________
>но <p>...</p> все равно выводит и при выполнении условия if

а не должно? условие такое что теги <p>...</p> как раз "выведутся" при выполнении условия if, в смысле при TRUE, а при FALSE ничего не выведет

  Ответить  
 
 автор: lukanuga   (14.08.2011 в 05:23)   письмо автору
 
   для: f111   (14.08.2011 в 01:14)
 

простите, неверно написал.
теги выводятся и при выполнении условия, и при невыполнении.

  Ответить  
 
 автор: f111   (14.08.2011 в 11:27)   письмо автору
 
   для: lukanuga   (14.08.2011 в 05:23)
 

)))) , такого не может быть, если только элементы массивов уже существуют.
в смысле isset проверяет переменную, а не значение, что именно empty (который вы использовали ранее) проверяет я не знаю, но методом тыка можно проверить.

ну или можно написать так
<?php
if($myrow3['licence'] || $myrow3['accreditation'] || $myrow3["organ"]){
echo 
'<p>',$myrow3["licence"],'<br>',$myrow3["accreditation"],'<br>',$myrow3["organ"],'</p>'
}
?> 

  Ответить  
 
 автор: Valick   (14.08.2011 в 11:47)   письмо автору
 
   для: f111   (14.08.2011 в 11:27)
 

ну что вы чепургу гоните :)
у вас в условии логическое "или" при котором условие будет выполняться если хотябы один из элементов массива существует, а "выводиться" будут все три (точнее один заполненный и два пустых) соответственно теги всякие теги будут выводиться
нужно каждый элемент массива проверять на присутствие, а еще точнее на непустоту
___
первый код который вы привели был почти правильным)

  Ответить  
 
 автор: f111   (14.08.2011 в 12:00)   письмо автору
 
   для: Valick   (14.08.2011 в 11:47)
 

я знаю что за условие я написал, я же сказал такой вариант или ещё один if, я так понял что ни одного элемента массива нет либо они пусты, и поэтому выводится "параграф"

  Ответить  
 
 автор: Valick   (14.08.2011 в 12:03)   письмо автору
 
   для: f111   (14.08.2011 в 12:00)
 

вы использовали isset а должно быть !empty

  Ответить  
 
 автор: f111   (14.08.2011 в 12:07)   письмо автору
 
   для: Valick   (14.08.2011 в 12:03)
 

виновен! (почему-то на тот момент мне показалось верным решением)

  Ответить  
 
 автор: Valick   (14.08.2011 в 11:55)   письмо автору
 
   для: lukanuga   (14.08.2011 в 05:23)
 


foreach($myrow3 as $value){
if(!empty($value)) echo "<p>".$value."</p>";
}

пробуйте

  Ответить  
 
 автор: f111   (14.08.2011 в 12:06)   письмо автору
 
   для: Valick   (14.08.2011 в 11:55)
 

все три значения массива должны быть одном параграфе.
раннее цикл использовать нельзя было, разные были массивы, ну а щас ваш вариант лучше, но должно быть что-то вроде
<?php
if(!empty($myrow3)){
echo 
'<p>';
    foreach(
$myrow3 as $value)
    {
        if(!empty(
$value)) echo $value.'<br />';
    } 
echo 
'</p>';
}
?>

  Ответить  
 
 автор: Valick   (14.08.2011 в 12:10)   письмо автору
 
   для: f111   (14.08.2011 в 12:06)
 

все три значения массива должны быть одном параграфе
это когда это автор успел поставить такое условие?
поверьте правильный код я бы мог написать через 3 минуты после прочтения темы, но хотелось бы что бы автор хоть что-то подумал собственной головой, может быть я бы и написал сразу еслиб не "привет от Попова"
___
а... нашел
подскажите, как отобразить нижеследующий код, чтобы вместо трех строк была одна <p>%s %s %s</p>

  Ответить  
 
 автор: f111   (14.08.2011 в 20:15)   письмо автору
 
   для: Valick   (14.08.2011 в 12:10)
 

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

неужели я спорил, я всего лишь к вашему коду добавил if, не надо всё в штыки воспринимать

  Ответить  
 
 автор: Valick   (14.08.2011 в 20:22)   письмо автору
 
   для: f111   (14.08.2011 в 20:15)
 

??? :)
где вы там штыки разглядели?))

  Ответить  
 
 автор: Valick   (14.08.2011 в 12:15)   письмо автору
 
   для: f111   (14.08.2011 в 12:06)
 

этот код будет весь массив туда пихать))
в общем придется написать...

  Ответить  
 
 автор: Valick   (14.08.2011 в 12:21)   письмо автору
 
   для: lukanuga   (14.08.2011 в 05:23)
 

$query="запрос";
$res=mysql_query($query) or die("Ошибка: ".mysql_error());
if($res){
  while($myrow3=mysql_fetch_assoc){
  echo "<p>".$myrow3[title]."</p>"; // так выводим то что не нужно проверять
  if(!empty($myrow3[tel])) echo "<p><strong>Phone:</strong>".$myrow3[tel]."</p>"; // так выводим то что требует проверки
  if(!empty($myrow3[licence]) || 
      !empty($myrow3[accreditation]) || 
      !empty($myrow3[organ])){ 
echo '<p>',$myrow3[licence],'<br>',$myrow3[accreditation],'<br>',$myrow3[organ],'</p>';}
  }
}


пора бежать.... далее по аналогии

  Ответить  
 
 автор: lukanuga   (14.08.2011 в 22:03)   письмо автору
 
   для: Valick   (14.08.2011 в 12:21)
 

<?  
if(!empty($myrow3['licence']) || !empty($myrow3['accreditation'])  || !empty($myrow3['organ'])) 
echo 
"<p class='additional' align='center'>".$myrow3['licence']."<br>".$myrow3['accreditation']."<br>".$myrow3['organ']."</p>"
?>

Работает не так как хотелось бы. Если есть хотя одна не пустая строка, то все равно выводит <br>

  Ответить  
 
 автор: Valick   (14.08.2011 в 23:15)   письмо автору
 
   для: lukanuga   (14.08.2011 в 22:03)
 

ну включайте же его)))

<?php
if(!empty($myrow3['licence']) ||
   !empty(
$myrow3['accreditation'])  ||
   !empty(
$myrow3['organ'])) echo "<p class='additional' align='center'>";
if(!empty(
$myrow3['licence'])) echo $myrow3['licence']."<br>";
if(!empty(
$myrow3['accreditation'])) echo $myrow3['accreditation']."<br>";
if(!empty(
$myrow3['organ'])) echo $myrow3['organ']."<br>";
if(!empty(
$myrow3['licence']) ||
   !empty(
$myrow3['accreditation'])  ||
   !empty(
$myrow3['organ'])) echo "</p>";
?>

  Ответить  
 
 автор: lukanuga   (15.08.2011 в 00:32)   письмо автору
 
   для: Valick   (14.08.2011 в 23:15)
 

Огромное спасибо. Работает.
Да благославит Вас Бог!
Счастья и мира.
Luka

  Ответить  
Rambler's Top100
вверх

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