richiamare una funzione: funziona solo la seconda volta...

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
ho una pagina che deve elencare i buoni omaggio per una lezione che risultino ancora aperti.
Quindi semplicemente ho scritto una semplice funzione che mi mostra il risultato della ricerca nel db.
E fin qui tutto ok.
Ad ogni riga ho aggiunto un pulsante per eliminare il voucher corrispondente.
Il pulsante richiama una funzione all'interno della pagina che cancella il record.
La cancellazione funziona correttamente.
prima di chiudere la funzione di cancellazione, richiamo nuovamente la funzione che mostra l'elenco dei voucher.
Peccato che mi venga mostrato l'elenco che comprende ancora il record appena cancellato (ho verificato che dopo aver premuto il bottone "ELIMINA" nel db il record effettivamente non c'e' piu')
Se premo nuovamente il pulsante ELIMINA, finalmente ottengo l'elenco correttamente aggiornato.
Quindi devo premere due volte lo stesso pulsante... Come mai? Non riesco a capire.
Se qualcuno mi puo' aiutare. grazie.
Ecco il codice della pagina:
PHP:
<?php
session_start();
//se non c'è la sessione registrata
if (!$_SESSION['autorizzato']) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato

$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica


?>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Elenco voucher regalo ancora aperti</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />


</head>

<body>


<div class="testoPiccolo" id="vedo" style="width: 80%">
<p><? echo "$cod"; ?>, di seguito l'elenco dei voucher ancora da riscattare:<br></p>
<br>
<hr>
<br>

<table width=100%>
	<tr>
		<td width="15%">N. Voucher</td><td width="15%">Destinatario</td><td width="5%">Importo pagato</td>
		<td width="5%">Posti Prenotati</td><td width="5%">ID Lezione</td>
		<td width="20%">Donatore</td><td width="10%">Telefono Contatto</td><td width="15%">Email Contatto</td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td colspan="9"><hr></td>
	</tr>


<?

elenca();


	function elenca() {
	include 'connect.php';

	$cerca = ("SELECT * FROM voucher_regalo WHERE utilizzato = '0'");
	$vai = mysql_query($cerca);
	$num = mysql_num_rows($vai);

	$i = 0;

	while ($i < $num) {
		$voucher = mysql_result($vai,$i,"voucher");
		$nomedest = mysql_result($vai,$i,"nome_destinatario");
		$cognomedest = mysql_result($vai,$i,"cognome_destinatario");
		$destinatario = $nomedest . " " . $cognomedest;
		$importo_pagato = mysql_result($vai,$i,"importo");
		$posti = mysql_result($vai,$i,"postiprenotati");
		$lez = mysql_result($vai,$i,"id_lezione");
		$donatore = mysql_result($vai,$i,"donatore1");
		$telefono = mysql_result($vai,$i,"telefono_contatto");
		$mail = mysql_result($vai,$i,"mail_contatto");

		?>

		<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
			<tr>
				<td><input type="text" name="ilvoucher" value="<? echo $voucher; ?>" readonly="readonly"></td>
				<td><? echo $destinatario; ?></td>
				<td align="right"><? echo $importo_pagato; ?></td>
				<td align="center"><? echo $posti; ?></td>
				<td align="center"><? echo $lez; ?></td>
				<td><? echo $donatore; ?></td>
				<td><? echo $telefono; ?></td>
				<td><? echo $mail; ?></td>
				<td align="center"><input type="submit" value=" ELIMINA VOUCHER " name="butta"  class="rosso"></td>
			</tr>

		</form>

	<tr>
		<td colspan="9"><hr></td>
	</tr>


	<?

	$i++;

	}

	mysql_close();
}

if (isset($_POST['butta'])){cancella();}

function cancella(){

	$vouch = $_POST['ilvoucher'];
	

	include 'connect.php';
	$query2 = ("DELETE FROM voucher_regalo WHERE voucher = '$vouch'");
	$canc = mysql_query($query2);

	elenca();
}

?>

</table>

</div>




</body>
</html>
 

Rikk73

Utente Attivo
7 Apr 2015
140
6
18
Arezzo
prova a richiamare la funzione elenca non da dentro la funzione cancella, ma subito dopo quella, tipo

PHP:
// .....
if (isset($_POST['butta']))
{
    cancella();
    elenca(); // oppure qui fai un refresh
}
//.....

oppure come ultima istruzione di cancella() fai un refresh della pagina che automaticamente richiama elenca()
 

Rikk73

Utente Attivo
7 Apr 2015
140
6
18
Arezzo
Io per prima cosa proverei così

