За последние 24 часа нас посетили 36865 программистов и 7895 роботов. Сейчас ищут 1758 программистов ...

Ввод с клавиатуры

Тема в разделе "PHP для новичков", создана пользователем 6edyUH, 17 апр 2023.

  1. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    PHP:
    1. function cutText($text, $number)
    2. {
    3.     $resutl = substr($text, 0, $number) . "...";
    4.     return $resutl;
    5. }
    Подскажите как переделать данную функцию что бы параметр функции вводились с клавиатуры?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    никак... php не может работать с клавиатурой
    используйте форму - шлите результат в php, либо сделайте аналог на js
     
  3. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    Подскажите как это сделать через форму,
    Если есть время
    Спасибо!
     
  4. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    Вместо print аяксом на сервер данные с формы
    HTML:
    1. <!doctype html>
    2. <html lang="en">
    3.     <meta charset="UTF-8">
    4.     <meta name="viewport"
    5.          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    6.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7.     <title>Document</title>
    8. </head>
    9.     <textarea name="text_field"></textarea>
    10.     <input type="number" name="limit" value="10">
    11.     <input name="render" type="button" value="print">
    12. </form>
    13. <p class="result"></p>
    14.     const textField = document.querySelector('[name="text_field"]');
    15.     const limitField = document.querySelector('[name="limit"]');
    16.  
    17.     const resultField = document.querySelector('.result');
    18.     const print = () => {
    19.         let limit = +limitField.value;
    20.         let text = textField.value;
    21.  
    22.         resultField.innerHTML = text.length > limit ? text.substring(0, limit) + '...' : text;
    23.     }
    24.     document.querySelector('[name="render"]').addEventListener('click', print);
    25. </body>
    26. </html>
     
    #4 Aleksandr.B, 18 апр 2023
    Последнее редактирование: 18 апр 2023
  5. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
  6. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    Здесь нет. В зависимости от тз запрос нужно написать или оставить как есть.
    Код (Text):
    1. <!doctype html>
    2. <html lang="en">
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <meta name="viewport"
    6.           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    7.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
    8.     <title>Document</title>
    9. </head>
    10. <body>
    11. <form>
    12.     <textarea name="text_field"></textarea>
    13.     <input type="number" name="limit" value="10">
    14.     <input name="render" type="button" value="print">
    15. </form>
    16. <p class="result"></p>
    17. <script>
    18.     const textField = document.querySelector('[name="text_field"]');
    19.     const limitField = document.querySelector('[name="limit"]');
    20.  
    21.     const resultField = document.querySelector('.result');
    22.     const print = () => {
    23.         let limit = +limitField.value;
    24.         let text = textField.value;
    25.  
    26.         resultField.innerHTML = text.length > limit ? text.substring(0, limit) + '...' : text;
    27.     }
    28.  
    29.     const send = () =>{
    30.         let limit = +limitField.value;
    31.         let text = textField.value;
    32.         fetch('index.php', {
    33.             method: 'POST',
    34.             headers: {
    35.                 'Content-Type': 'application/json;charset=utf-8'
    36.             },
    37.             body: JSON.stringify({limit, text})
    38.         })
    39.     }
    40.  
    41.     document.querySelector('[name="render"]').addEventListener('click', send);
    42. </script>
    43. </body>
    44. </html>
     
    #6 Aleksandr.B, 18 апр 2023
    Последнее редактирование: 18 апр 2023
  7. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    @Aleksandr.B Спасибо. А не подскажешь, зачем плюс в этой строке: let limit = +limitField.value;
     
  8. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    Типизация к числовому значению. В данном случае это не особо нужно, но по привычке, где должно быть число, привожу к числу.
     
  9. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Вот ведь! Где то слышал, а теперь еще и увидел. Прикинь, а если там кто буквы напишет? :)
     
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Дезинформация. PHP: I/O streams - Manual
     
  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Чел ничего не говорил что cli
     
  12. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    а если не используя js на чистом php такое решаемо?
    --- Добавлено ---
    PHP:
    1. <?php
    2. function cutText($text, $number)
    3. {
    4.     $resutl = substr($text, 0, $number) . "...";
    5.     return $resutl;
    6. }
    7. $output = cutText($_GET['text']??'', (int) $_GET['number']??0);
    8. ?>
    9. <!doctype html>
    10. <html lang="en">
    11. <head>
    12.     <meta charset="UTF-8">
    13. </head>
    14. <body>
    15.     <form>
    16.         <input type="text" name="text">
    17.         <input type="number" name="number">
    18.         <button type="submit">GO</button>
    19.         <div><?=$output?></div>
    20.     </form>
    21. </body>
    22. </html>
    есть вот такой вариант
    но выдает вот такую ошибку

    Код (Text):
    1. Something went wrong. If this issue persists please contact us through our help center at help.openai.com.
     
  13. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Переменная $output может и не существовать, когда форма не отправлена.
     
  14. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    тогда у меня глупый вопрос
    что мне надобно сделать что бы она исчезла

    программа вроде как работает
    но приоткрытии страницы вот та ошибка что выше писал


    Но вот другая проблема
    программа с русским язык работает не корректно
     
  15. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Если ее убрать, то нет смысла в этой странице. Надо выводить ее только если она существует.
    Может подавить ошибку?
    <div><?=@$output?></div>
     
  16. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    вот не давится ошибка
    все по старому((
    --- Добавлено ---
    все разобрался
    заменил строку
    PHP:
    1. $output = cutText($_GET['text']??'', (int) ($_GET['number']??0));
    --- Добавлено ---
    только теперь осталась проблема с русским языком
    с английским работает корректно
     
  17. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Смотрите mb_-функции.
     
    6edyUH нравится это.
  18. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    Спасибо!!!
     
  19. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Почему? Консольный ввод возможен. Но тогда приложение надо будет из консоли и запускать, и к браузеру оно не будет иметь отношения