View Full Version : [HMTL+PHP] Richiamare funzione php da un form
¥º·RG·º¥
26-01-2014, 10:16
Ragazzi buongiorno, sono alle prime armi con HTML e PHP e ho trovato il mio primo inghippo che credo sia una sciocchezza ma non riesco a risolverlo. Vi spiego:
Io ho questa semplice funzione somma:
<?php
//definisco la funzione somma
function somma($a,$b) {
$c=$a+$b;
return $c;
echo "$c";
}
?>
e questo semplice form:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<form name="somma" action="somma.php" method="post" enctype="text/plain" target="due">
<fieldset>
<legend> Dati </legend> <br>
<label> a: <input type="text"></label>
<label> b: <input type="text"></label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
Il problema è questo: Quando vado ad inserire due numeri casuali nel form non mi ritrovo il risultato (somma) ma una semplice pagina bianca! Come devo fare per risolvere?? :)
http://www.html.it/pag/16695/le-variabili-get-e-post/
poi non so se c'è scritto nell'articolo (presumo di si) ma devi dare un nome ai tuoi campi input (e magari anche un id che ti può essere utile in futuro)
<input type="text" name="variabileA">
eviterei nomi troppo semplici che possono creare conflitti come "a" e "b" :)
¥º·RG·º¥
26-01-2014, 10:30
http://www.html.it/pag/16695/le-variabili-get-e-post/
poi non so se c'è scritto nell'articolo (presumo di si) ma devi dare un nome ai tuoi campi input (e magari anche un id che ti può essere utile in futuro)
<input type="text" name="variabileA">
eviterei nomi troppo semplici che possono creare conflitti come "a" e "b" :)
Grazie intanto per la veloce risposta :)...I nomi per ora li ho dati molto generici dato che sto solo provando un po se le cose fungono... Per il resto leggerò la guida che mi hai linkato e vedo se riesco a risolvere.... ti farò sapere ;)
Oltre a quello che ti ha scritto giustamente OoZic ti aggiungo questo, spero ti possa essere utile a capire meglio :)
<html>
<head>
</head>
<body>
<form name="somma" action="somma.php" method="post">
<fieldset>
<legend> Dati </legend>
<br>
<label> a:
<input type="text" name="a">
</label>
<label> b:
<input type="text" name="b">
</label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c = $a + $b;
echo "$c";
?>
Te l'ho modificato un pò alla veloce per farti capire qualche cosa in più (almeno spero).
L'html diventa così:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<form name="somma" action="somma.php" method="post">
<fieldset>
<legend> Dati </legend> <br>
<label> a: <input type="text" name="primoNumero"></label>
<label> b: <input type="text" name="secondoNumero"></label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
Mentre il file somma.php è questo:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<p>
Hai inviato: <?php echo $_POST["primoNumero"]; ?>,
<?php echo $_POST["secondoNumero"]; ?></br>
Somma: <h1>
<?php
$c = $_POST["primoNumero"] + $_POST["secondoNumero"];
echo $c;
?>
</h1>
</p>
</body>
</html>
E' solo un esempio eh... giocaci un pò ;)
¥º·RG·º¥
27-01-2014, 19:10
Te l'ho modificato un pò alla veloce per farti capire qualche cosa in più (almeno spero).
L'html diventa così:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<form name="somma" action="somma.php" method="post">
<fieldset>
<legend> Dati </legend> <br>
<label> a: <input type="text" name="primoNumero"></label>
<label> b: <input type="text" name="secondoNumero"></label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
Mentre il file somma.php è questo:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<p>
Hai inviato: <?php echo $_POST["primoNumero"]; ?>,
<?php echo $_POST["secondoNumero"]; ?></br>
Somma: <h1>
<?php
$c = $_POST["primoNumero"] + $_POST["secondoNumero"];
echo $c;
?>
</h1>
</p>
</body>
</html>
E' solo un esempio eh... giocaci un pò ;)
Mettiu purtroppo non mi va! Ho copiato ed incollato il tuo codice ma quando vado ad eseguire il tutto mi da "Notice: Undefined index on line 7-8"! :S
¥º·RG·º¥
27-01-2014, 19:17
Oltre a quello che ti ha scritto giustamente OoZic ti aggiungo questo, spero ti possa essere utile a capire meglio :)
<html>
<head>
</head>
<body>
<form name="somma" action="somma.php" method="post">
<fieldset>
<legend> Dati </legend>
<br>
<label> a:
<input type="text" name="a">
</label>
<label> b:
<input type="text" name="b">
</label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c = $a + $b;
echo "$c";
?>
Qui invece mi da l'errore "Undefined variable: _post"
¥º·RG·º¥
27-01-2014, 19:40
Sotto gli errori poi vedo il risultato, ma qualunque valore inserisco mi da sempre 0 (la somma)! :mc:
Mettiu purtroppo non mi va! Ho copiato ed incollato il tuo codice ma quando vado ad eseguire il tutto mi da "Notice: Undefined index on line 7-8"! :S
A me funziona sia il codice postato da me sia quello postato da sharkkk :confused:
¥º·RG·º¥
27-01-2014, 20:33
A me funziona sia il codice postato da me sia quello postato da sharkkk :confused:
Allora leggendo un po in giro ho visto che "gli errori" Notice non sono affatto errori ma semplici segnalazioni... Ora però il fatto è che il risultato della somma qualunque numero inserisco mi dà sempre 0! Perche?? Date un occhiata
http://s27.postimg.org/5pzur5fxb/Istantanea_27012014_21_30_50.jpg (http://postimg.org/image/5pzur5fxb/)
Sembra come se l'array globale $_post non memorizzi i dati... Non è che per caso devo settare qualcosa nel Php.ini??
La variabile non è $_post ma $_POST...una differenza non da poco!
La variabile non è $_post ma $_POST...una differenza non da poco!
* :D
¥º·RG·º¥
28-01-2014, 04:27
La variabile non è $_post ma $_POST...una differenza non da poco!
* :D
Stessa cosa anche in maiuscolo... mi da sempre il risultato =0, con "l'errore" dello screen precedente.... Sto utilizzando il codice postato da Sharkk
non fare copia e incolla di codice (sbagliato tra l'altro) senza capire :)
leggiti il link che ti ho postato inizialmente e vedrai che capirai ;)
non fare copia e incolla di codice (sbagliato tra l'altro) senza capire :)
leggiti il link che ti ho postato inizialmente e vedrai che capirai ;)
Potresti motivare perchè sarebbero errati?
tigroneveloce
28-01-2014, 10:13
Per me ha messo tutto il codice in una pagina sola.
¥º·RG·º¥
28-01-2014, 15:54
non fare copia e incolla di codice (sbagliato tra l'altro) senza capire :)
leggiti il link che ti ho postato inizialmente e vedrai che capirai ;)
Per me ha messo tutto il codice in una pagina sola.
Oziic ho letto ed ho ben capito :) I dati ricevuti dai form vanno rispettivamente nell'array globale, a seconda del method, in $_POST['esempio'] oppure $_GET['esempio'] dove esempio è il nome che do al campo.
Ora io ho il form somma.html e somma.php che invece è lo script... Come potete vedere dall'immagine precedente, io arrivo alla pagina Somma dall'indice di sinistra... dopodichè si apre il form dove posso inserire i 2 numeri ma quando clicco su "calcola" mi da "l'errore" dell'immagine precedente e il risultato sempre 0 :mc:
http://s27.postimg.org/5pzur5fxb/Istantanea_27012014_21_30_50.jpg (http://postimg.org/image/5pzur5fxb/)
Ma io nell'url vedo pagina divisa.html (pure con lo spazio...che andrebbe evitato) e non somma.php
Detto questo, potresti postarci il codice dei vari file (col loro nome) che hai scritto/editato?
Grazie
tomminno
28-01-2014, 16:39
L'errore al 99% lo ottieni perchè la variabile dentro $_POST non c'è, prova con:
if (isset($_POST['a']))
puoi verificare il contenuto di $_POST con:
print_r($_POST);
L'errore al 99% lo ottieni perchè la variabile dentro $_POST non c'è, prova con:
if (isset($_POST['a']))
puoi verificare il contenuto di $_POST con:
print_r($_POST);
Sicuramente dato che il notice lo dice...quelle varibili in post che cerca di assegnare non arrivano a somma.php bisogna capire il perché) :D
¥º·RG·º¥
28-01-2014, 17:23
Allora eccovi i codici... (Le pagine sono tutte separate, scritte ognuna per conto suo):
Pagina divisa:
<html>
<head>
<meta name=Autore content=Andrea>
</head>
<frameset cols= "180,*" border="5">
<frame src="indice.html" name="uno" noresize>
<frame src="pagina base.html" name="due" noresize>
</frameset>
</html>
Indice (a sinistra):
<html>
<head>
<meta name=Autore content=Andrea>
</head>
<body bgcolor="#DEB887">
<h1 align=left><font size=3> <A href="http://localhost/biblioteca.html" target="due">Biblioteca </h1> </a> </font>
<h2 align=left><font size=3> <A href="http://localhost/ricerca libri.html" target="due"> Ricerca Libri </h2> </a> </font>
<h3 align=left><font size=3> <A href="http://localhost/somma.html" target="due"> Somma </h2> </a> </font>
</body>
</html>
Somma.html:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<form name="somma" action="somma.php" method="POST" enctype="text/plain" target="due">
<fieldset>
<legend> Dati </legend> <br>
<label> a: <input type="text" name="a"></label>
<label> b: <input type="text" name="b"></label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
Somma.php:
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c = $a + $b;
echo "Risultato=$c";
?>
Somma.html:
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<form name="somma" action="somma.php" method="POST" enctype="text/plain" target="due">
<fieldset>
<legend> Dati </legend> <br>
<label> a: <input type="text" name="a"></label>
<label> b: <input type="text" name="b"></label>
</fieldset>
<input type=submit value=Calcola>
<input type=reset value=Resetta>
</form>
</body>
</html>
Togli quell' enctype (cioè elimina proprio la parte in grassetto).
Qui (http://www.w3schools.com/tags/att_form_enctype.asp) trovi la documentazione su cosa serva quell'attributo.
¥º·RG·º¥
28-01-2014, 19:57
Togli quell' enctype (cioè elimina proprio la parte in grassetto).
Qui (http://www.w3schools.com/tags/att_form_enctype.asp) trovi la documentazione su cosa serva quell'attributo.
...e come per magia, tutto funziona! :D
Potresti motivare perchè sarebbero errati?
chiedo scusa ero di fretta stamattina e devo aver letto male. :doh:
il codice è corretto.
:read:
chiedo scusa ero di fretta stamattina e devo aver letto male. :doh:
il codice è corretto.
:read:
Ok, nessun problema, l'importante è aver risolto ;)
¥º·RG·º¥
02-02-2014, 15:09
Ragazzi riesumo un attimo questo thread per chiedervi una piccola cosa:
Io ho quest'altro form e rispettivo script in php:
Inserisci libro.PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "andrea";
$db_database = "Biblioteca";
$connection = mysql_connect($db_host,$db_user,$db_password) or die(mysql_error()); // Creates a new connection to the mysql server.
mysql_select_db($db_database,$connection); // Connects to the database.
$title=$_POST['t'];
$author=$_POST['a'];
$price=$_POST['p'];
$description=$_POST['d'];
$Inserisci=mysql_query("insert into libri (titolo,autore,prezzo,descrizione) values ('$title','$author','$price','$description')");
$total=mysql_query($Inserisci);
if($total)
echo "Grazie per l inserimento";
else
echo "Riprova ce' stato un errore";
?>
inserisci libro.html
<html>
<head>
<meta name="Autore" content="Andrea">
</head>
<body>
<h1 align=center><tt> Qui puoi inserire un qualsiasi libro nella biblioteca specificando titolo,autore e prezzo </tt></h1>
<form name="inserisci" action="inserisci libro.php" method="POST" target="due">
<fieldset>
<legend><font size=4> Dati libro </legend></font> <br>
<label><font size=3> Titolo: <input type="text" name="t"></label></font>
<label><font size=3>Autore: <input type="text" name="a"></label></font>
<label><font size=3> Prezzo: <input type="text" name="p"></label></font>
<label><font size=3> Descrizione: <input type="text" name="d"></label></font>
</fieldset>
<input type="submit" name="Inserisci" value="Inserisci">
<input type="reset" value="Cancella">
</form>
</body>
</html>
Lo script e la pagina funzionano alla perfezione, l'unica cosa è che quando lo eseguo mi viene mostrato sempre il messaggio "Riprova ce' stato un errore" anche se effettivamente i dati vengono inseriti nel database... (l'ho verificato) :)
Io credo che succeda perche non ho specificato la condizione nell'if, ma come devo impostarla per far si che visualizzi correttamente il messaggio? :)
non sono un grande esperto di php ma mi sfugge il motivo di questo:
$Inserisci=mysql_query("insert into libri (titolo,autore,prezzo,descrizione) values ('$title','$author','$price','$description')");
$total=mysql_query($Inserisci);
non equivale a mysql_query(mysql_query("insert ...")) ?
non sono un grande esperto di php ma mi sfugge il motivo di questo:
$Inserisci=mysql_query("insert into libri (titolo,autore,prezzo,descrizione) values ('$title','$author','$price','$description')");
$total=mysql_query($Inserisci);
non equivale a mysql_query(mysql_query("insert ...")) ?
Si infatti non ha senso, e il motivo è che si scrive codice senza guardare la documentazione che, nel caso di specie, si trova qui (http://www.php.net/manual/it/function.mysql-query.php).
¥º·RG·º¥
03-02-2014, 08:28
"$Inserisci=..." l'ho inserito per effettuare l'inserimento dei dati nella tabella alla pressione del tasto Inserisci del form.. ho fatto male?? il "$total" invece posso eliminarlo?? Ho seguito "questa strada" googlando un po' non ho letto tutta la documentazione... :D .... Comunque mi funziona tutto bene, non ho problemi, tranne quello che vi ho detto nel mio post precedente :)
"$Inserisci=..." l'ho inserito per effettuare l'inserimento dei dati nella tabella alla pressione del tasto Inserisci del form.. ho fatto male?? il "$total" invece posso eliminarlo?? Ho seguito "questa strada" googlando un po' non ho letto tutta la documentazione... :D .... Comunque mi funziona tutto bene, non ho problemi, tranne quello che vi ho detto nel mio post precedente :)
1) Non è "tutta la documentazione" ma almeno le prime 15 righe dove si spiega cosa fa la funzione, cosa prende in ingresso e cosa ritorna (il link è quello che ho postato prima).
2) Il fatto che il codice "funziona" non significa che sei apposto. Anzichè _sperare_ che tutto funzioni bisogna sapere esattamente cosa fa ogni riga di codice e se ti stampa quell'errore significa che non "funziona tutto" (o comunque succede qualcosa che non ti aspetti).
3) Nel tuo codice chiami due volte mysql_query(), è questo il problema. Elimina la seconda chiamata:
//. . .
$price=$_POST['p'];
$description=$_POST['d'];
$risultato=mysql_query("insert into libri (titolo,autore,prezzo,descrizione) values ('$title','$author','$price','$description')");
if($risultato)
{
echo "Tutto ok";
}
else
{
echo "Errore nell'inserimento";
}
¥º·RG·º¥
03-02-2014, 09:01
1) Non è "tutta la documentazione" ma almeno le prime 15 righe dove si spiega cosa fa la funzione, cosa prende in ingresso e cosa ritorna (il link è quello che ho postato prima).
2) Il fatto che il codice "funziona" non significa che sei apposto. Anzichè _sperare_ che tutto funzioni bisogna sapere esattamente cosa fa ogni riga di codice e se ti stampa quell'errore significa che non "funziona tutto" (o comunque succede qualcosa che non ti aspetti).
3) Nel tuo codice chiami due volte mysql_query(), è questo il problema. Elimina la seconda chiamata:
//. . .
$price=$_POST['p'];
$description=$_POST['d'];
$risultato=mysql_query("insert into libri (titolo,autore,prezzo,descrizione) values ('$title','$author','$price','$description')");
if($risultato)
{
echo "Tutto ok";
}
else
{
echo "Errore nell'inserimento";
}
Perfetto, grazie mettiu :)..Quindi in sostanza posso comodamente eliminare $total (che sarebbe la doppia chiamata che spreca solo memoria) e inserire nella condizione dell'if $inserisci :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.