Cформировать ссылку для редактирования данных из бд

Тема в разделе "PHP программирование", создана пользователем Kauperwood, 16 апр 2011.

  1. Kauperwood

    Kauperwood Гость

    Вывожу из базы данных контент, допустим рядом с каждой выведенной записью кнопка "редактировать", вопрос как сформировать такой переход.
    тоесть вывести на экран в текстовое поле я могу, а через кнопку чет не допираю как. У меня есть близкий к решению пример:
    editor.php
    Код (Text):
    <table border="1" align="center">
    <?php
    $sql = mysql_query('SELECT*FROM content');
    while($record = mysql_fetch_array($sql))
    {
    print '<tr><td>'.$record['pagecontent'].'</td><td><a href="editor.php?page_title='.$record['pagecontent'].
    '">Редактировать</a></td></tr>';
    }
    ?>
    </table>
    <?php
    $sql = mysql_query("select * FROM content WHERE pageid='".$page_title."'");
    while($record = mysql_fetch_array($sql))
    {
    $content=$record['pagecontent'];
    }
    ?>
    <form action="editor.php" method="post">
    <table width="100%" align="center">
    <tr>
    <td align="center"><textarea name="text_edit" cols="80" rows="15"><? print $content; ?></textarea></td>
    </tr>
    <tr>
    <td align="center"><input name="save" type="submit" value="Сохранить"></td>
    </tr>
    </table>
    </form>
    сказано: "Когда на такой линк нажимает пользователь, он на ту же самую страницу возвращается, однако теперь с определенным значением переменной $page_title"
    вот этот момент \\ <a href="editor.php?page_title='.$record['pagecontent'].'">Редактировать</a>'; // не пойму как надо изменить, там ошибка и вся ячейка идет в строку браузера, не могу понять как таким образом данные записываються в переменную, как записать подскажите пожалуйста.
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Если я правильно понял то:
    Есть таблица в форме:
    [table]
    [tr]Столбик с кучей чекбокстовЗаголовик топикаСодержание топика...[/tr]
    [tr]Чекбокс1рисунок карандашаЗаголовик топика1Содержание топика.1..[/tr]
    [tr]Чекбокс2рисунок карандашаЗаголовик топика2Содержание топика2...[/tr]
    [/table]
    Чекбокс <input type="checkbox" name="id_s[]" value="id"/>
    где id - ID топика(число)
    Рисунок с карандашом <img src="images/toolbar/edit.png" onclick="select_id_s($c); submit();"/>
    где $c - порядковый номер чекбокса в таблице ($c<>id(ну равнятся может, я к тому что это не одно и тоже))
    <!--shcode--><pre><code class='java'>function select_id_s(id)
    {
    for (var i=0; i < document.editor['id_s[]'].length; i++) document.editor['id_s[]'].checked = false;
    document.editor['id_s[]'][id].checked = true;
    }[/CODE]
    чтение масива(масив с id топика) в скрипте
    Код (PHP):
    if (isset($_POST['id_s']))
    {
    $id_s=$_POST['id_s'];
    } else
    $id_s='';
    а далее работаю с $id_s как с масивом.
    Код (PHP):
    $k=-1;
    foreach ($id_s as $b)
    {
    $k++;
    echo "id_s[$k]=$b";
    }
     
  3. Kauperwood

    Kauperwood Гость

    Это уже поглубже... если капнуть, то может и да.. немного не понятен механизм, может есть пример в сети почитать или в личку?

    В моем случае мне нужно только исходя из примера соорудить ссылку при переходе на которую редактировать ячейку данных в textarea, а от нее уже плясать, это то как я думал, возможно я не прав, не знаю еще пока. Вот мануил с тем примером.
    Например у меня выведены на экран из бд два поля:
    1.Приивиет медведь.
    2.Зоя варила супец.
    справа от каждого поля кнопа "Редактировать"
    снизу текстарея, - жму на второе поле "редактировать" и вижу что "зоя варила cупец" появилось в текстарее, дальше правлю,сохраняю с этим вопросов нет.
    День "первый" заканчиваеться....начинается "первая" ночь)))
     
  4. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Моё мега ацкое "творение" : админка логин : admin пароль : 1234 (ацтой полный).
    А что мешает сделать ссылку както так: edit.php?topic_id=X (где X - id топика )?
     
  5. typak

    typak Гость

    Та так как формировал так и формируеш тока обработчик делаеш
    типа если существует $b то делаем выборку из бд с условием where id = $b с нужными значениями
    и переменные с формы присваивают значение переменным выборки
    , а если не существует $b то переменные из формы присваивают пусто.

    Кароче и так каждый раз клацая по ссылке в форму будут вписыватся нужные значения.

    Ща подредактирую код:

    Код (PHP):
    .
    .
    .
    <table border="1" align="center">
    <?php
    $sql = mysql_query('SELECT*FROM content');
    while($record = mysql_fetch_array($sql))
    {
    print '<tr><td>'.$record['pagecontent'].'</td><td><a href="editor.php?pageid='.$record['pageid'].//ссылки формируеш по ПК
    '">Редактировать</a></td></tr>';
    }
    ?>
    </table>
    <?php
    //а тут делаеш обработчик
    //Тут проверяеш есть ли ключь если есть то форму заполняеш данными строки с переданным ключом
    //если нет ключа, то выводиш пустую форму
    $pageid = $_GET['pageid']
    if(isset($pageid))//если существует, то делаем выборку
    {
    $sql = mysql_query("select * FROM content WHERE pageid='".$pageid."'");
    while($record = mysql_fetch_array($sql))
    {
    $content=$record['pagecontent'];
    }
    }
    else
    {
    $content='';
    }
    ?>
    <form action="editor.php" method="post">
    <table width="100%" align="center">
    <tr>
    <td align="center"><textarea name="text_edit" cols="80" rows="15"><? print $content; ?></textarea></td>
    </tr>
    <tr>
    <td align="center"><input name="save" type="submit" value="Сохранить"></td>
    </tr>
    </table>
    </form>
    .
    .
    .
    Отак будет выводить как ты хочеш!!! :)

    Проще некуда "детский вопрос" :rolleyes:


    А шо это ты пишеш ? Зачем такой вывод нужен ?
     
  6. Kauperwood

    Kauperwood Гость

    поклацал, с пивом покатит, понравилось что можно выбрать область для вставок, и смайлы))))
    а редактор самописный?

    пашет :ithx:

    админку решил себе сделать, это не очень способ?
    я пока других методов еще не знаю, только начал этим заниматься


    PS. Поражаюсь тому, какие иногда попадаются руководства :ya_lamo:
     
  7. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Да, левая только процедура вставки текста в тектареа, а всё остальное самопал, причём не очень качаственный(особенно если учитывать что всё писалось за 1,5 суток, попутно рубаясь в Hitman), но работает :ya_lamo: .
    аналогично.
     
  8. Kauperwood

    Kauperwood Гость

    сильно решил не изощряться втыкнул к себе tinimce, - быстренько работает))
    в учебных целях конечно полезно написать и свой редактор, надо будет почитать
     
  9. typak

    typak Гость

    редактор норм а можеш скинуть Javascript функцию для вставки в текстовую область бб-кода , а то моя функция вставлять вставляет а тока курсор потом самуму приходится на место ставить, да и если выдиляеш строку и нажимаеш на вставку бб-кода
    ну например курсива необрамляет его, а рядом.

    Вот моя функция перекопированная
    Код (LotusScript):
    <script language='JavaScript' type='text/javascript'><!--Скрипт который добавляет бб-код в текстовое поле -->
    <!--
    function tag(text1, text2)
    {
    if ((document.selection))
    {
    document.form.description.focus();
    document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
    } else document.form.description.value += text1+text2;
    }
    //-->
    </script>
    Мож там чо изменить надо какую строку или чо добавить
    Вообщем проблему еще раз повторю вставлять то теги вставляет а от курсо потом самому пириходится наместо ставить и када выделяеш текст, текст не обрамляется в теги.

    От мне та процедура вставки текст в текстареа и нада
     
  10. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Процедуру вставки текста выдрал с какого-то форума, сказать немогу поскольку страница была в закладках, а винду недавно переставлял.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Ява:</div></div><div class="sp-body"><div class="sp-content">
    Код (Javascript):
    function surroundText(text1, text2, textarea) {
    //textarea = xbb_textarea;
    // Can a text range be created?
    if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
    var caretPos = textarea.caretPos, temp_length = caretPos.text.length;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
    if (temp_length == 0) {
    caretPos.moveStart("character", -text2.length);
    caretPos.moveEnd("character", -text2.length);
    caretPos.select();
    }
    else
    textarea.focus(caretPos);
    }
    // Mozilla text range wrap.
    else if (typeof(textarea.selectionStart) != "undefined") {
    var begin = textarea.value.substr(0, textarea.selectionStart);
    var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
    var end = textarea.value.substr(textarea.selectionEnd);
    var newCursorPos = textarea.selectionStart;
    var scrollPos = textarea.scrollTop;

    textarea.value = begin + text1 + selection + text2 + end;

    if (textarea.setSelectionRange) {
    if (selection.length == 0)
    textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
    else
    textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
    textarea.focus();
    }
    textarea.scrollTop = scrollPos;
    }
    // Just put them on the end, then.
    else {
    textarea.value += text1 + text2;
    textarea.focus(textarea.value.length - 1);
    }
    }

    // Remember the current position.
    function storeCaret(text) {
    // Only bother if it will be useful.
    if (typeof(text.createTextRange) != "undefined")
    text.caretPos = document.selection.createRange().duplicate();
    }

    function insertTag(tag_begin, tag_end, textarea_id) {
    textarea=document.getElementById(textarea_id);
    surroundText(tag_begin, tag_end , textarea);
    }
    //........... далее идет процедуры вставки списка, ссылки... дописаные мною
    function insertLink(tag, message, text, textarea_name) {
    var url = prompt( message, text, '');
    if (! url) { return false; }
    insertTag('[' + tag + '='+ url+']','[/' + tag + ']', textarea_name);
    }

    function insertLink2(tags, textarea_name,query_count,query_message, query_text) {
    var tag__='';
    for (n=0; n<=query_count-1;n++)
    {
    var url = prompt(query_message[n], query_text[n], '');
    if (! url) { return false; }
    tag__=tag__+tags[n]+'='+url+' ';
    }
    insertTag('[' + tag__ +'/]', '', textarea_name);
    }

    function insertLink3(tag, message, text, textarea_name) {
    var url = prompt( message, text, '');
    if (! url) { return false; }
    insertTag('[' + tag +']',url + '[/' + tag + ']', textarea_name);
    }

    function insertLink4(tags, textarea_name,query_count,query_message, query_text) {
    var tag__='';
    for (n=0; n<=query_count-1;n++)
    {
    var url = prompt(query_message[n], query_text[n], '');
    if (! url) { return false; }
    tag__=tag__+tags[n]+'='+url+' ';
    }
    insertTag('['+tag__+']','[/'+tags[0]+']', textarea_name);
    }

    function insertList(textarea_name) {
    var tag__='[list]';
    k=0;
    ind=true;
    while (ind==true)
    {
    k++;
    var url = prompt('Создание списка', 'Введите элемент списка №'+k, '');
    if (url)
    {
    tag__=tag__+'[*]'+url+' ';
    }
    else
    {
    ind=false;
    }
    }
    insertTag(tag__+'[/list]','', textarea_name);
    }
    Текстареа:
    <!--shcode--><pre><code class='html'><textarea id="message" name="message" onclick='position()' onblur='position()'>
    бла-бла-бла
    </textarea>[/CODE]

    Кнопка вставки в текстареа:
    <!--shcode--><pre><code class='html'><img src="images/toolbar/text_bold.png" onClick="insertTag('','','message')" />[/CODE]
    ОФФТОП: Это мое 600-ое сообщение :)
     
  11. typak

    typak Гость

    Спасибо. Прикрутил норм работает. Свой редактор почти готов
     
Загрузка...

Поделиться этой страницей