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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Редактирование. Не отправляется в форму для редактирования

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-56] 

 
 автор: davidoff_72   (11.09.2014 в 21:22)   письмо автору
 
   для: confirm   (11.09.2014 в 19:12)
 

Спасибо. Так и есть. Работает.

  Ответить  
 
 автор: confirm   (11.09.2014 в 19:12)   письмо автору
 
   для: davidoff_72   (11.09.2014 в 18:29)
 

Для открытия файла CHM в windows уже все есть, иначе бы он вообще не открылся, а был бы запрос приложения.
Скорее всего он у вас заблокирован, поэтому и не видно содержания. Щелкните по нему правой кнопкой мышки, выберите Свойства, если во вкладке Общие будет предупреждение и кнопка Разблокировать, разблокируйте.

  Ответить  
 
 автор: davidoff_72   (11.09.2014 в 18:29)   письмо автору
 
   для: confirm   (11.09.2014 в 04:20)
 

Скачал. Но, странное дело - фаил есть, оглавление есть а вот наполнения нету. нажимаю на документ в каталоге и ничего не вижу, нет содержимого. у меня подозрение, что на моём компьютрере не установлена какая то программа для раскрытия данного файла. Или не знаю.

  Ответить  
 
 автор: confirm   (11.09.2014 в 04:20)   письмо автору
 
   для: davidoff_72   (11.09.2014 в 03:24)
 

А зачем готовить документ Word для изучения? На официальном сайте есть руководство РНР в формате CHM, русское, скачайте и пользуйтесь. В нем есть и оглавление, и поиск, и примеры, и с подсветкой кода. Уж во всяком случае намного удобнее простого тестового документа.

  Ответить  
 
 автор: davidoff_72   (11.09.2014 в 03:24)   письмо автору
 
   для: confirm   (06.09.2014 в 14:39)
 

Большое спасибо! всё красиво работает!
Изучаю код: все не понятные мне значения копирую в вордовский фаил и вставляю описание из документации. Работаю как учёный , разбирая экземпляр на детали и изучая их. Изучив данный код, планирую добавить в него ещё несколько сущностей (таблиц) и адаптировать под свои нужды.
Изучаю проектирование баз данных.
Спасибо.

  Ответить  
 
 автор: davidoff_72   (06.09.2014 в 14:53)   письмо автору
 
   для: confirm   (06.09.2014 в 14:39)
 

Да. нашел! Спасибо!
Прошу прощения, не заметил прикрепелнный фаил. Сажусь разбираться.
Спасибо!

  Ответить  
 
 автор: davidoff_72   (06.09.2014 в 14:53)   письмо автору
 
   для: confirm   (03.09.2014 в 19:02)
 

Да. нашел! Спасибо!
прошу прощения, не заметил прикрепелнній фаил. Сажусь разбираться.
Спасибо!

  Ответить  
 
 автор: confirm   (06.09.2014 в 14:39)   письмо автору
 
   для: davidoff_72   (06.09.2014 в 14:28)
 

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

Я же вам прикрепил целый мини-проект о фирмах и клиентах вместо коров, вы что по ссылке не читали?

  Ответить  
 
 автор: davidoff_72   (06.09.2014 в 14:28)   письмо автору
 
   для: confirm   (06.09.2014 в 14:20)
 

Ранее (выше) вы писали. я заметил, что много if в if. Возможно у меня ещё недостаточно знаний.

