Inserrimento/modifica php e mysql

  • Creatore Discussione Creatore Discussione djmatto
  • Data di inizio Data di inizio
però perchè se commento la parte che mi hai dato tu il form mi compare?Non dovrebbe dare ugualmente problemi?
Il form nel vecchio metodo html si fa inserendolo sempre nella stessa pagina inserisci.php o lo devo fare su una pagina a parte?

Grazie infinite per l'enorme aiuto che mi stai dando se riesco a finirlo ti ergo una statua a cavallo:fonzie:
 
ciao
puoi metterlo nella stessa pagina


?>
<form action="<?php $_SERVER['PHO_SELF'] ?> metod....

</form>
<?php
se ti serva altro php



p.s.
non so quanto riesco a rispomderti ho dei problemi sull'adsl
che va e viene
 
Ultima modifica:
Senti io alla fine ho
PHP:
else
{
    echo <<<MODULO__QUERY
    <h2>Prenotazioni posti ristorante</h2>
    <form action="$_SERVER[PHP_SELF]" method="POST">
e lo sostituisto semplicemente con:
PHP:
else
{
    <h2>Prenotazioni posti ristorante</h2>
    <form action="$_SERVER[PHP_SELF]" method="POST">

perchè così non funziona

PS: naturalmente il ModuleQuery l'ho eliminato anche alla fine!
 
perche per avere htm devi uscire da php e rientrare in php dopo il form e poi chiuderlo nuovamente
<?php

//tutto quello che hai prima del form

else
{
?>
<h2>Prenotazioni posti ristorante</h2>
<form action=<?php "$_SERVER[PHP_SELF] ?>" method="POST">
tutti gli imput che tiservono
</form>
<?php
}//chiusura dell'else


?>

p.s.
al posto di <?php "$_SERVER[PHP_SELF] ?>" puoi mettere il nome della pagina stessa
es. action="mia_pagina.php"

usualmente si usa $_SERVER se stai nella stessa pagina così se gli cambi il nome non devi preuccuparti
 
Non va uguale

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
        <title>Prenotazione posti ristorante</title>
    </head>
<body>

<h1>cazzo1</h1>
<?php
include('alcuneFunzioni.php');
include('funzioniConnessione.php');

function ControlloEmail($email){
	$result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email);
	if($result == false){
		return false;
	}else{
		return true;
	}
}

?>

<?php
if(isset($_POST['giorno']))
{
    $messaggio = "";
    if(!soloCifre($_POST['giorno'], 2))
    {
        $messaggio = "Il giorno deve essere di due cifre";
        echo "    <strong>$messaggio</strong>\n";
    }
    else
    {
        $connessione = connetti();
             $nome=$_POST['nome'];
	         $cognome=$_POST['cognome'];
	         $email=$_POST['email'];
	         $giorno=$_POST['giorno';]
	         $mese=$_POST['mese'];
	         $posti=$_POST['posti'];
	         //qui verifichi i dati immessi se sono giusti
	         var_dump($nome); 
	         echo "<br>";
	         var_dump($cognome); 
	         echo "<br>";
	         var_dump($email); 
	         echo "<br>";
	         var_dump($giorno); 
	         echo "<br>";
	         var_dump($mese); 
	         echo "<br>";
	         var_dump($posti); 
	         echo "<br>";
	         //fine verifica dati immessi


	        $query = "INSERT INTO prenotazioni SET (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')"; 

	        $risultato = mysqli_query($connessione, $query) //verifiva se va prima query o connessione secondo me query
	            or die("operazione di inserimento errata<br>\nErrore: ".mysqli_error($connessione)); 
	         var_dump($risultato); //se FALSE non inserito
	        echo "<br>";

	        $numInseriti = mysqli_affected_rows($risultato); 

	        $query = "SELECT posti FROM disponibilita WHERE giorno = '12 Marzo'";  
	        $risultato = mysql_query($connessione, $query);  
	        var_dump($risultato); //se FALSE non letto
	        echo "<br>";
	        $row = mysql_fetch_array($risultato);
	        $posti_prima_di_prenotazione = $row['posti'];

	        var_dump($posti_prima_di_prenotazione); //verifica posti prima
	        echo "<br>";
	        $posti_dopo_prenotazione = (int)$posti_prima_di_prenotazione - (int)$posti;    
	        var_dump($posti_dopo_prenotazione); //verifichi il cacolo dovrebbe darti tipo variabile = INT 
	        echo "<br>";
	        $query = "UPDATE disponibilita SET posti = '$posti_dopo_prenotazione' WHERE giorno = '".$giorno."' AND mese = '".$mese."'"; 
	        var_dump($query);//vedi se la query è giusta 
	        echo "<br>";
	        $uppa=mysql_query($connessione, $query); 
	        var_dump($uppa);// se da FALSE hia un errrore e non uppa 
	        echo "<br>";
		
        if($numInseriti > 0 )
            echo "sono stati inseriti $numInseriti record\n";
        else
            echo "NESSUN RECORD INSERITO\n";
    }
    echo "<hr><a href=\"$_SERVER[PHP_SELF]\">torna alla pagina inserimento</a>\n";*/
}

else
{
	?>
    <h2>Prenotazioni posti ristorante</h2>
    <form action="$_SERVER[PHP_SELF]" method="POST">
    <table border="0" cellpadding="5">

        <tr>
            <td>nome:</td>
            <td><input type="text" size="30" name="nome"/></td>
        </tr>
        <tr>
            <td>cognome:</td>
            <td><input type="text" size="30" name="cognome"/></td>
        </tr>
		<tr>
            <td>email:</td>
            <td><input type="text" size="30" name="email"/></td>
        </tr>
		<tr>
            <td>giorno (solo giorno):</td>
            <td><input type="text" size="2" name="giorno"/></td>
        </tr>
		<tr>
            <td>mese:</td>
            <td><input type="text" size="10" name="mese"/></td>
        </tr>
		<tr>
            <td>Posti:</td>
            <td><input type="text" size="2" name="posti"/></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="inserisci"></td>
        </tr>
    </table>
    </form>
  <?php  
}
	?>

<hr><a href="index.html">torna alla pagina di gestione tabella</a>
</body>
</html>
 
ho notato <h1> all'inizio (quello funzia?)

guarda che nel form $_SERVER..ecc..
devi racchiuderlo in php in quanto se non lo chiudi non viene interpretato come codice php

action="<?php $_SERVER[PHP_SELF] ?>"
 
Ultima modifica:
ciao
alla riga 40
correggi $_POST['giorno';] in $_POST['giorno'];
alla riga 92
echo "<hr><a href=\"$_SERVER[PHP_SELF]\">torna alla pagina inserimento</a>\n";*/
elimina */ alla fine

ho provato lo script in locale e salvo gli errori logici degli include e della connessione che non ho per il resto funzia
 
copia quasto scrit in una pag php con nome diverso e provala, ho commentato tutti cli include/funzioni e riferimento al db e messo dei valori fittizi ai dati che avrebbero dovuto essere presi dal db.
guardale e studiale perche funzia

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"> 
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 
        <title>Prenotazione posti ristorante</title> 
    </head> 
<body> 

<h1>cazzo1</h1> 
<?php 
//include('alcuneFunzioni.php'); 
//include('funzioniConnessione.php'); 

function ControlloEmail($email){ 
    $result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email); 
    if($result == false){ 
        return false; 
    }else{ 
        return true; 
    } 
} 

