Nuevo en PHP y desarrollo web. Me siento estúpido al preguntar esto, pero he estado buscando respuestas durante horas y no puedo encontrar nada. Si esto ha sido respondido antes, por favor vincúleme... ¡Gracias por cualquier ayuda!
Descripción: usando un formulario HTML, pasa valores como una matriz a una matriz PHP. Funciona la primera vez, pero cuando vuelvo al formulario e intento agregar otro conjunto de valores, anula los valores en el índice 0.
Lo que he probado: array_push($log, $_POST["info"]) y $log[] = $_POST["info"]; = mismo resultado, el índice en 0 se sobrescribe.
código HTML
<?php $date = date('d/m/Y h:i', time());?> <form class="contact-form" action="/server.php" method="post"> <input type="text" name="info[]" placeholder="Full name" required> <textarea name="info[]" rows="5" cols ="80" placeholder="Message" required></textarea> <input type="hidden" name="info[]" id="date-time" value="<?php echo $date; ?>"> <button type="submit" name="submit">Submit Message</button> </form>Código PHP
<?php $log = array(); if(isset($_POST["info"])){ array_push($log, $_POST["info"]); } var_dump($log); ?>Resultado actual
array(1) { [0]=> array(3) { [0]=> string(12) "Blunder King" [1]=> string(28) "Blundering all the day long." [2]=> string(16) "27/11/2021 02:48" } }Cuando trato de agregar otro valor a la matriz de registro de $, se sobrescribe en lugar de mover un nuevo índice.
array(1) { [0] => array(3) { [0]=> string(12) "Blunder King" [1]=> string(28) "Blundering all the day long." [2]=> string(16) "27/11/2021 02:48" }, // would expect new array values at index 1. But instead I get these values overwriting index 0 above. [1] => array(3) { [0]=> string(12) "Blunder Queen" [1]=> string(30) "Blundering all the day long." [2]=> string(16) "27/11/2021 02:51" } }Simplemente cambie ligeramente su código para usar SESSION:
<?php session_start(); $date = date('d/m/Y h:i', time());?> <form class="contact-form" action="server.php" method="post"> <input type="text" name="info[]" placeholder="Full name" required> <textarea name="info[]" rows="5" cols ="80" placeholder="Message" required></textarea> <input type="hidden" name="info[]" id="date-time" value="<?php echo $date; ?>"> <button type="submit" name="submit">Submit Message</button> </form>Para servidor.php
<?php session_start(); if ( ! isset($_SESSION["log"])){ $_SESSION["log"] = array(); } if(isset($_POST["info"])){ array_push($_SESSION["log"], $_POST["info"]); } var_dump($_SESSION["log"]); ?>O simplemente combine los dos y ejecútelo y verá el resultado en un solo php:
<?php session_start(); ?> <?php $date = date('d/m/Y h:i', time());?> <form class="contact-form" action="#" method="post"> <input type="text" name="info[]" placeholder="Full name" required> <textarea name="info[]" rows="5" cols ="80" placeholder="Message" required></textarea> <input type="hidden" name="info[]" id="date-time" value="<?php echo $date; ?>"> <button type="submit" name="submit">Submit Message</button> </form> <?php if ( ! isset($_SESSION["log"])){ $_SESSION["log"] = array(); } if(isset($_POST["info"])){ array_push($_SESSION["log"], $_POST["info"]); } var_dump($_SESSION["log"]); ?>