За последние 24 часа нас посетили 22427 программистов и 1041 робот. Сейчас ищут 626 программистов ...

элементы вне формы

Тема в разделе "PHP для новичков", создана пользователем produser, 21 янв 2012.

  1. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Доброго времени суток. Начал осваивать пхп , раньше писал на делфи. Решил что наилучшей практикой будет написать простенький сайт с минимальным функционалом(маленькая админка, создание, редактирование, удаление материалов). Все вроде слава богу, но вот на удалении я запнулся... Хотел сделать что бы при выборе галочки напротив нужного материала в таблице(етот список формируется при открытии страницы динамически и у каждого чекбокса имя уникальное)
    [​IMG]
    и выборе соответсвующего действия в выпадающем списке происходило удаление выбранных материалов... Механизм удаления мне понятен, но вот проблема в том, что форма с кнопкой и списком действий, не включает в себя эти чекбоксы, и соответсвенно я немогу прочитать из них айди(id=имя чекбокса)... Следовательно возник вопрос: можно ли каким то образом прочитать параметры элементов, которые н евходят в форму которая срабатывает в данный момент времени, или может есть более простой способ ешения данной проблемы...

    Зараннее благодарю откликнувшихся.

    Вот код:

    Код (Text):
    1.  
    2. <html>
    3. <HEAD><TITLE>Administrator</TITLE>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <link href="../admin.css" rel="stylesheet" type="text/css">
    6. </HEAD>
    7. <BODY>
    8. <div class="container">
    9. <div class="header">Хедер</div>
    10. <div class="left">
    11. <ul>
    12. <LI><form action="editor.php" method="post" name="form1000000">
    13. <input type="hidden" name="indx" value="new">
    14. <input type="hidden" name="ids" value="1">
    15. <a href="editor.php" onclick="document.form1000000.submit(); return false;">Новый материал</a>
    16. </form></LI>
    17. <LI><form action="index.php" method="post" name="form2000000">
    18. <input type="hidden" name="tp" value="edt">
    19. <a href="index.php" onclick="document.form2000000.submit(); return false;">Редактировать материал</a>
    20. </form></LI>
    21. <li><A href="../index.php">На сайт</A></li>
    22. </ul>
    23. </div>
    24. <div class="content">
    25. <div class="materials">
    26. <?php include('../conf.php'); ?>
    27. <? if (!isset($tp)) { @$tp=$_POST['tp'];}
    28. if ($tp=='edt') {
    29.    $result=mysql_query('SELECT * FROM `content`') or die(mysql_error());// делаем выборку из таблицы
    30.    echo('<table border="1" width="100%">');
    31.    echo('<tr style="background:#665A34;"><td align="center">ID</td><td align="center">Название материала</td><td align="center">На главной</td><td align="center" width="50px">Действия</td>');
    32. while($row=mysql_fetch_array($result))
    33.    { echo ('<tr><td align="center">'.$row['id'].' </td><td><form action="editor.php" method="post" name="form'.$row['id'].'">');
    34.    echo('<input type="hidden" name="indx" value="edtt">');
    35.    echo('<input type="hidden" name="ids" value="'.$row['id'].'">');
    36.    echo('<a href="editor.php" onclick="document.form'.$row['id'].'.submit(); return false;">'.$row['title'].'</a></form></td><td align="center">');
    37.    $main=$row['main'];
    38. if ($main==1) { echo ('Да'); } else { echo('Нет'); }
    39.    echo('</td><td><input type="checkbox" name="'.$row['id'].'"></td>');
    40.    echo('</tr>');
    41.    }
    42.    echo('</table>');
    43.    echo('<form name="edit" method="post" action="index.php"><div class="rigt_opt">
    44. <select name="sel">
    45.   <option disabled>Выберите действие</option>
    46.   <option>Удалить</option>
    47. </select>
    48. <input type="submit" name="s1" value="Выполнить">
    49. </div></form>');
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    что мешает сделать форму на всю таблицу со всеми чекбоксами?
     
  3. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Проблема в том, что для каждого элемента таблицы(для каждой строчки) своя форма которая при нажатии на ссылку(выборе материала) отправляет все в редактор... Если сделать одну форму для всех элементов, то можно будит делать только одно какое то действие, или я не прав?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    во-первых, не прав, т.к. на стороне сервера ты сам решаешь сколько действий и что именно делать когда прислали то-то или сё-то.

    во-вторых, тебе чекбоксы для формы отлично подходят. а на передачу в редактор достаточно ссылки с указанием номера материала. без формы. гетом.
     
  5. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Я еще не умею брать параметры из ссылки, только из формы... Если делать через формы все, то каким обрзом возможно получить параметр name чекбокса? приведи хоть какой то пример с моим кодом, а то я плохо еще понимаю все это...
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    дык разницы никакой. форма умеет тоже в ссылку параметры пихать. это задается в методе формы. он или POST ил GET

    соотв это массивы $_POST или $_GET

    а в ссылку ну просто как обычно lalala/pupupu?id=10 - вот это будет в гете
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    пример:
    Код (Text):
    1.  
    2. echo "<form method='post' action='tvoyphp.php'>
    3.  
    4. <input type='checkbox' name='delete[]' value='1'> название статьи №1 <a href='/edit.php?id=1'>изменить</a><br>
    5. <input type='checkbox' name='delete[]' value='2'> название статьи №2 <a href='/edit.php?id=2'>изменить</a><br>
    6. </form>";
    соотв в файле tvoyphp.php ты делаешь var_dump($_POST) чтобы посмотреть для отладки что пришло
    и там форыч
    Код (Text):
    1.  
    2. if (isset($_POST['delete']) ) {
    3. foreach ($_POST['delete'] as $nomer) {
    4.   echo "удаляем статью №$nomer<br>\n";
    5. }
    6. }
    в эдите
    Код (Text):
    1.  
    2. if (isset($_GET['id'])) {
    3. echo "редактируем статью №{$_GET['id']}<br>\n";
    4. }

    вот так просто.
    обрати внимание что в имени инпута скобочки квадратные. это позволит сделать массив. ну ты поймешь по вардампу
     
  8. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Это получается что нужно еще и ссылку возле каждого чекбокса делать? Я хотел просто сделать так: выделяем нужные нам поля таблицы чеками, выбираем в списке удалить и жмем кнопку...
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    может лучше поспать и завтра на все взглянуть еще разик? =)

    ты сейчас нахватаешься понимания и у тебя все уложится в голове. ты не торопись все в один день проглотить.
    обычно чекбоксы не просто так растыкивают, я тебе вот предложил вариант где рядом с каждой статьей есть возможность ее удалить вместе с другими через форму, и при этом тут же есть возможность ее отредактировать минуя форму.
     
  10. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Ладна спасиба, буду пробывать, все равно не усну пока не разберусь этом хоятбы) Если что завтра отпишусь как решил.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    сделай мой пример: два файла плюс форма. и не забудь про var_dump

    а дальше ломай форму по чуть чуть и смотри на эффекты