[PHP] $_POST nella stessa pagina del form

KingWoody

Nuovo Utente
9 Gen 2012
5
0
0
Ciao a tutti,

ho un problemino con il php. Dovrei prendere dei dati da un form e restituirli alla pagina stessa quindi nella pagina index.php ho scritto <form id=lol action = "index.php" method = "POST"> . Tuttavia nella pagina poi non riesce a recuperare le variabili $_POST['....'] . Da il seguente errore: " Notice: Undefined index: " e poi il nome della variabile. Idee?

Grazie mille!
 
Devi fare cosi':

PHP:
if(!isset($_POST['submit']))
{
//CODICE CHE MOSTRA IL FORM
echo"bla bla bla";
}
else
{
//SCRIPT CHE RECUPERA LE VARIABILI ED ESEGUE OPERAZIONI
$var1 = $_POST['campoform1'];
//ecc..
}
la struttura dovrebbe essere questa, e nell'action del form metti il cancelletto (action="#")
Spero di esserti stato d'aiuto

Saluti
 
Grazie mille. Purtroppo non sono riuscito a risolvere e ho passato il tutto in javascript, tuttavia non funziona neanche così quindi penso che mi rivolgerò alla sezione Javascript per chidere! Grazie ancora!
 
In php per ricaricare i dai nella stessa pagina puoi fare così:


PHP:
<?php
if(isset($_POST['submit'])){

//hanno inviato il submit quindi gestisco i dati
echo $_POSt['testo'] ....


}else{
?>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST'>

<input type='tetx' name='testo' /><br />
<input type='submit' name='submit'/><br />

</form>

<?php
}
 
Una domanda alessandro 1997

che differenza esiste tra fare

action="$_SERVER['PHP_SELF']"
action=""
action="nome_pagina.php"

tutti non hanno il medesimo scopo di fare l'action sulla stesssa pagina?
 
Grazie della risposta, cmq la ma domanda in sostanza era questa: se ad esempio sono us index.php

fare un action='<?php echo $_SERVER['PHP_SELF']: ?>' o action='index.php' non comporta differenze particolari vero?
 
ciao
no non fa differenza se rimani su index.php, ma se copi il form e lo incolli in pinco.php con $_SERVER... non hai bisogno di modificare il nome nell'action, analogamente se rinomini la pagina.
in più, se tu fai una pag. chiamata form.php e poi fai nella pag. pallo.php include_once "form.php" non devi preuccuparti di cambuare il nome e, tra l'altro poi fare l'include in tutte le pag che vuoi usando un solo form.
questo presupposto che la parte di elaborazione del form sia nella stassa pagina del form
 