?> 

<?php 
if(isset($_POST['giorno'])) 
{ 
    $messaggio = ""; 
    if(strlen($_POST['giorno']<2)) 
    { 
        $messaggio = "Il giorno deve essere di due cifre"; 
        echo "    <strong>$messaggio</strong>\n"; 
    } 
    else 
    { 
        //$connessione = connetti(); 
             $nome=$_POST['nome']; 
             $cognome=$_POST['cognome']; 
             $email=$_POST['email']; 
             $giorno=$_POST['giorno'] ;
             $mese=$_POST['mese']; 
             $posti=$_POST['posti']; 
             //qui verifichi i dati immessi se sono giusti 
             var_dump($nome);  
             echo "<br>"; 
             var_dump($cognome);  
             echo "<br>"; 
             var_dump($email);  
             echo "<br>"; 
             var_dump($giorno);  
             echo "<br>"; 
             var_dump($mese);  
             echo "<br>"; 
             var_dump($posti);  
             echo "<br>"; 
             //fine verifica dati immessi 

/*
            $query = "INSERT INTO prenotazioni SET (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')";  

            $risultato = mysqli_query($connessione, $query) //verifiva se va prima query o connessione secondo me query 
                or die("operazione di inserimento errata<br>\nErrore: ".mysqli_error($connessione));  
             var_dump($risultato); //se FALSE non inserito 
            echo "<br>"; 
*/
            $numInseriti = 5;//mysqli_affected_rows($risultato);  
/*
            $query = "SELECT posti FROM disponibilita WHERE giorno = '12 Marzo'";   
            $risultato = mysql_query($connessione, $query);   
            var_dump($risultato); //se FALSE non letto 
            echo "<br>"; 
            $row = mysql_fetch_array($risultato); 
*/
            $posti_prima_di_prenotazione = 8;//$row['posti']; 

            var_dump($posti_prima_di_prenotazione); //verifica posti prima 
            echo "<br>"; 
            $posti_dopo_prenotazione = (int)$posti_prima_di_prenotazione - (int)$posti;     
            var_dump($posti_dopo_prenotazione); //verifichi il cacolo dovrebbe darti tipo variabile = INT  
            echo "<br>"; 
/*
            $query = "UPDATE disponibilita SET posti = '$posti_dopo_prenotazione' WHERE giorno = '".$giorno."' AND mese = '".$mese."'";  
            var_dump($query);//vedi se la query è giusta  
            echo "<br>"; 
            $uppa=mysql_query($connessione, $query);  
            var_dump($uppa);// se da FALSE hia un errrore e non uppa  
            echo "<br>"; 
 */
        if($numInseriti > 0 ) 
            echo "sono stati inseriti $numInseriti record\n"; 
        else 
            echo "NESSUN RECORD INSERITO\n"; 
    } 
    echo "<hr><a href=\"$_SERVER[PHP_SELF]\">torna alla pagina inserimento</a>\n";
} 

