Undefined index

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
Ciao a tutti, ho iniziato da poco a lavorare come programmatore web e dopo qualche pagina di codici, sono inciampato in alcuni errori, il progetto che sto creando, richiede l'inserimento di dati in una tabella sql da php.
Parto col dire che il codice mi permette tranquillamente di inserire i vari dati nel database, solo che sia quando apro la pagina web, che quando la ricarico, aggiunge dei dati (ovviamente vuoti) alla tabella e inoltre mi esce il messaggio "Undefined index", per tutte le variabili dichiarate prima della query.

Il codice è il seguente: (la pagina l'ho chiamata ordine.php)

PHP:
<html>
    <head>
        <link rel="stylesheet" href="./css/ordine.css">
        <title>Ordine</title>
    </head>

    <body>
        <table align="center">
            <form method="POST" action="<?php echo$_SERVER['PHP_SELF']?>">
            <tr>
                <td align="center">Effettua un nuovo ordine</td>
            </tr>
            <tr>
                <!--raccolgo i dati del cliente-->
                <table align="center">
                        <tr>   
                            <td><label>Nome</label><input type="text" name="nome" placeholder="Giorgio" required></td>
                            <td><label>Cognome</label><input type="text" name="cogn" placeholder="Rossi" required></td>
                            <td><label>Soprannome</label><input type="text" name="sopr" placeholder="Gio"></td>
                            <td><label>Telefono</label><input type="tel" name="tele" placeholder="381 529 3590" pattern="[0-9]{3}[0-9]{3}[0-9]{4}"></td>
                        </tr>
                </table>

            <br>

                <!--raccolgo i dati del modello-->
                <table align="center">
                        <tr>
                            <td><label>Modello</label><input type="text" name="5" placeholder="10m" required></td>
                            <td><label>Lunghezza/cm</label><input type="number" name="6" placeholder="110,00" required></td>
                            <td><label>Larghezza/cm</label><input type="number" name="7" placeholder="45,89" required></td>
                            <td><label>Quantita</label><input type="number" name="8" placeholder="5" required></td>
                        </tr>
                </table>

            <br>

                <!--raccolgo i dati della versione-->
                <table align="center">
                        <tr>
                            <td><label>Versione</label><input type="text" name="versio" placeholder="123v" required></td>
                            <td><label>Lunghezza/cm</label><input type="number" name="lungh_v" placeholder="110,00" required></td>
                            <td><label>Larghezza/cm</label><input type="number" name="largh_v" placeholder="45,89" required></td>
                            <td><label>Quantita</label><input type="number" name="qtta_v" placeholder="5" required></td>
                        </tr>
                </table>
            </tr>
                <button onclick="submit" name="invia">Submit</button>
            </form>
        </table>

<!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->

    <?php

        require_once('./php/config.php');

        //Undefined index è relativo ai 4 campi inseriti qui sotto dopo il post
        $nom = $_POST['nome'];
        $cog = $_POST['cogn'];
        $sop = $_POST['sopr'];
        $tel = $_POST['tele'];


        $sql = "INSERT INTO ordine(nome, cognome, soprannome, telefono)
                VALUES('$nom', '$cog', '$sop', '$tel')";

        $result = mysqli_query($conn, $sql);

        if (isset($_POST[invia])) {
            echo "<script>alert('Ordine effettuato con successo!!')</script>";
        }else{
            echo "<script>alert('Errore')</script>";
        }
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
lo script php é inserito nello stesso file html,
come lo hai inserito viene eseguito sempre ogni volta che apri la pagina o la ricarichi,
con un opportuno controllo ( if (!empty($_POST)) dovresti eseguire lo script php solo quando $_POST restituisce valori dal form

credo anche che non sia lecito assegnare nomi che iniziano e siano solo numeri, tipo
name="5"

correggi e se non hai risolto riposta il nuovo problema
 
Ultima modifica:

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
lo script php é inserito nello stesso file html,
come lo hai inserito viene eseguito sempre ogni volta che apri la pagina o la ricarichi,
con un opportuno controllo ( if (!empty($_POST)) dovresti eseguire lo script php solo quando $_POST restituisce valori dal form

credo anche che non sia lecito assegnare nomi che iniziano e siano solo numeri, tipo
name="5"

correggi e se non hai risolto riposta il nuovo problema
Ciao Marino, ti ringrazio per il consiglio, l'ho sfruttato e funziona correttamente, ad ogni modo vorrei chiederti, io ho separato la parte php dall'html in due pagine diverse, come posso fare per unirle in un unica pagina senza che si ricrei quell'errore? poi, come faccio ad eliminare una riga dalla tabella mysql, mettendo un bottone nello script html?
 

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
Ciao Marino, ti ringrazio per il consiglio, l'ho sfruttato e funziona correttamente, ad ogni modo vorrei chiederti, io ho separato la parte php dall'html in due pagine diverse, come posso fare per unirle in un unica pagina senza che si ricrei quell'errore? poi, come faccio ad eliminare una riga dalla tabella mysql, mettendo un bottone nello script html?
per meglio dire, come faccio ad evitare che cancellando la tabella 2 (ad esempio), la tabella successiva diventi appunto la 2?
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ho ripreso il tuo codice commentando alcune righe per provarlo,
puoi eseguire anche tu il codice prima di fare modifiche
poi togli i miei commenti e lo rendi operativo

PHP:
<?php
if (!empty($_POST)){

    // require_once('./php/config.php');

    $nom = $_POST['nome'];
    $cog = $_POST['cogn'];
    $sop = $_POST['sopr'];
    $tel = $_POST['tele'];

    $sql = "INSERT INTO ordine(nome, cognome, soprannome, telefono) VALUES('$nom', '$cog', '$sop', '$tel')";
    $result = 1;    // $result = mysqli_query($conn, $sql);

    if (!empty($result)) {
        echo "<script>alert('Ordine effettuato con successo!!')</script>";
    }else{
        echo "<script>alert('Errore')</script>";
    }
}
?>
<html>
<head>
<link rel="stylesheet" href="./css/ordine.css">
<title>Ordine</title>
</head>
<body>
<table align="center">
<form method="POST" action="<?php echo$_SERVER['PHP_SELF']?>">
<tr>
<td align="center">Effettua un nuovo ordine</td>
</tr>
<tr>
<!--raccolgo i dati del cliente-->
<table align="center">
<tr>
<td><label>Nome</label><input type="text" name="nome" placeholder="Giorgio" required></td>
<td><label>Cognome</label><input type="text" name="cogn" placeholder="Rossi" required></td>
<td><label>Soprannome</label><input type="text" name="sopr" placeholder="Gio"></td>
<td><label>Telefono</label><input type="tel" name="tele" placeholder="381 529 3590" pattern="[0-9]{3}[0-9]{3}[0-9]{4}"></td>
</tr>
</table>
<br>
<!--raccolgo i dati del modello-->
<table align="center">
<tr>
<td><label>Modello</label><input type="text" name="5" placeholder="10m" required></td>
<td><label>Lunghezza/cm</label><input type="number" name="6" placeholder="110,00" required></td>
<td><label>Larghezza/cm</label><input type="number" name="7" placeholder="45,89" required></td>
<td><label>Quantita</label><input type="number" name="8" placeholder="5" required></td>
</tr>
</table>
<br>
<!--raccolgo i dati della versione-->
<table align="center">
<tr>
<td><label>Versione</label><input type="text" name="versio" placeholder="123v" required></td>
<td><label>Lunghezza/cm</label><input type="number" name="lungh_v" placeholder="110,00" required></td>
<td><label>Larghezza/cm</label><input type="number" name="largh_v" placeholder="45,89" required></td>
<td><label>Quantita</label><input type="number" name="qtta_v" placeholder="5" required></td>
</tr>
</table>
<button onclick="submit" name="invia">Submit</button>
</form>
</body>
</html>
 

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
ho ripreso il tuo codice commentando alcune righe per provarlo,
puoi eseguire anche tu il codice prima di fare modifiche
poi togli i miei commenti e lo rendi operativo

PHP:
<?php
if (!empty($_POST)){

    // require_once('./php/config.php');

    $nom = $_POST['nome'];
    $cog = $_POST['cogn'];
    $sop = $_POST['sopr'];
    $tel = $_POST['tele'];

    $sql = "INSERT INTO ordine(nome, cognome, soprannome, telefono) VALUES('$nom', '$cog', '$sop', '$tel')";
    $result = 1;    // $result = mysqli_query($conn, $sql);

    if (!empty($result)) {
        echo "<script>alert('Ordine effettuato con successo!!')</script>";
    }else{
        echo "<script>alert('Errore')</script>";
    }
}
?>
<html>
<head>
<link rel="stylesheet" href="./css/ordine.css">
<title>Ordine</title>
</head>
<body>
<table align="center">
<form method="POST" action="<?php echo$_SERVER['PHP_SELF']?>">
<tr>
<td align="center">Effettua un nuovo ordine</td>
</tr>
<tr>
<!--raccolgo i dati del cliente-->
<table align="center">
<tr>
<td><label>Nome</label><input type="text" name="nome" placeholder="Giorgio" required></td>
<td><label>Cognome</label><input type="text" name="cogn" placeholder="Rossi" required></td>
<td><label>Soprannome</label><input type="text" name="sopr" placeholder="Gio"></td>
<td><label>Telefono</label><input type="tel" name="tele" placeholder="381 529 3590" pattern="[0-9]{3}[0-9]{3}[0-9]{4}"></td>
</tr>
</table>
<br>
<!--raccolgo i dati del modello-->
<table align="center">
<tr>
<td><label>Modello</label><input type="text" name="5" placeholder="10m" required></td>
<td><label>Lunghezza/cm</label><input type="number" name="6" placeholder="110,00" required></td>
<td><label>Larghezza/cm</label><input type="number" name="7" placeholder="45,89" required></td>
<td><label>Quantita</label><input type="number" name="8" placeholder="5" required></td>
</tr>
</table>
<br>
<!--raccolgo i dati della versione-->
<table align="center">
<tr>
<td><label>Versione</label><input type="text" name="versio" placeholder="123v" required></td>
<td><label>Lunghezza/cm</label><input type="number" name="lungh_v" placeholder="110,00" required></td>
<td><label>Larghezza/cm</label><input type="number" name="largh_v" placeholder="45,89" required></td>
<td><label>Quantita</label><input type="number" name="qtta_v" placeholder="5" required></td>
</tr>
</table>
<button onclick="submit" name="invia">Submit</button>
</form>
</body>
</html>
Ciao Marino, ho appena aggiunto ciò che mi hai mandato, al vecchio codice che ha alcune modifiche rispetto a prima, ora non mi da più alcun errore durante l'inserimento dei dati, però non carica più nulla nella tabella, e se provo a ricaricare novamente la pagina, mi torna l'alert dell'ordine effettuato con successo però ovviamente privo di dati nella tabella, ti mando lo script completo così puoi verificare tu stesso:

PHP:
<?php   
    require_once('./php/config.php');

    if (!empty($_POST)) {

    //campi relativi all'ordine
    $id_c = $_POST['cliente'  ];
    $mode = $_POST['modello'  ];
    $vers = $_POST['versione' ];
    $lung = $_POST['lunghezza'];
    $larg = $_POST['larghezza'];
    $qtta = $_POST['quantita' ];

    //inserisco i dati nel database
    $sql = "INSERT INTO ordine (id_c, modello, versione, lunghezza, larghezza, quantita)
            VALUES('$id_c', '$mode', '$vers', '$lung', '$larg', '$qtta')";
    $result = 1;

        if(!empty($result)){
            echo "<script>alert('Ordine effettuato')</script>";
        }else{
            echo "<script>alert('Errore nella raccolta dati')</script>";
        }

    }
?>

<!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->

<html>
    <head>
        <link rel="stylesheet" href="./css/ordine.css">
        <title>Ordine</title>
    </head>

    <body>
        <table align="center">
            <form method="POST" action="<?php echo$_SERVER['PHP_SELF']?>">
            <tr>
                <td align="center">Effettua un nuovo ordine</td>
            </tr>
            <tr>
                <!--raccolgo i dati del cliente-->
                <table align="center">
                        <tr>   
                            <td><label>Cliente</label><input type="text" name="cliente" placeholder="01" required></td>
                            <td><label>Modello</label><input type="text" name="modello" placeholder="Poltrona" required></td>
                            <td><label>Versione</label><input type="text" name="versione" placeholder="3p" required></td>
                        </tr>

                        <br>

                        <tr>
                            <td><label>Lunghezza/cm</label><input type="number" name="lunghezza" placeholder="300" required></td>
                            <td><label>Larghezza/cm</label><input type="number" name="larghezza" placeholder="60" required></td>
                            <td><label>Quantita</label><input type="number" name="quantita" placeholder="3" required></td>
                        </tr>
                </table>
            </tr>
                <button onclick="submit" name="invia">Submit</button>
            </form>
        </table>

<!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->

<?php
  
    require_once('php/config.php'); 

    //visualizzo gli ordini in corso
    $sql1="SELECT id, id_c, modello, versione FROM ordine";

    $result1 = mysqli_query($conn, $sql1);

    echo "<h1 align='center'>Ordini in corso</h1>";
  
    //creo una tabella
    echo "<table border='1' align='center'>";

    echo "<th>N.Ordine</th>";
    echo "<th>Cliente</th>";
    echo "<th>Modello</th>";
    echo "<th>Versione</th>";

    //effettuo un controllo
    if(mysqli_num_rows($result1) > 0) {
    //estraggo i dati relativi ad ogni riga
    while($row1 = mysqli_fetch_assoc($result1)){

        echo "<tr>";
        echo "<td> $row1[id]       </td>";
        echo "<td> $row1[id_c]     </td>";
        echo "<td> $row1[modello]  </td>";
        echo "<td> $row1[versione] </td>";
        echo "</tr>";

        }
    }
    echo "</table>";

    //chiudo la connessione
    $conn->close();
?>   
    </body>
</html>
 
Ultima modifica di un moderatore:

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
Ciao Marino, ho appena aggiunto ciò che mi hai mandato, al vecchio codice che ha alcune modifiche rispetto a prima, ora non mi da più alcun errore durante l'inserimento dei dati, però non carica più nulla nella tabella, e se provo a ricaricare novamente la pagina, mi torna l'alert dell'ordine effettuato con successo però ovviamente privo di dati nella tabella, ti mando lo script completo così puoi verificare tu stesso:

<?php
require_once('./php/config.php');

if (!empty($_POST)) {

//campi relativi all'ordine
$id_c = $_POST['cliente' ];
$mode = $_POST['modello' ];
$vers = $_POST['versione' ];
$lung = $_POST['lunghezza'];
$larg = $_POST['larghezza'];
$qtta = $_POST['quantita' ];

//inserisco i dati nel database
$sql = "INSERT INTO ordine (id_c, modello, versione, lunghezza, larghezza, quantita)
VALUES('$id_c', '$mode', '$vers', '$lung', '$larg', '$qtta')";
$result = 1;

if(!empty($result)){
echo "<script>alert('Ordine effettuato')</script>";
}else{
echo "<script>alert('Errore nella raccolta dati')</script>";
}

}
?>

<!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->

<html>
<head>
<link rel="stylesheet" href="./css/ordine.css">
<title>Ordine</title>
</head>

<body>
<table align="center">
<form method="POST" action="<?php echo$_SERVER['PHP_SELF']?>">
<tr>
<td align="center">Effettua un nuovo ordine</td>
</tr>
<tr>
<!--raccolgo i dati del cliente-->
<table align="center">
<tr>
<td><label>Cliente</label><input type="text" name="cliente" placeholder="01" required></td>
<td><label>Modello</label><input type="text" name="modello" placeholder="Poltrona" required></td>
<td><label>Versione</label><input type="text" name="versione" placeholder="3p" required></td>
</tr>

<br>

<tr>
<td><label>Lunghezza/cm</label><input type="number" name="lunghezza" placeholder="300" required></td>
<td><label>Larghezza/cm</label><input type="number" name="larghezza" placeholder="60" required></td>
<td><label>Quantita</label><input type="number" name="quantita" placeholder="3" required></td>
</tr>
</table>
</tr>
<button onclick="submit" name="invia">Submit</button>
</form>
</table>

<!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->

<?php

require_once('php/config.php');

//visualizzo gli ordini in corso
$sql1="SELECT id, id_c, modello, versione FROM ordine";

$result1 = mysqli_query($conn, $sql1);

echo "<h1 align='center'>Ordini in corso</h1>";

//creo una tabella
echo "<table border='1' align='center'>";

echo "<th>N.Ordine</th>";
echo "<th>Cliente</th>";
echo "<th>Modello</th>";
echo "<th>Versione</th>";

//effettuo un controllo
if(mysqli_num_rows($result1) > 0) {
//estraggo i dati relativi ad ogni riga
while($row1 = mysqli_fetch_assoc($result1)){

echo "<tr>";
echo "<td> $row1[id] </td>";
echo "<td> $row1[id_c] </td>";
echo "<td> $row1[modello] </td>";
echo "<td> $row1[versione] </td>";
echo "</tr>";

}
}
echo "</table>";

//chiudo la connessione
$conn->close();
?>
</body>
</html>
nel secondo php, ci sono due id, uno è riferito all'id dell'ordine che ho impostato come auto incremento, invece l'altro (id_c), è l'id relativo al cliente
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
437
73
28
[MOD]
Salve Ghost, quando si posta del codice sul forum è opportuno utilizzare gli appositi strumenti disponibili nell'editor messaggi, così che il codice sia inserito nel modo corretto e risulti meglio leggibile per tutti. Avevo già corretto il tuo primo post e per il momento correggo anche quest'ultimo ma ti invito a prestare maggiore attenzione in futuro.
Grazie e buona continuazione.
 

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
[MOD]
Salve Ghost, quando si posta del codice sul forum è opportuno utilizzare gli appositi strumenti disponibili nell'editor messaggi, così che il codice sia inserito nel modo corretto e risulti meglio leggibile per tutti. Avevo già corretto il tuo primo post e per il momento correggo anche quest'ultimo ma ti invito a prestare maggiore attenzione in futuro.
Grazie e buona continuazione.
chiedo venia, solo che non ho ancora capito come fare, è possibile avere una spiegazione?
 

Ghost

Nuovo Utente
6 Feb 2023
8
1
3
nel secondo php, ci sono due id, uno è riferito all'id dell'ordine che ho impostato come auto incremento, invece l'altro (id_c), è l'id relativo al cliente
Ciao Marino, mi sono appena reso conto che stavo sbagliando la parte "importante" dello script, ovvero, dove in php chiedevo di inserire i dati nel database, in realtà dovevo estrarli, mi spiego meglio...dagli input presenti nella parte html, devo fare un ordine, con dei dati già presenti nel database, quindi immagino che nella parte php, io debba fare un controllo dell'esistenza di quei dati e di conseguenza, stamparli in output nella stessa pagina con l'altro codice che ho già pronto...e qui arriva il punto, come faccio a visualizzare i dati inseriti in un input e presenti nel db?
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Errore PHP - Notice: Undefined index ... PHP 14
K [PHP] Notice: Undefined index PHP 3
A [PHP] Undefined index dopo query dal server PHP 1
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
MilanMilan [PHP] Notice:Undefined index PHP 2
O Fatal error: Call to undefined function testNome() in C:\xampp\...\...\index.php on line 51 PHP 4
Shyson Notice: Undefined index ma non trovo l'errore PHP 8
S Notice: Undefined index: azione in PHP 6
J Problema con questo errore Error was: Undefined index: title linea 9 PHP 21
L problema con l'Undefined index per una $_GET PHP 6
P Notice: Undefined index: PHP 11
P radiobutton e index undefined PHP 4
L Notice: Undefined index in versione classe PHP 1
L Risolvere i problemi dei messaggi:-> Notice: Undefined index PHP 3
I Notice: Undefined index: utente in C: PHP 14
L Problema con Undefined index . PHP 1
N problemi con notice undefined index PHP 16
O Notice: Undefined index PHP 12
borgo italia Undefined index PHP 12
G Errore Cannot read property 'childNodes' of undefined per mancanza nodo nel file xml XML 6
C [PHP] Errore "Fatal error: Call to undefined function getTotalUsers()" PHP 2
M [RISOLTO] jQuery non funziona... valore "undefined" jQuery 2
A errore: Unable to get property 'inline' of undefined or null reference jQuery 1
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
L [PHP] risolvere problema Undefined variable PHP 0
G Fatal error: Uncaught Error: Call to undefined method UserController PHP 0
P Fatal error: Call to undefined method SMTP::setTimeout() PHP 4
L [risolto] Undefined variable: in programmazione oop PHP 12
V undefined variable error PHP 6
P Problema di Undefined variable nel codice PHP PHP 5
R Undefined offset in php PHP 29
M fatal error: Call to undefined function gdrcd_filter() PHP 6
C Variabile Undefined PHP 13
G Variabile undefined Javascript 5
F Fatal error: Call to undefined function PHP 9
L Fatal error: Call to undefined method Paging::listaPagine() PHP 2
S responseText undefined? Ajax 3
E Sys is undefined Ajax 1
L Notice: undefined constant PHP 3
P Undefined constant PHP 5
M errore Undefined variable sql_mode PHP 6
H Call to undefined function: oci_parse() PHP 0
L Fatal error: Call to undefined function virtual() in C:\Inetpub\wwwroot\... PHP 1
P Call to undefined function mysql_connect() PHP 2
B Valori Radio "undefined" Javascript 5
F Caricamento index rotto PHP 1
C Form email php su pagina index.html? PHP 21
Tommy03 Problema con z-index HTML e CSS 3
K La pagina index, si apre sul form e non al top page Javascript 0

Discussioni simili