A me piace lavorare tramite classi; quindi indubbiamente ho molteplici vantaggi (dei quali non avevo mai puntualizzato una versa riflessione sull'action). Grazie!
 
Problema update

Salve a tutti,

non so perchè nessuno mi risponde a un problema di update. Il problema è il seguente. Ho un file di aggiornamentoprofilo.php e uno index.php. Su index si effettua l'agggiornamento del profilo che poi con il bottone "aggiorna profilo" viene reindirizzato alla pagina per l'appunto aggiornaprofilo.php e questi sono i seguenti codici:

index.php

PHP:
<?php
require_once("connetti.php");

echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';


?>
<form action= 'aggiornaprofilo.php' method="POST">

  <?php
  
require_once("arraylistecitta.php");

foreach($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string(strtolower(trim ($value)));

extract($_POST,EXTR_SKIP);

//echo 'Città:  <input type="text" name="citta"  maxlength="80" size ="32"> <br> <br>';
//echo 'provincia:  <input type="text" name="provincia"  maxlength="30" size ="32"> <br> <br>';
//echo 'Data di nascita:  <input type="text" name="datadinascita"  maxlength="10" size ="32"> <br> <br>';

 
// Inizio Selezione data di nascita

//Giorno

echo "Giorno: ";
echo "<select name=\"giorno\">";
echo "<option value=\"\"> seleziona </option>";
for($gg=1; $gg<=31; $gg++){
 if(strlen($gg)< 2){$gg = "0".$gg;}  
 echo "<option value=\"$gg\"> $gg </option>";
}
echo "</select>";


//Mese

echo " Mese: ";

echo "<select name=\"mese\">";
foreach($mese as $valore){
    echo "<option value=\"$valore\">$valore";
    //echo "<option value=\"$valore\">$valore";
echo "</option> ";
}
 echo "</select>";

//Anno

echo " Anno: ";
$da=1972;
$al=2014;
echo "<select name=\"anno\">";
echo "<option value=\"\"> seleziona </option>";
for($aa=$da; $aa<=$al; $aa++){
    echo "<option value=\"$aa\"> $aa </option>";
}
echo "</select>" ;

// Inizio selezione Città
echo"<br> <br>";

echo "Città: ";

echo "<select name=\"citta\">";
foreach($citta as $valore){
    echo "<option value=\"$valore\">$valore";
    //echo "<option value=\"$valore\">$valore";
echo "</option> ";
}
 echo "</select>";

 // Inizio selezione Province
 
echo " Provincia: ";

echo "<select name=\"provincia\">";
foreach($province as $valore){
    echo "<option value=\"$valore\">$valore";
    //echo "<option value=\"$valore\">$valore";
echo "</option> ";
}
 echo "</select>";
?>

    <center> <br><br>";
     <input type="submit"  onClick="window.location.href='aggiornaprofilo.php';"style='padding:10px' value="Aggiorna Profilo" >
        
    <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" >
    </center>

e questo è il file aggiornaprofilo.php

PHP:
<?php
session_start();
require_once("connetti.php"); 
var_dump($id);
echo $id;

$id=$_POST['id'];

//$email = mysql_real_escape_string(trim ($_POST['email'])); 
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'; 

foreach($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string(strtolower(trim ($value)));

extract($_POST,EXTR_SKIP);

$datadinascita = $anno . "-" . $mese . "-" . $giorno;   

//$email = mysql_real_escape_string(trim ($_POST['email']));


 $usn=htmlspecialchars(trim($_POST['username']));
    $pas=md5(trim($_POST['password']));
   
  //$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 
 
    $q=mysql_query("SELECT * FROM utenti WHERE username='$usn' AND password='$pas' AND attivo = 1");  
    
    if(mysql_num_rows($q) > 0){
        $riga=mysql_fetch_array($q);//aggiungi questa e

        $_SESSION['id'] = $riga['id'];
        
        $_SESSION['nome'] = $riga['nome'];
  echo " Sei loggato corretamente....";
    }else{
        echo " Non hai i permessi per entrare nel tuo profilo. Loggati prima o registrati....";
    }
if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) { 
    
    var_dump ($citta, $provincia);
    echo $citta, $provincia;
    
echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 

$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma'     
     WHERE id = '".$_SESSION['id']."'";


var_dump($_SESSION);

echo $_SESSION;
//WHERE id = '".$_SESSION['id']."'";  
    
    //WHERE email = '[email protected]'";
if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo "Errore: Non è stato possibile effettuare l'aggiornamento richiesto";

}
}   
?>

Ho fatto delle prove ma niente da fare.
Mi potete dare una sluzione o una mano a risolvere il problema sono settimane che ci combatto senza ottenere na sega. Grazie a tutti.

P..S: Posto anche il login.php

PHP:
<?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");


if(isset($_POST['log'])){
    
   $usn=htmlspecialchars(trim($_POST['username']));
    $pas=md5(trim($_POST['password']));
   
  //$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 
 
    $q=mysql_query("SELECT * FROM utenti WHERE username='$usn' AND password='$pas' AND attivo = 1");  
    
    if(mysql_num_rows($q) > 0){
        $riga=mysql_fetch_array($q);//aggiungi questa e

        $_SESSION['id'] = $riga['id'];
        
        $_SESSION['nome'] = $riga['nome'];
    
        header("location: index.php");
    }else{
        header("location: failed.php");
    }
    exit();
}else{
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>form di log</title>
</head>
<body>
<center>
<!--a che cavolo serve questo link? o clicko o inserisci -->
<h2>DIGITARE USERNAME & PASSWORD. PREMERE <a href="iscrizione.php"> QUI</a> </h2> 
<form action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<font face="Comic Sans MS">
Username: <input type="text" name="username"  maxlength="30" size ="32"> <br /> <br />
Password: <input type="password" name="password"  maxlength="12" size ="14"><br /><br />
</font>
<input type="submit" name="log" value="Loggati" />
</form>
<!-- qui il tag center (obsoleto) era indentato col form -->
</center> 
</body>
</html>
<?php
}

ob_end_flush();
?>

Spero in voi: Quello che dovrei fare è la seguente cosa: se mi connetto come paperinik4 devo aggiornare solo il mio profilo, se mi connetto come batman, batman deve aggiornare solo il suo profilo.
 
ciao
guardiamo (e ragionaci) le due pagine index.php e aggiornaprofilo.php
1) pagina index.php
hai un form che punta alla pag aggiornaprofilo.php (action= 'aggiornaprofilo.php')
nel form hai i campi di input (che sia select o meno sempre campi di input sono):
a) name="giorno"
b) name="mese"
c) name="anno"
d) name="citta"
e) name="provincia"
+ il pulsante di submit e un button per uscire (inifluenti)
quindi da tale form trasmetti i valori del giorno, mese, anno, citta e provincia E QUESTI SOLO
2) pagina aggiornaprofilo.php
in questa pagina leggi i valori inviati dal form della pag index.php, scorrendo la pagina
a) $_POST['id'] vorresti leggere il valore chiamato 'id' inviato dal form, ma nel form NON hai nessun campo di input che si chiami 'id'
b) $_POST['username'] analogo al post id
c) $_POST['password'] analogo al pst username che è analogo al post id

