Счетчик символов в input с PHP


Привет хорошо я создал скрипт, в котором пользователю предлагается Input, где он может поставить слово или фразу и уменьшить количество символов.

pero me sale del todo bien
<?php 
if(isset($_POST['enviar'])){
if(isset($_POST['texto'])){
$texto = trim($_POST['texto']);
$count = strlen($texto);
} 
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
</style>
</head>
<body>
<form method="post">
<input type="text" placeholder="Texto aqui" name="texto" id=""> <br>
<input type="submit" name="enviar" value="Enviar"><br>
</form>
<table>
<tr>
<th>Numero</th>
<th>Frase</th>
</tr>

<?php 
for ($i=1; $i < $count; $i++) { 
echo '<tr>
<td>'.$i.'</td>
<td>'.substr($texto,$i-1).'</td>
</tr>'; 
}

?>

</table>

</body>
</html>
Author: fredyfx, 2018-07-12

2 answers

Вы очень близки к тому, что хотите. Просто убедитесь, что переменная $count определена, и измените < в вашем цикле на <=. Что-то вроде этого:

<?php 
if(isset($_POST['enviar'])){
if(isset($_POST['texto'])){
$texto = trim($_POST['texto']);
$count = strlen($texto);
} 
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
</style>
</head>
<body>
<form method="post">
<input type="text" placeholder="Texto aqui" name="texto" id=""> <br>
<input type="submit" name="enviar" value="Enviar"><br>
</form>
<table>
<tr>
<th>Numero</th>
<th>Frase</th>
</tr>

<?php 
if(isset($count)) {
for ($i=1; $i <= $count; $i++) { 
echo '<tr>
<td>'.$i.'</td>
<td>'.substr($texto,$i-1).'</td>
</tr>'; 
}
}
?>

</table>

</body>
</html>
 0
Author: alanfcm, 2018-07-12 23:27:45

Я знаю, что вопрос имеет вид решения в PHP, однако... для тех, кто ищет альтернативу с JavaScript и некоторым jQuery:

$(document).ready(function() {
    var text_max = 99;
    $('#textarea_feedback').html('Quedan ' + text_max + ' caracteres');

    $('#textarea').keyup(function() {
        var text_length = $('#textarea').val().length;
        var text_remaining = text_max - text_length;

        $('#textarea_feedback').html('Quedan ' + text_remaining + ' caracteres');
    });
});
html { margin:11px }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea" rows="8" cols="30" maxlength="99" ></textarea>
<div id="textarea_feedback"></div>
 1
Author: fredyfx, 2018-07-12 23:38:39