Html con form e action .php

stevc79

Nuovo Utente
21 Ago 2017
10
0
1
45
Buonasera a tutti,
come scrivevo ieri e come "purtroppo" mi aspettavo, ho bisogno di un aiuto.
Da neofita di form html e php, ho creato un microscopico form html (con un po di css) dove un utente può scegliere, tramite radio buttons, tra 7 preferenze di colore.
Ho cercato poi di agganciare l'ation .php, forte di aver letto un po di documentazione, specialmente in questa pagina: https://www.mrw.it/php/form-php_12118.html
All'atto pratico però mi esce un errore, del tipo: Parse error: syntax error, unexpected T_STRING in /web/htdocs/www.so-tv.it/home/action.php on line 19

Mi senti un po stupido vista la banalità e pochezza del mio form :( Spero comunque di capirci di più e risolvere.
Vi ringrazio per un eventuale aiuto.

HTML:
<form action="action.php" method="post">
 
  <fieldset>
    <legend>SCEGLI IL TUO COLORE PREFERITO</legend>
    <input type="radio" name="decision" id="black" /><label for="black">Black</label>
    <input type="radio" name="decision" id="charcoal" /><label for="charcoal">Charcoal</label>
    <input type="radio" name="decision" id="pink" /><label for="pink">Pink</label> <br>
    <input type="radio" name="decision" id="navy" /><label for="navy">Navy</label>
    <input type="radio" name="decision" id="yellow" /><label for="yellow">Yellow</label>
    <input type="radio" name="decision" id="chalk" /><label for="chalk">Chalk</label>
    <input type="radio" name="decision" id="moss" /><label for="moss">Moss</label>
  </fieldset>
  <input type="submit" id="submit" name="submit" value="CLICCA PER CONFERMARE LA PRENOTAZIONE!" />
 
  </form>

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body>

<?php

$decisione = $_POST['decision'];


$testo = "Decision: " . $decisione . "\n"
      


mail('mia@email.com', 'Vorrei riservarne uno di colore:', $testo);


echo 'Grazie per averci contattato!';
?>


</body>
</html>
 
Buongiorno,
Nel form html il valore action non deve chiamarsi necessariamente action.php ma il nome del tuo file php ed eventuale directory di dove è posizionato.

Al posto di "id" metti "value" altrimenti non passi nessun colore.
Codice:
name="decision" value="black"

Se "id" dovesse servirti per motivi di css o altro aggiungi e basta
Codice:
name="decision" value="black" id="black"
(l'ordine in cui vengono messi non cambia però falli tutti uguale per tenere pulito e in ordine il codice ;))


Detto ciò il tuo errore è un ; di chiusura alla fine della creazione variabile del $testo.
 
Grazie @bubino8 per l'aiuto.
In effetti il file l'avevo chiamato proprio action.php, magari ci cambio nome e poi anche nell'html giusto per tenerelo fuori da equivoci. La posizione del file .php è nella root dove c'è anche l'index.html - spero sia corretto.
Grazie per gli accorgimenti, mi studio meglio il value e l'id in effetti. Il ";" proprio mi era sfuggito che doveva esserci. Poi questa sera provo il tutto. In realtà l'errore me lo dava alla riga 19, cioè quello della email (che ovviamente avevo scritto la mia email, non il fake dell'esempio).

A presto e grazie ancora.
 
Si molte volte capita anche a me di non chiudere il ; è un errore di distrazione, ma causa problemi e appunto su browser viene segnalato come errore alla riga successiva.

l'importante è risolvere:D.
 
ciao
piccolo consiglio:
ti conviene dare alla pagina con il form l'estenzione .php, se esempio dato la semplicità di quello che stai facendo ti conviene fare una pagina unica e non due, esempio:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['submit'])){//verifichi che sia stato premuto il submit
    $decisione = $_POST['decision'];
    $oggetto="Vorrei riservarne uno di colore";
    $testo = "Decision: $decisione \n";
    $email="mia@email.com";
    if(mail($email,$oggetto,$testo)){
        echo "Grazie per averci contattato!";
    }else{
        echo "errore di trasmissione, riprova più tardi";
    }
    /*
    e riinvii in automatico al form dopo 3 sec
    con $_SERVER['PHP_SELF'] ti liberi da che nome darai alla pagina
    */
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <fieldset>
    <legend>SCEGLI IL TUO COLORE PREFERITO</legend>
    <input type="radio" name="decision" id="black" value="black"/><label for="black">Black</label>
    <input type="radio" name="decision" id="charcoal" value="charcoal"/><label for="charcoal">Charcoal</label>
    <input type="radio" name="decision" id="pink" value="pink"/><label for="pink">Pink</label> <br>
    <input type="radio" name="decision" id="navy" value="navy"/><label for="navy">Navy</label>
    <input type="radio" name="decision" id="yellow" value="yellow"/><label for="yellow">Yellow</label>
    <input type="radio" name="decision" id="chalk" value="chalk"/><label for="chalk">Chalk</label>
    <input type="radio" name="decision" id="moss" value="moss"/><label for="moss">Moss</label>
  </fieldset>
  <input type="submit" id="submit" name="submit" value="CLICCA PER CONFERMARE LA PRENOTAZIONE!" />
  </form>
<?php
}//chiusura dell'if/else
?>
</body>
</html>
 
Grazie @borgo italia
Posso fare questo anche se (ovviamente) il form sarà inserito in un più ampio contesto cioè dentro ad un sito web? Non so se riesco a spiegarmi: io ho un sito in html, e all'interno vorrei metterci il form di cui ho creato html e action .php.
Comunque sono felice di aver risolto e ieri poi ho implementato facendo un redirect dopo alcuni secondi al sito....
Semplici cose ma fatte da zero hanno un certo sapore!
 
ciao
io non uso più l'estenzione html, ma solo php per tutte le pagine del mio sito, se il sito è fatto per durare nel tempo, prima o poi, serve php.
esempio può essere che prima o poi ti accorga che il menu delle pagine sia uguale in molte, se le pagine sono html e devi modificarlo devi modificare ogni pagina, se invece la pagina è php ti fai una pagina menu.php e con il require lo inserisci nelle pagine in cui ti serve, se devi fare una modifica modifichi solo la menu.php e le modifiche si riflettono in tutte le pagine in cui lo usi

dimenticavo
anche se il form è inserito in un contesto maggiore io preferisco fare sempre un'unica pagina, salvo che il form non serva per accedere a pagine riservate dove faccio due pagine pagina form e pagina verifica (in puro php) che in funzione esegue il redirect
 

Discussioni simili