PROBLEMA CON ARRAY

thanatos

Utente Attivo
29 Gen 2021
23
0
1
Sto cercando di creare una sorta di diario con un array php salvando il "post" nell'array. So che sarebbe meglio usare un database SQL ma per vari motivi sono costretto a usare questo metodo. Ho creato questo script:
PHP:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<div class="diario">
    <center>
        <h1>DIARIO</h1>
    <center>
    <div align="left">
        <form action="testDiario.php" method="post">
            <textarea name="msg" id="msg" cols="30" rows="10"></textarea>
            <input type="submit" value="invia">
        </form>
    </div>
    <p>
    <?php
        $msg = array("a", "b");
        $i = count($msg);
        $msg1 = $_POST['msg'];

        $msg[$i] = $msg1;
        
        print_r($msg);
    ?>
    </p>
</body>
</html>
Funziona, il problema è che aggiungendo un valore questo viene sostituito all'ultimo elemento dell'array.
Spero di essere stato chiaro, comunque per qualunque chiarimento chiedete
 

marino51

Utente Attivo
28 Feb 2013
3.049
192
63
Lombardia
aggiungendo un valore questo viene sostituito all'ultimo elemento dell'array
ed é corretto, visto che inizializzi l'array ad ogni "invio" $msg = array("a", "b");
quindi il primo elemento disponibile sarà sempre quello con indice 2

se tu volessi gestire più elementi oltre il "2"
devi cambiare il codice, riprendendo / salvando l'array nelle "sessioni", per esempio
 

thanatos

Utente Attivo
29 Gen 2021
23
0
1
ed é corretto, visto che inizializzi l'array ad ogni "invio" $msg = array("a", "b");
quindi il primo elemento disponibile sarà sempre quello con indice 2

se tu volessi gestire più elementi oltre il "2"
devi cambiare il codice, riprendendo / salvando l'array nelle "sessioni", per esempio
Potresti spiegarmi brevemente come fare? Grazie mille per l'aiuto
 

marino51

Utente Attivo
28 Feb 2013
3.049
192
63
Lombardia
PHP:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<div class="diario">
    <center>
        <h1>DIARIO</h1>
    </center>
    <div align="left">
        <form action="Diario.php" method="post">
            <textarea name="msg" id="msg" cols="30" rows="10"></textarea>
            <input type="submit" value="invia">
        </form>
    </div>
    <p>
    <?php
        if(isset($_POST['msg'])) {
            if (!isset($_SESSION['msg'])) {
                $msg = array();
                $i   = 0;
            }
            else {
                $msg = $_SESSION['msg'];
                $i   = count($msg);
            }
            $msg1    = $_POST['msg'];
            $msg[$i] = $msg1;
            print_r($msg);

            $_SESSION['msg'] = $msg;
        }
    ?>
    </p>
</body>
</html>

risultato (esempio minimo)

1622209489896.png
 

thanatos

Utente Attivo
29 Gen 2021
23
0
1
PHP:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<div class="diario">
    <center>
        <h1>DIARIO</h1>
    </center>
    <div align="left">
        <form action="Diario.php" method="post">
            <textarea name="msg" id="msg" cols="30" rows="10"></textarea>
            <input type="submit" value="invia">
        </form>
    </div>
    <p>
    <?php
        if(isset($_POST['msg'])) {
            if (!isset($_SESSION['msg'])) {
                $msg = array();
                $i   = 0;
            }
            else {
                $msg = $_SESSION['msg'];
                $i   = count($msg);
            }
            $msg1    = $_POST['msg'];
            $msg[$i] = $msg1;
            print_r($msg);

            $_SESSION['msg'] = $msg;
        }
    ?>
    </p>
</body>
</html>

risultato (esempio minimo)

Vedi l'allegato 7864
Poi provo e ti faccio sapere. Comunque grazie mille
 

thanatos

Utente Attivo
29 Gen 2021
23
0
1
PHP:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<div class="diario">
    <center>
        <h1>DIARIO</h1>
    </center>
    <div align="left">
        <form action="Diario.php" method="post">
            <textarea name="msg" id="msg" cols="30" rows="10"></textarea>
            <input type="submit" value="invia">
        </form>
    </div>
    <p>
    <?php
        if(isset($_POST['msg'])) {
            if (!isset($_SESSION['msg'])) {
                $msg = array();
                $i   = 0;
            }
            else {
                $msg = $_SESSION['msg'];
                $i   = count($msg);
            }
            $msg1    = $_POST['msg'];
            $msg[$i] = $msg1;
            print_r($msg);

            $_SESSION['msg'] = $msg;
        }
    ?>
    </p>
