Visualizzazione dei risultati da 1 a 9 su 9

Discussione: $_POST[$var]

  1. #1

    $_POST[$var]

    Salve a tutti. Sono nuovo in php e non riesco a risolvere questo problema. Nel mio database ho una tabella chiamata "massime" con due colonne, ovvero "id_max" con dentro un integer(11) contenente l'id, e "massima" contenente un varchar(1000), entrambe NOT NULL.
    Quello che voglio creare è un tool che visualizzi tutti i campi "massima" e permetta di modificarli. Questo è quello che ho creato fino ad ora ma non sembra funzionare.

    Prima di questo codice si trovano, racchiuse nei tag php, altre funzioni tra cui la connessione al databse mysql.
    Codice PHP:
    if (isset($_POST[$id])) {
        if (isset(
    $_POST['massima'])) {
            echo 
    $massima;
            
    $massima addslashes($_POST['massima']);
            }
            
    $edit "UPDATE massime SET massima = '$massima' WHERE id_max = '$id'";
            if (@
    mysql_query($edit) or die (mysql_error())) {
                echo 
    "Massima modificata con successo.";
            } 

    Questo si trova più in basso nell'html.
    Codice PHP:
    <?php 
    $sql 
    "SELECT * FROM massime ORDER BY id_max DESC";
    $query = @mysql_query($sql) or die (mysql_error());
    if(
    mysql_num_rows($query) > 0) {
        while(
    $row mysql_fetch_array($query)) {
            
    $massima stripslashes($row['massima']);
            
    $id $row['id_max'];
            echo 
    '<form action="admin.php" method="post">
                    <input type="text" value="'
    .$massima.'" name="massima">
                    <input type="submit" value="Modifica" name="'
    .$id.'">
                  </form>'
    ;
        }
    }
    ?>
    Non ho idea di come fare. Sembra che non mi legga il $_POST[$id] e suppongo ci sia anche qualcosa che non va nella query.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    il valore di $i lo dai solo dentro il while? o prima hai già assegnato un valore a questa variabile?
    se prima non hai assegnato nessun valore alla variabile semplicemente entra in else quando fai if(isset($_POST[$i]))...

    un'altra cosa... nel tuo form non vedo nussun submit ed stai creando un formulario per ogni valore di record presente in massime...
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    La prima volta che dichiaro $id è quella che vedi, ovvero
    $id = $row['id_max'];

    Il submit c'è:
    <input type="submit" value="Modifica" name="'.$id.'">

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    allora come t'ho detto prima... a quel punto $id non è stata ancora inizializzata quindi $_POST[$id] non esiste,

    non avevo il submit, ma sei sicuro di fare cosi tanti form?... se apri il form prima del while e lo chiudi dopo il while?...

    ---

    poi personalmente non trovo molto senso a if(isset($_POST[$id])), e tutti gli input hanno lo stesso nome, cosa che non dovrebbe accadere...
    Ultima modifica di minos88; 10-04-2014 a 21:52
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  5. #5
    Beh come ho detto sono nuovo di php, è l'unica cosa che mi è venuto in mente. Quello che tu suggerisci è di fare un while solo per l'input text? Non so in che modo inizializzare la variabile $id, con gli altri form non mi è capitato. Questo è il file completo.
    Codice PHP:
    <html>
    <head>
    <style>
    .adminform {display: none}
    #admin-pagine, #admin-articoli, #admin-massime {cursor: pointer}
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script> 
    $(document).ready(function(){
        $("#admin-pagine").click(function(){
            $(".adminform").hide();
            $("#addpg").show();
            $("#editpg").show();
        });
        $("#admin-articoli").click(function(){
            $(".adminform").hide();
            $("#addart").show();
            $("#editart").show();
        });
        $("#admin-massime").click(function(){
            $(".adminform").hide();
            $("#addmax").show();
            $("#editmax").show();
        });                               
    });
    </script> 
    </head>
    <body>
    <?php
    include 'config.php';

    echo 
    '<div style="width: 100%; background: lightgreen; height: 30px; font-weight: bold">';

    // Aggiungi pagina
    if (isset($_POST['addpg'])) {
    if (isset(
    $_POST['name'])) {$name addslashes($_POST['name']);}
    if (isset(
    $_POST['text'])) {$text addslashes($_POST['text']);}
    $query "INSERT INTO pagine (pg_name, pg_text) VALUES ('$name', '$text')";
        if (@
    mysql_query($query) or die (mysql_error()))
        {echo 
    "Pagina inserita con successo.";} 
    }

    // Aggiungi articolo
    if (isset($_POST['addart'])) {
    if (isset(
    $_POST['title'])) {$title addslashes($_POST['title']);}
    if (isset(
    $_POST['text'])) {$text addslashes($_POST['text']);}
    $query "INSERT INTO articoli (art_titolo, art_articolo, art_data) VALUES ('$title', '$text', now())";
        if (@
    mysql_query($query) or die (mysql_error()))
        {echo 
    "Articolo inserito con successo.";} 
    }

    // Aggiungi massima
    if (isset($_POST['addmax'])) {
    if (isset(
    $_POST['text'])) {$text addslashes($_POST['text']);}
    $query "INSERT INTO massime (massima) VALUES ('$text')";
        if (@
    mysql_query($query) or die (mysql_error()))
        {echo 
    "Massima inserita con successo.";} 
    }

    // Modifica massima
    if (isset($_POST[$id])) {
        echo 
    "Submit ricevuto. ";
        if (isset(
    $_POST['massima'])) {
            echo 
    $massima;
            
    $massima addslashes($_POST['massima']);
            }
            
    $edit "UPDATE massime SET massima = '$massima' WHERE id_max = '$id'";
            if (@
    mysql_query($edit) or die (mysql_error())) {
                echo 
    "Massima modificata con successo.";
            } 
    }
    else {echo 
    "Submit bloccato.";}

    echo 
    '</div>';

    ?>
    <table style="width: 100%; height: 100%">
    <tr>    
    <td style="width: 20%; text-align: center">
    <div id="admin-pagine">Pagine</div><br>
    <div id="admin-articoli">Articoli</div><br>
    <div id="admin-massime">Massime</div>
    </td>
        
    <td style="background: lightblue; width: 80%" align="center">
        
    <form action="admin.php" method="post" class="adminform" id="addpg">
    Nome pagina: <input type="text" name="name"><br>
    Testo: <input type="text" name="text"><br>
    <input name="addpg" type="submit" value="Invia">
    </form><br> 
    <div class="adminform" style="background: pink; width: 300px; height: 50px" id="editpg"></div>
        
    <form action="admin.php" method="post" class="adminform" id="addart">
    Titolo articolo: <input type="text" name="name"><br>
    Testo: <input type="text" name="text"><br>
    <input name="addart" type="submit" value="Invia">
    </form><br> 
    <div class="adminform" style="background: pink; width: 300px; height: 50px" id="editart"></div>
        
    <form action="admin.php" method="post" class="adminform" id="addmax">
    Massima: <input type="text" name="text"><br>
    <input name="addmax" type="submit" value="Invia">
    </form><br> 
    <div class="adminform" id="editmax">
    <?php 
    $sql 
    "SELECT * FROM massime ORDER BY id_max DESC";
    $query = @mysql_query($sql) or die (mysql_error());
    if(
    mysql_num_rows($query) > 0) {
        while(
    $row mysql_fetch_array($query)) {
            
    $massima stripslashes($row['massima']);
            
    $id $row['id_max'];
            echo 
    '<form action="admin.php" method="post">
                    <input type="text" value="'
    .$massima.'" name="massima">
                    <input type="submit" value="Modifica" name="'
    .$id.'">
                  </form>'
    ;
        }
    }
    ?>
    </div>
        
    </td>
    </tr>
    </table>
        
    </body>
    </html>

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    per prima cosa, $id al finire il ciclo while è settata con l'ultimo valore, quindi fare $_POST[$id] dopo il ciclo while non ha senso, poiché stai chiedendo solo se l'array $_POST con key $id ($id = ultimo valore) esiste, mettere l'if prima di inizializzare $id ha ancora meno senso, visto che $id non esiste non entrerà mai dentro l'if,

    allora vedendo un po' cos'hai fatto e ciò che vuoi ottenere, forse il modo più semplice è prima listare tutti i valori (tutte le massime), e solo dopo dare click sul classico edit, che ti porti ad un'altra pagina dove puoi editare questo campo (massima)
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  8. #8
    Ma se ci fai caso tutto quello che dici che non ha senso (perchè ancora non definito) non funziona a meno che non siano stati ricevuti i valori che tu dici dal form stesso. Non so se ci avevi fatto caso. Se non è stato cliccato il bottone "submit" non è previsto che succeda niente. Infatti c'è
    if (isset($_POST[$id]))
    Ovvero, se il bottone submit, che ha name="$id", non ha inviato le informazioni al file stesso, non succede nulla. Dopo che le ha ricevute esegue la query. Ho capito male o parlavi di questo?

  9. #9
    Ci sono riuscito! Ho creato un'altra variabile ausiliaria che contenesse l'$id e lo ricevesse tramite post dal form stesso, da un input invisibile con value="$id". Grazie mille per l'aiuto!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.