non puoi inventarti che una pag legga i valori che non gli invii e, da quello che vedo, non li invii di sicuro
potrei giocarci le pa..e (tanto alla mia età servono pocho) ma ci scommetterei che se metti un var_dum alla query (dividendola si intende)
PHP:
<?php
//...
$q="SELECT * FROM utenti WHERE username='$usn' AND password='$pas' AND attivo = 1";
var_dump($q);
//...
?>
ottieni l'output
string (70) "SELECT * FROM utenti WHERE username='' AND password='' AND attivo = 1"
e non certo come vorresti
string (80) "SELECT * FROM utenti WHERE username='pinco' AND password= 'pallo' AND attivo = 1"
 
Ciao

Ciao Borgo,

Allora come posso risolve il problema secondo te ??? Un par di va_dump li ho messi per capire cosa succedesse e il risultato finale è il seguente:

string(1) "1" 1string(4) "Roma" string(2) "RM" RomaRM
Esecuzione in corso dell'aggiornameto profilo...
array(2) { ["id"]=> &NULL ["nome"]=> &string(5) "fabio" } ArrayErrore: Non è stato possibile effettuare l'aggiornamento richiesto Non capisco cosa debbo fare allora :( o Sono de coccio io o sono de coccio io. ho messo il var_dump della query e mi restituisce la seguente scritta:

string(1) "1" 1resource(4) of type (mysql result) Resource id #4string(4) "Roma" string(2) "RM" RomaRM
Esecuzione in corso dell'aggiornameto profilo...
array(2) { ["id"]=> &NULL ["nome"]=> &string(5) "fabio" } ArrayErrore: Non è stato possibile effettuare l'aggiornamento richiesto
 
Ultima modifica:

Discussioni simili