За последние 24 часа нас посетили 18805 программистов и 1708 роботов. Сейчас ищут 919 программистов ...

Кто поможет с таблицами, тому морожено!

Тема в разделе "PHP и базы данных", создана пользователем davidoff, 6 сен 2015.

  1. davidoff

    davidoff Guest

    Как сделать , чтоб в таблице vak_kan можно было менять значение поля id_status (в файле ppr.php с помощью выпадающего списка) а все остальные значения оставались прежними?
    спасибо
    Есть таблицы, таблица vak_kan паразитирует на всех остальных. то есть берёт из них значения.

    vak_kan - таблица связанная внешними ключами с справочниками
    Код (PHP):
    1. CREATE TABLE IF NOT EXISTS `vak_kan` (
    2.   `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
    3.   `id_vak` int(5) unsigned NOT NULL,
    4.   `id_candidat` int(10) unsigned NOT NULL,
    5.   `id_status` int(5) unsigned DEFAULT NULL,
    6.   PRIMARY KEY (`id`),
    7.   UNIQUE KEY `id_vak_2` (`id_vak`,`id_candidat`),
    8.   KEY `id_vak` (`id_vak`),
    9.   KEY `id_candidat` (`id_candidat`),
    10.   KEY `id_status` (`id_status`),
    11.   KEY `id` (`id`,`id_status`),
    12.   KEY `id_2` (`id`,`id_candidat`),
    13.   KEY `id_candidat_2` (`id_candidat`,`id_status`)
    14. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=81 ;
    Код (PHP):
    1. CREATE TABLE IF NOT EXISTS `vakans` (
    2.   `id_vak` int(5) unsigned NOT NULL AUTO_INCREMENT,
    3.   `koment` varchar(250) NOT NULL,
    4.   `id_firm` int(5) NOT NULL,
    5.   `id_dol` int(5) NOT NULL,
    6.   `id_city` smallint(10) NOT NULL,
    7.   PRIMARY KEY (`id_vak`),
    8.   KEY `id_firm` (`id_firm`),
    9.   KEY `id_dol` (`id_dol`),
    10.   KEY `id_vak` (`id_vak`),
    11.   KEY `id_city` (`id_city`)
    12. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
    Код (PHP):
    1. CREATE TABLE IF NOT EXISTS `kandidat` (
    2.   `id_candidat` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3.   `rezum_txt` varchar(255) NOT NULL,
    4.   `id_dol` int(5) NOT NULL,
    5.   PRIMARY KEY (`id_candidat`),
    6.   KEY `id_dol` (`id_dol`)
    7. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

    Код (PHP):
    1. CREATE TABLE IF NOT EXISTS `status_kan` (
    2.   `id_status` int(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 'таблица стусов кандидатов',
    3.   `name_status` varchar(50) NOT NULL,
    4.   PRIMARY KEY (`id_status`)
    5. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
    фаил vak.php
    Код (PHP):
    1. <?php
    2. include('connect.php');
    3.  
    4. $id_firm = $_GET['idvak'];
    5.  
    6. $qwerty = mysql_query("SELECT * FROM `vakans` 
    7. JOIN `firm` ON vakans.id_firm=firm.id_firm
    8. JOIN `dolzgnost` ON vakans.id_dol=dolzgnost.id_dol
    9. JOIN  city ON city.id_city=vakans.id_city
    10. WHERE vakans.id_vak = '$id_firm'") or die(mysql_error());
    11.  
    12.  
    13. echo '<table border="1" cellspacing="0" cellpadding="5">';
    14. echo '<th>Фирма</th><th>Город</th><th>Коментарий</th><th>Должность</th>';
    15. while($res = mysql_fetch_assoc($qwerty))
    16.  
    17. {
    18.     echo "<tr>";
    19.     echo "<td>$res[name_firm]</td>";
    20.     echo "<td>$res[city]</td>";
    21.     echo "<td>$res[koment]</td>";
    22.     echo "<td>$res[name_dol]</a></td>";
    23.     //echo "<td>$res[name_dol]</a></td>";
    24.     echo '</tr>';
    25. }
    26. echo '</table><br>';
    27. /*
    28. $sql3 = mysql_query('SELECT * FROM vakans'); 
    29. $num_rows3 = mysql_num_rows($sql3); 
    30. echo "<p>Количетсов вакансий - $num_rows3 </p>";    
    31. */
    32.  
    33. $sql3 = mysql_query("SELECT  *
    34.                         FROM vak_kan
    35.                         WHERE id_vak = '$id_firm' AND id_status=5
    36.                         ");
    37. $num_rows = mysql_num_rows($sql3);
    38. echo "Потенциально подходящие кандидаты - <a href='./vakans/ppr.php?id=".$id_firm."'>$num_rows</a> <br>";
    39.                                                     //href='vak.php?idvak=".$res[id_vak]."'>"
    40. $sql4 = mysql_query("SELECT  *
    41.                         FROM vak_kan
    42.                         WHERE id_vak = '$id_firm' AND id_status=9
    43.                         ");
    44. $num_rows2 = mysql_num_rows($sql4);
    45. echo "Для звонков -  $num_rows2<br>";
    46.  
    47. $sql5 = mysql_query("SELECT  *
    48.                         FROM vak_kan
    49.                         WHERE id_vak = '$id_firm' AND id_status=10
    50.                         ");
    51. $num_rows3 = mysql_num_rows($sql5);
    52. echo "Для собеседования в агентстве - $num_rows3 <br>";
    53.  
    54. $sql6 = mysql_query("SELECT  *
    55.                         FROM vak_kan
    56.                         WHERE id_vak = '$id_firm' AND id_status=6
    57.                         ");
    58. $num_rows4 = mysql_num_rows($sql6);
    59. echo "Отработанные - $num_rows4" , "</br>";
    60. ?>
    фаил ppr.php
    Код (PHP):
    1. [url="http://localhost/inodb/firm.php"]Фирмы[/url]<?php
    2. include('pprconnect.php');
    3. $id_firm = $_GET['id'];
    4. print_r($id_firm);
    5.  
    6. $selct2 = mysql_query("SELECT vak_kan.id_vak, vak_kan.id_status, kandidat.id_candidat, kandidat.rezum_txt 
    7.                         FROM vak_kan, kandidat
    8.                         WHERE vak_kan.id_vak='$id_firm
    9.                         AND vak_kan.id_status=5 
    10.                         AND vak_kan.id_candidat=kandidat.id_candidat");
    11.                         
    12.                         
    13.                         
    14. echo '<table border="1" cellspacing="0" cellpadding="5">';
    15.  
    16. while($res2 = mysql_fetch_array($selct2))
    17.  
    18. {
    19.     echo '<tr>';
    20.     echo '<td>';
    21.     echo $res2['rezum_txt'];
    22.     echo '</td>';
    23.     
    24. //    $kan = isset($_POST['f']) ? (int)$_POST['f'] : null; 
    25. //    $vak = isset($id_firm) ? (int)$id_firm : null; 
    26.     
    27.   $kan = $_POST['f'];  ?????????????????????????????????
    28.          $qwerty =  mysql_query('UPDATE `vak_kan` SET id_status = "'.$kan.'"
    29.                     WHERE   id_candidat="'.$res2['id_candidat'].'" AND id_vak= "'.$id_firm.'"'); 
    30.     
    31.  
    32.  
    33. ?>    
    34.     <td><form action="ppr.php" method="post">
    35.     <select name="f">
    36. <?php
    37.     
    38.  
    39.  
    40.     echo "<option value='5'>".подход."</option>";
    41.     echo "<option value='6'>".неподход."</option>";
    42.  
    43.     
    44. ?>    
    45.     </select> 
    46.     <input type='submit' value='переместить'>
    47.     </form></td>
    48. </tr>
    49. <?php
    50. }
    51. print_r($sell);
    52. print_r($result['5']);
    53. ?>    
    54.  
    55. </table>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (PHP):
    1. UPDATE `vak_kan` SET `id_status`='7' WHERE `id`='1' 
     
  3. davidoff

    davidoff Guest

    я создал фаил для редактирования vak_up.php туда отправляю данные для редактирования.

    в id_status я отправляю данные из выпадающего списка методом POST на странице ppr.php и отправляю их в обработчик vak_up.php
    но как отправить значение id ? если оно приходит на страницу ppr.php методом GET ?
    В моем понимании надо полученный GET прикрутить как то к посту и отправить для обработки на страницу vak_up.php .
    Но как это сделать или я ошибаюсь в подходе?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (PHP):
    1. <input type="hidden" name="id" value="<?=(int)$_GET['id']?>">
    мысли правильные
     
  5. davidoff

    davidoff Guest

    Штука классная! Попробовал , передает. Надо взять на вооружение. Но к сожалению в моем случае оказалась не до конца полезна...
    потому что в мой $_GET['id'] передается с предыдущих файлов id_vak а мне надо id (смотреть в самом верху структуру таблиц vak_kan) ...
    пока что руки опустились.... скоро конец света, жизнь не сложилась...код не пишется..
    какими пряниками выманить нужный id ?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    передавай id с прошлой страницы
     
  7. davidoff

    davidoff Guest

    начну с начала времен ...
    задача вытянуть id из таблицы vak_kan

    файл с которого все начинается: vakans.php
    Код (Text):
    1. ....$qwerty = mysql_query("SELECT
    2.                 vakans.id_vak, vakans.koment, vakans.id_firm, vakans.id_dol,
    3.                 firm.id_firm, firm.name_firm,
    4.                 dolzgnost.id_dol, dolzgnost.name_dol
    5.                 FROM vakans, firm, dolzgnost
    6.                 WHERE vakans.id_firm = firm.id_firm AND vakans.id_dol = dolzgnost.id_dol ORDER BY name_firm");
    7. <a href='vak.php?idvak=".$res[id_vak]......
    передается в фаил vak.php :
    Код (Text):
    1. $id_firm = $_GET['idvak'];
    2.  
    3. $qwerty = mysql_query("SELECT * FROM `vakans`
    4. JOIN `firm` ON vakans.id_firm=firm.id_firm
    5. JOIN `dolzgnost` ON vakans.id_dol=dolzgnost.id_dol
    6. JOIN  city ON city.id_city=vakans.id_city
    7. WHERE vakans.id_vak = '$id_firm'") or die(mysql_error());....
    8. ....$sql3 = mysql_query("SELECT  *
    9.                         FROM vak_kan
    10.                         WHERE id_vak = '$id_firm' AND id_status=5
    11.                         ");....
    12. <a href='./vakans/ppr.php?id=".$id_firm."'>
    фаил ppr.php в к отором должен вставляться id :
    Код (Text):
    1. $id_firm = $_GET['id'];
    2.  
    3.  
    4. $selct2 = mysql_query("SELECT vak_kan.id, vak_kan.id_vak, vak_kan.id_status, kandidat.id_candidat, kandidat.rezum_txt
    5.                         FROM vak_kan, kandidat
    6.                         WHERE vak_kan.id_vak='$id_firm'
    7.                         AND vak_kan.id_status=5
    8.                         AND vak_kan.id_candidat=kandidat.id_candidat");....
    9. ...<form action="vak_up.php" method="post">
    10.     <select name='f'>
    11. <?php
    12.     ... echo '<option value="6">'.неподход.'</option>'; ...
    13. ?> 
    14.     </select>
    15.     <input type="hidden" name="id" value="<?=(int)$_GET['id']?>">
    и заканчивается файллом vak_up.php где в записи с определенным id должно поменятся значение id_status :
    Код (Text):
    1. ...$kan = $_POST['f'];
    2.     $ress = $_POST['id'];
    3.      
    4.     $qwerty =  mysql_query("UPDATE vak_kan SET id_status = '$kan' WHERE id = '$ress'");...
    проблема в том, что нигде по пути не вытягивается id из vak_kan, не понятно как это сделать.

    Мы люди не местные, помогите советом кто сколько может....
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну в файле vakans.php запроси vakans.id и передай дальше
     
  9. davidoff

    davidoff Guest

    да я так и сделал, только не vakans а vak_kan. вставил название таблицы и id , а мне выдало безчисленное количество повторяющихся данных. но все равно, благодаря вашему совету я выкрутился из положения.
    таким вот образом:
    таблица vak_kan :
    Код (Text):
    1.  
    2. id
    3. id_vak
    4. id_candidat
    5. id_status
    Код (Text):
    1.  
    2. ....<select name='f'>....
    3.     </select>
    4.     <input type="hidden" name="id" value="<?=(int)$_GET['id']?>">
    5.     <input type="hidden" name="idr" value="<?=(int)$res2['id_candidat']?>">
    6. .....  
    7. $kan = $_POST['f'];
    8.     $ress = $_POST['id'];
    9.     $ress3 = $_POST['idr'];    
    10. }
    11. ....
    12. $qwerty =  mysql_query("UPDATE vak_kan SET id_status = '$kan' WHERE id_vak = '$ress' AND id_candidat = '$ress3'");
    13.    
    я использую все показатели кроме id ...

    Вы мне помогли, с меня обещаное морожено... давайте номер вашего вебмани.
    Спасибо друг!
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    обновлять что-то лучше по первичному или какому другому уникальному ключу, если конечно надо обновить только одну запись.
     
  11. davidoff

    davidoff Guest

    по первичному проблема. все остальные ключи уникальны. предполагается обновлять по одному, но есть мысль поставить чекбоксы и обновлять пачкой... или в данном случае лучше не использовать чекбокс?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это вообще никак не связано
     
  13. davidoff

    davidoff Guest

    Скажите , так как я намудрил, это не правильно? я просто не представляю как сделать по другому? наверное какой то принципиально другой подход?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, почему. Я просто сказал, что это не связано. С правильностью это тоже не связано. =) Правильно или нет - это от ситуации зависит.
     
  15. davidoff

    davidoff Guest

    хорошо, спасибо.
    тут у меня новая головоломка возникла, предлагаю поучаствовать (на этом же форуме): viewtopic.php?f=9&t=54565
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я видал :]