else 
{ 
    ?> 
    <h2>Prenotazioni posti ristorante</h2> 
    <form action="<?php $_SERVER['PHP_SELF'] ?>"  method="POST"> 
    <table border="0" cellpadding="5"> 

        <tr> 
            <td>nome:</td> 
            <td><input type="text" size="30" name="nome"/></td> 
        </tr> 
        <tr> 
            <td>cognome:</td> 
            <td><input type="text" size="30" name="cognome"/></td> 
        </tr> 
        <tr> 
            <td>email:</td> 
            <td><input type="text" size="30" name="email"/></td> 
        </tr> 
        <tr> 
            <td>giorno (solo giorno):</td> 
            <td><input type="text" size="2" name="giorno"/></td> 
        </tr> 
        <tr> 
            <td>mese:</td> 
            <td><input type="text" size="10" name="mese"/></td> 
        </tr> 
        <tr> 
            <td>Posti:</td> 
            <td><input type="text" size="2" name="posti"/></td> 
        </tr> 
        <tr> 
            <td colspan="2" align="center"><input type="submit" value="inserisci"></td> 
        </tr> 
    </table> 
    </form> 
  <?php   
} 
    ?> 

<hr><a href="index.html">torna alla pagina di gestione tabella</a> 
</body> 
</html>