</body>
</html>

risultato (esempio minimo)

Vedi l'allegato 7864
Ho provato e il problema iniziale è risolto. Però esiste un modo per "salvare" l'array e mantenerlo anche quando si apre nuovamente la pagina?
 

thanatos

Utente Attivo
29 Gen 2021
23
0
1
PHP:
<?php

session_start();

$postDaEliminare = $_POST['postDaEliminare'];

$postDaEliminare = str_replace('"', "", $postDaEliminare);

$msg = \array_diff($postDaEliminare);

echo $postDaEliminare;

?>

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

<div class="diario">

    <center>

        <h1>DIARIO</h1>

    <center>

    <div align="left">

        <form action="testDiario.php" method="post">

            <textarea name="msg" id="msg" cols="30" rows="10"></textarea>

            <input type="submit" value="invia">

        </form>

    </div>

    <div>

    <?php

    

    $data = date("d/m/Y");

    $time = date("h:i A");

    if(isset($_POST['msg'])) {

        if (!isset($_SESSION['msg'])) {

            $msg = array();

            $i = 0;

        }

        else {

            $msg = $_SESSION['msg'];

            $i = count($msg);

        }

        $msg1 = $_POST['msg'];

        $msg[$data . ", " . $time] = $msg1;

        print_r($msg);



        $_SESSION['msg'] = $msg;

    }

    

    foreach ($msg as $key => $value) {

        $indice = $key;

        $mes = $value;

        $post = "

        <p class=\"data inline\">$indice</p>

        <p class=\"post inline\">$mes</p>

        ";

        echo($post);

    }

    

    ?>

    </div>

    <div>

        <form action="testDiario.php" method="post">

            <select name="postDaEliminare">

                <?php

                    foreach ($msg as $key => $value) {

                        $indice = $key;

                        echo('<option class="width" value="' . $value . '">"' . $indice . '"</option>');

                    }

                ?>

            </select>

            <input type="submit" value="ELIMINA POST">

        </form>

    </div>

</body>

</html>
Devo eliminare l'elemento dell'array che viene scelto dall'utente all'interno della select conn ame="postDaEliminare". Però ogni volta che provo l'elemento non viene tolto (ho provato anche con unset() e l'indice). Come posso fare?
 

marino51

Utente Attivo
28 Feb 2013
3.049
192
63
Lombardia
nel tuo codice insistono 2 grossi problemi,

1 - la logica é molto confusa, dovresti disegnare il "diagramma di flusso" dell'applicazione in modo da avere chiari gli step che devono essere eseguiti ed la loro sequenza

2 - il codice sottostante consente la perdita dei messaggi, perchè possono essere memorizzati con la stessa chiave, per chiarezza in un minuto posso inserire molti messaggi, l'ultimo sovrascrive i precedenti nel minuto

PHP:
$time = date("h:i A");

$msg[$data . ", " . $time] = $msg1;
 
Discussioni simili
Autore Titolo Forum Risposte Data
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
F [PHP] Problema con array multidimensionale PHP 4
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
R [PHP] Problema stampa array bidimensionali con formula $html.=<<<myHtml... PHP 2
S problema con gli array in javascript Javascript 12
C Problema con creazione array PHP 7
V Problema con array PHP 8
neo996sps PHP/MySQL - Problema con generazione array PHP 14
L problema array con le sessioni PHP 1
F Problema formattazione data e creazione array con nuove date Javascript 2
F problema Json con Array jQuery 1
S Problema con inserire la select in un array PHP 2
E Problema con array multipli Javascript 1
S Problema con 2 funzioni:array,select dinamica Javascript 21
P Problema con array e foreach PHP 15
L Problema con un array e il $$ PHP 2
F Problema urgente con checkbox, array e explode PHP 10
S Problema con fwrite e array PHP 3
F Problema con array multidimensionali Flash 0
N Problema con array multidimensionali PHP 0
minatore problema con gli array PHP 5
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1

Discussioni simili