Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17

    Problema con pulsante radio ed eliminazione riga.

    Ciao a tutti ho bisogno di aiuto per il codice che ho postato.


    Il codice nel contesto fa egregiamente il suo lavoro per l’eliminazione delle righe in base alla ricerca della prima parte del testo.
    In pratica se il testo contiene ad esempio:

    Arancia,aaa,rrr

    il programma ricerca la parola > Arancia < e da qui viene eliminata tutta la riga contenete la suddetta parola.
    Fino a qui tutto ok. L'eliminazione della riga viene effettuata tramite pulsante radio posto accanto alla riga.
    Una volta selezionata premendo l'apposito pulsante posto in basso, si elimina.

    Il MALFUNZIONAMENTO avviene solo quando si elimina l'ultima riga, o meglio la riga viene eliminata regolarmente e correttamente, ma rimane il pulsante radio anche se a sinistra non è più presente la riga effettivamente eliminata.

    Personalmente ho il dubbio che sia un problema di php versione 8.
    Prima di chiedere il vostro aiuto ho ribaltato una trentina di volte il codice, ma il risultato è sempre lo stesso, eliminazione ok, ma pulsante radio solo per l'ultimo elemento sempre presente anche dopo il delete.

    Perché succede questo?
    Come si può ovviare all'inconveniente?
    Grazie in anticipo.

    Il codice seguente è solo una piccola parte di un progetto più complesso.
    Il file deve avere come nome ---> prova.php
    codice:
    <!DOCTYPE HTML>
    <html lang="it">
        <head>
            <title>selezione - elimina - aggiungi</title>
            <style>
            table {
              font-family: verdana, sans-serif;
              /* border-collapse: collapse; */
              text-align: center;
              width: 450px;
              border: 1px solid black;
              td {
                border: 1px solid #dddddd;
                text-align: center;
                padding: 8px;
              }
              .styled {
              --width: 150px;
              --height: calc(var(--width) / 5);
              width: var(--width);
              height: var(--height);
              position: relative;
              display: inline-block;
              border: 0;
              padding: 0 15px;
              font-size: 15px;
              text-align: center;
              color: #fff;
              background-color: rgba(0, 0, 0, 1);
              }
            }
            </style>
        </head>
        <?php
        if(isset($_POST["delete_data"])){
            $filename = "data.txt";
            $riga = $_POST['delete'];
            $delete = $riga;
            $divider = explode(",", $riga);    // questa istruzione serve per prendere solo il primo elemento contenente il nome
            $delete = $divider[0];            // altrimenti non funziona correttamente
                if ($delete != "")  {         // Controlla se la stringa è vuota
                    eliminaLinea($filename,$delete);
                }
        }
        function eliminaLinea($file,$string)
        {
            // echo "-----a------";
            $i = 0; $j = 0; $array = array();
            $i = 0; $array = array();
        
            $read = fopen($file, "r") or die("can't open the file");
            while(!feof($read)) {
                $array[$i] = fgets($read);    
                // echo $array[$i]; echo "<br>";
                ++$i;    
            }
            // print '<pre>';        // Stampa gli array
            // print_r($array);
            // print '</pre>';
            fclose($read);
            echo "<br>";
            
            $write = fopen($file, "w") or die("can't open the file");
            foreach($array as $a) {
                if(!strstr($a,$string)) {
                    fwrite($write,$a);
                    // echo $a; echo "<br>";
                }
                 // echo $write; echo "<br>"; // questo stampa ---> Resource id #
            }
            // print '<pre>';        // Stampa gli array
            // print_r($array);
            // print '</pre>';
            fclose($write);
            }
        ?>
            
        <body>    
            <form action="prova.php" method="post">    
                <table>
                    <th style="width:70%">Dato da eliminare</th>
                    <th style="width:30%" >Seleziona</th>
                        <?php 
                        $f = @fopen('data.txt', 'r');
                        while(@!feof($f)){ 
                        $riga = fgets($f); 
                        // print '<pre>';        // Stampa gli array
                        // print_r($riga);
                        // print '</pre>';
                        ?>
                        <tr>
                            <td><?php echo $riga; ?>
                            </td> 
                            <td><input type="radio" name="delete" value="<?php echo $riga; ?>">
                            </td> 
                        </tr>
                        <?php    
                        }
                        ?>
                    <tr>
                        <td>
                            <input class="favorite styled" type="submit" name="delete_data" value="Elimina riga">
                        </td>
                        <td>
                        </td>
                    </tr>
                </table>
            </form>
        </body>
    </html>

    file di testo deve avere come nome ---> data.txt
    Il formato del teso deve essere così con il ritorno a capo per ogni riga, ogni riga ha come separatore la virgola.
    codice:
    Pesca,ppp,eee
    Arancia,aaa,rrr
    Mela,mmm,eee
    Susina.sss,uuu
    Albicocca,aaa,lll
    Anguria,aaa,nnn
    Frutto della passione.fff,rrr
    Pera.ppp,eee
    Ultima modifica di patdepri; 23-03-2024 a 22:42

  2. #2
    Non è un problema di PHP, è il tuo codice.

    Controlla che $riga non sia vuota prima di visualizzare il radio.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Controlla che $riga non sia vuota prima di visualizzare il radio.
    Grazie mile per il suggerimento, non ci avevo proprio pensato. Ho ribaltato più di una volta il codice senza riuscirci, ma non mi era passata, neanche per l'anticamera del cervello, questa soluzione che ho provato e funziona.
    Codice PHP:
    <?php
                      $f 
    = @fopen('data.txt''r');
                        while(@!
    feof($f)){ 
                        
    $riga fgets($f); 
                        
    // print '<pre>';        // Stampa gli array
                        // print_r($riga);
                        // print '</pre>';
                            
    if ($riga != ''){
                            
    ?>
                            <tr>
                                <td><?php echo $riga?>
                                </td> 
                                <td><input type="radio" name="delete" value="<?php echo $riga?>">
                                </td> 
                            </tr>
                            <?php
                            
    }    
                        }
                        
    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Non è un problema di PHP, è il tuo codice.

    Controlla che $riga non sia vuota prima di visualizzare il radio.
    in effetti è stata risolta la visualizzazione, ma non per quello che riguarda il file registrato. Infatti aprendo il file vedo che a furia di usare il codice si riempie di parecchi ritorni a capo che per il mio impiego risultano un problema significativo.
    Qualche idea, suggerimento per come risolverlo? Grazie.
    Ultima modifica di patdepri; 25-03-2024 a 18:05

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.