<?php 
//запрос от формы 
//извлекаем id буренки, это последний элемент формы - кнопка 
//усекая POST массив в конце - array_pop() 
//и если приведение к integer будет не равно 0, то запись в базу 
if($_POST && $cid  = (int)array_pop($_POST)) {  
    
//это ID буренки, которую редактируем 
    
echo $cid.'<br><pre>'//это просто для визуального контроля, после просмотра удалить 
    //так выглядит массив полученных данных после извлечения из него поля хранящего ID буренки 
    //в нем отсутствует поле fld-4 
    
print_r($_POST); //это просто для визуального контроля, после просмотра удалить 
    //извлекаем из него данные новых назначений 
    
$vet array_diff(array_map('intval'array_pop($_POST)), array(0)); 
    
//теперь полученные POST-данные содержат только то, что надо записать в таблицу cow - поля fld-1 и fld-2  
    
print_r($_POST); //это просто для визуального контроля, после просмотра удалить 
    //а массив новых назначений (ID лекарств) для записи в таблицу appoint 
    
print_r($vet); //это просто для визуального контроля, после просмотра удалить  
    
echo '</pre>'//это просто для визуального контроля, после просмотра удалить 
    //массив имен полей таблицы cow 
    
$fields = array('fld-1'=>'description''fld-2'=>'yields'); 
    
//получаем имена полей, добавляя имя поля даты осмотра 
    
$fields array_intersect_key($fields$_POST)+array('vet_date'); 
    
//защита и добавление текущей даты 
    
$_POST array_map('mysql_real_escape_string'$_POST)+array(date('Y-m-d H:i'));  
    
//обновляем таблицу cow 
    
if(mysql_query('UPDATE cow SET '.implode(','array_map('set_update_vars'$fields$_POST)).' WHERE cid='.$cid)) { 
        
//запись новых назначений, если есть для записи действительные - не равные 0 
        
if($vet) { 
            
//сперва удалим старые 
            
if(mysql_query('DELETE FROM appoint WHERE cid='.$cid)) { 
                
//записываем новые назначения 
                
if(!mysql_query('INSERT INTO appoint VALUES ('.$cid.','.implode('),('.$cid.','$vet).')')) echo 'Ошибка'
            } else echo 
'Ошибка'
        } 
    } else echo 
'Ошибка'


//вывод списка 
if(!$_GET || $_POST) { 
   
//получаем содержимое таблицы cow, 
   //а назначения (названия лекарств) 
   //получаем из таблицы veterinary  
   //через связанную таблицу appoint 
   //путем объединения этих трех таблиц в запросе      
   
$q mysql_query('SELECT * 
                     FROM cow 
                     LEFT JOIN appoint t2 
                     USING(cid) 
                     LEFT JOIN veterinary t3 
                     ON t2.mid=t3.mid'
); 
   if(
$q) { 
      if(
mysql_num_rows($q)) {  
?> 
<table> 
  <tr> 
    <th>№</th> 
    <th>Имя</th> 
    <th>Надои<em>, л.</em></th> 
    <th>Последний осмотр</th> 
    <th>Назначение</th> 
  </tr> 
<? 
        
//результат запроса может содержать несколько записей, более чем буренок 
        //ID буренок, имена, их надои и даты осмотра нужно вывести один раз, 
        //но эти данные присутствуют в каждой записи полученного результата   
        //поэтому устанавливаем внешнюю по отношению к циклу переменную $cid, 
        //по которой будем определять один проход для этих данных 
        
$cid 0
        while(
$r mysql_fetch_object($q)) {   
            
//для того чтобы понять почему так организован вывод таблицы 
            //можно визуально просмотреть что возвращает запрос 
            //сколько записей и что они содержат 
            //такой же конструкцией как и при записи 
            //после просмотра удалив 
            
echo '<pre>'
            
print_r($r); 
            echo 
'</pre>'
             
            
//непосредственно вывод таблицы  
            
if($cid != $r->cid) { 
                
$cid $r->cid//первый проход цикла для буренки 
                //добавляем в таблицу все кроме лекарств, предварительно закрывая предыдущую строку таблицы 
                
$tbl .= '</tr><tr><td>'.$cid.'</td><td><a href="edit.php?id='.$cid.'">'.htmlspecialchars($r->name). 
                       
'</a></td><td>'.$r->yields.'</td><td>'.date('j.n.Y H:i'strtotime($r->vet_date)).'</td><td>'
            } 
            
//вывод в последнюю ячейку строки таблицы всех назначений 
            
$tbl .= htmlspecialchars($r->remedy).'<br>';            
        } 
        echo 
$tbl.'</tr></table>'
    } else echo 
'В базе записей о буренках нет.'
} else echo 
'Ошибка запроса!';       


//получение формы редактирования 
if(!$_POST && $cid = (int)$_GET['id']) { 
    
//если параметр запроса число и не равно нулю, вывод 
    //получаем все характеристики запрашиваемой буренки 
    
if($q mysql_query('SELECT * FROM cow WHERE cid='.$cid)) { 
        if(
mysql_num_rows($q)) { //есть такая буренка 
            //это массив данных о буренке 
            
$r $mysql_fetch_object($q); 
            
//получаем список лекарств 
            //и вложенным запросом получаем значение 1 (по условию IF для него), для тех ID лекарств (mid), 
            //которые есть и в таблице назначений appoint для редактируемой буренки 
            //если в ней не будет такого ID лекарства, что есть и в таблице veterinary, 
            //то условие вернет не 1, а 0 
            //этому возвращаемому значению присвоим псевдоним slc 
            //и при выводе списка назначений по значению slc 
            //будем знать, назначено ли на данный момент то или иное лекарство из списка для буренки  
            
if($q mysql_query('SELECT *, IF((SELECT 1 FROM appoint WHERE cid='.$cid.' AND mid=t1.mid), 1, 0) slc FROM veterinary t1')) {  
                
//вывод формы  
                
$f '<form method="post">  
                      <label>Имя: '
.htmlspecialchars($r->name).'</label>  
                      <label>Приметы: '
.htmlspecialchars($r->signs).'</label>  
                      <label>Описание:</label><textarea name="fld-1">'
.htmlspecialchars($r->description).'</textarea>  
                      <label>Надои: <input name="fld-2" value="'
.$r->yields.'" />  л.</label>  
                      <label>Дата последнего осмотра: '
.date('j.n.Y H:i'strtotime($r->vet_date)).'</label>  
                      <label>Лекарства:</label>'
;  
                
//добавляем в форму список лекарств, а так как они содержат еще и описания, 
                //то новый выбор для назначений будет осуществляться массивом флажков  
                
while($s $mysql_fetch_object($q)) $f .= '<label><input type=checkbox name="fld-3[]" value='.$s->mid.($s->slc ' checked' null).' />'
                                               
htmlspecialchars($s->remedy).' <em>'.htmlspecialchars($s->descript).'</em></label>';  
                echo 
$f.'<br><br><button name="fld-4" value='.$cid.'>Отправить</button></form>';       
            } else echo 
'Ошибка запроса!'
        } 
    } else echo 
'Ошибка запроса!'


//формирование строки параметров/значений для обновления   
function set_update_vars($k$v) { 
    return 
$k.'="'.$v.'"'

?> 

  Ответить  
 
 автор: confirm   (06.09.2014 в 14:20)   письмо автору
 
   для: davidoff_72   (06.09.2014 в 14:14)
 

В каком коде, в последнем что я оставил?

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-56] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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