vedrai i var dump che stampano i valori che immetti nel form
 
grazie infinite ora va però mi restituisce:
string(4) "Luca"
string(5) "Rossi"
string(14) "blu@hotmail.it"
string(2) "12"
string(5) "marzo"
string(1) "3"
operazione di inserimento errata
Errore: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(nome, cognome, email, giorno, mese, posti) VALUES ('Luca', 'Rossi','blu@hotmail' at line 1
 
hai ragione (io non vedo le query e quindi non me ne ero accorto)
correggi la riga

$query = "INSERT INTO prenotazioni SET (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')";

in

$query = "INSERT INTO prenotazioni (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')";

classico errore di copia incolla
 
Ok grazie però ora mi da:

string(4) "Luca"
string(5) "Rossi"
string(14) "blu@hotmail.it"
string(2) "12"
string(5) "marzo"
string(1) "3"
bool(true)
bool(false)
NULL
int(-3)
string(76) "UPDATE disponibilita SET posti = '-3' WHERE giorno = '12' AND mese = 'marzo'"
bool(false)
NESSUN RECORD INSERITO

ma nella tabella prenotazioni inserisce i campi ma nella disponibilità non li scala
 
ciao
non mi ero dimenticato, ma sono stato isolato sino a stamattina, ora "sembrerebbe" che l'adsl funzioni

sembrerebbe ch ci fosse un errorre nella seconda query (bool= false)

inserisci un
var_dump($query);
echo "<br>";

sudito dopo la $qury="SELECT....
e guarda cosa ti da
 
Il risultato è:

string(4) "Luca"
string(8) "Buffetti"
string(14) "blu@hotmail.it"
string(2) "12"
string(5) "marzo"
NULL
operazione di inserimento errata
Errore:

e l'ho inserito qui:

PHP:
	        $query = "INSERT INTO prenotazioni (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')"; 

	        $risultato = mysql_query($connessione, $query) //verifiva se va prima query o connessione secondo me query
	            or die("operazione di inserimento errata<br>\nErrore: ".mysql_error($connessione)); 
	         var_dump($risultato); //se FALSE non inserito
	        echo "<br>";
 
Ultima modifica:
ciao
mi sembrava di avertelo gia detto (se no scusa)
togli quel SET
$query = "INSERT INTO prenotazioni SET (nome, cognome, email, giorno....
 
ciao la query di insert

PHP:
 $query = "INSERT INTO prenotazioni (nome, cognome, email, giorno, mese, posti) VALUES ('".$nome."', '".$cognome."','".$email."', '".$giorno."', '".$mese."', '".$posti."')";

mi sembra scitta giusta
l'unica cosa che non vedo (nei var_dump che mi hai postato) è il numero dei posti (hai tolto il var_dump?)

fai una verifica dell'ortografia tra i nomi della tabella e campi e quello che hai scritto nella query
 
controlla anche la query

PHP:
$query = "SELECT posti FROM disponibilita WHERE giorno = '12 Marzo'";

che secondo me dovrebbe essere

PHP:
$query = "SELECT posti FROM disponibilita WHERE giorno = '12' AND mese='marzo'";

ed al posto di 12 e marzo dovresti mettere i valori di $_POST

facciamo così: fai le correzioni e mi riposti tutto lo script come l'hai modificato
 
Senti a me sembra tutto giusto, ora, ho cambiato l'ultimo posti del form che era scritto maiuscolo ma ora scrive:
string(4) "Luca"
string(8) "Buffetti"
string(14) "blu@hotmail.it"
string(2) "12"
string(5) "marzo"
string(1) "3"
operazione di inserimento errata
Errore:
 
ciao
anche a me sembrerebbe giusto, ma evidentemente c'è un errore nell'INSERT, riverifica esattamente, basta una "cacatella" fuori posto che non funzia (un apice messo male ad es.).
prova a postarmi le caratteristiche delle tabelle con relativi campi
 

Discussioni simili