PHP:
// .....
if (isset($_POST['butta']))
{
    cancella();
    header("refresh:1;url=".$_SERVER['PHP_SELF']);
}
//.....
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
no, devo sempre cliccare sul bottone una seconda volta. Non capisco il motivo, anche perchè ho utilizzato lo stesso meccanismo su un'altra pagina e li' funziona perfettamente. L'unica differenza è che dove funziona per prima cosa devo inserire un codice in un form. Il submit del form mi chiama la funzione che mostra i risultati della ricerca nel db; a fianco di ogni riga ho due pulsanti, uno per modificare la riga, l'altro per eliminarla. Premendo uno dei due pulsanti richiamo le rispettive funzioni alla fine delle quali chaimo la funzione "mostra" (che è identica a "elenca()")... Lì va, qui no...
 

Rikk73

Utente Attivo
7 Apr 2015
140
6
18
Arezzo
prova a modificare allora la funzione cancella()

PHP:
if (isset($_POST['butta'])){
    $vouch = $_POST['ilvoucher'];
    cancella($vouch);
}

function cancella($vouch){
    include 'connect.php';
    $query2 = ("DELETE FROM voucher_regalo WHERE voucher = '$vouch'");
    $canc = mysql_query($query2);

    header("refresh:1;url=".$_SERVER['PHP_SELF']);
    // oppure header("location: ".$_SERVER['PHP_SELF']);
}
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Ho risolto.
Modificata la funzione cancella aggiungendo per il refresh:
Codice:
$secondsWait = 1;
echo '<meta http-equiv="refresh" content="'.$secondsWait.'">';
 
Discussioni simili
Autore Titolo Forum Risposte Data
C richiamare una funzione in un altro script php PHP 1
gandalf1959 richiamare una funzione da un'altra funzione PHP 1
I richiamare una funzione senza click Javascript 3
A richiamare un'immagine su una nuova funzione PHP 0
A Richiamare una pagina php in una funzione javascript Ajax 2
A Richiamare una funzione Javascript Javascript 1
M Richiamare una singola funziona da file php PHP 2
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
T Richiamare il click su un input type="image" alla pressione del tasto invio su una text area. PHP 0
elpirata Richiamare un campo input in una form Javascript 2
P Problema per richiamare una variabile... PHP 3
P come richiamare una variabile PHP 3
G Richiamare una classe Sviluppo app per iOS 0
M Richiamare una foto dal database PHP 3
M Richiamare una data inserita nel database tramite php. PHP 4
P creare e richiamare una stored procedure in sqlserver .NET Framework 1
B Richiamare un array in una classe PHP 7
P problema: dichiarare e richiamare variabili all'interno di una classe PHP 2
V si può richiamare una script jquery in automatico? jQuery 1
E richiamare id diversi da una database PHP 3
C Come richiamare una function di controllo Javascript 0
G utilizzo variabile per richiamare una pagina Ajax 1
S Richiamare una scena Flash 3
M Richiamare funziona da file esterno jQuery 0
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
T [Javascript] Richiamare un file.js (iframe) in html Javascript 1
A Richiamare funzioni esterne JS da PHP PHP 9
A [Flash] richiamare JS da AS3 Flash 0
G [PHP] RICHIAMARE TABELLA I CUI VALORI SONO STAMPATI A VIDEO E MODIFICARLI PHP 6
Shyson [WordPress] Richiamare nel mio sito numero iscritti da gruppo Facebook WordPress 0
A [Javascript] richiamare lo pseudo elemento after Javascript 1
B [Javascript] Richiamare un attributo DATA Javascript 0
E Richiamare funzione Jquery dopo aggiornamento parziale di pagina tramite ajax jQuery 0
Z richiamare codice html in file php PHP 2
B richiamare variabile javascript su pagina php Javascript 4
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
G Richiamare funzioni esterne PHP 0
K richiamare 2 volte stessa funzione Javascript 1
Shyson Richiamare funzione esterna jQuery 4
P 2 hosting da richiamare con dominio e sottodominio Hosting 0
scatenato richiamare id PHP 28
gandalf1959 Richiamare un javascript da php. Non funziona? PHP 2
I richiamare dati da menu a tendina mysql PHP 2
L problema nel richiamare gli id HTML e CSS 2
A richiamare funzione javascript dopo login in popup. Javascript 0
I richiamare dati da database in due variabili differenti PHP 2
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
I Richiamare funzione jquery all'invio del form php Javascript 6
R [Vb.net] richiamare funzione javascirpt .NET Framework 0

Discussioni simili