Non mi passa il risultato di una variabile nell'url

Soulfearor

Utente Attivo
16 Set 2014
54
0
6
Torino
www.serenagraficatorino.it
Salve a tutti.
Premessa: sto usando javascript assieme a PHP e per me è la prima volta, inoltre ho suddiviso alcuni script in più pagine, quindi se voi riuscite a fare la stessa cosa con molto meno, vi invidio xD

Di seguito gli script:

FILE script_connect.php
PHP:
<?php
$connessione = mysqli_connect('localhost', 'root', '', 'provaphp') or die(mysqli_error());
?php

FILE index.php
PHP:
<?php
include 'script_connect.php';
include 'script.php';

if(mysqli_num_rows($select_query) == 0) {
	echo "Non ci sono utenti nel DB";
}
else {
	echo $show;
}
?>

FILE script.php
PHP:
<?php
$show = NULL;

$select_query = mysqli_query($connessione, "SELECT * FROM esercitazione_eliminare_record_con_conferma");
while($risultato = mysqli_fetch_assoc($select_query)) {
	$show .= $risultato['nome'] ." " .$risultato['cognome'] .", " .$risultato['eta'] ." <form action=\"script_delete.php?id=$id\" method=\"POST\"><input type=\"hidden\" value='".$risultato['id']."' name=\"id\"><input type=\"submit\" onclick=\"myFunction()\" value=\"Elimina\" name=\"delete\"></form><br>";
}

if(isset($_POST['id'])) $id = $_POST['id'];
if(isset($_POST['delete'])) $delete = $_POST['delete'];
?>

HTML:
<script>
function myFunction() {
    if(confirm("Sei sicuro di voler cancellare questo utente\?\?")) {
	window.location = "script_delete.php?id=$id";
	}
}
</script>

FILE delete_script.php
PHP:
<?php
include 'script_connect.php';

$id = $_GET['id'];

$delete_query = mysqli_query($connessione, "DELETE FROM esercitazione_eliminare_record_con_conferma WHERE ID = $id");
if($delete_query) {
	echo "Utente eliminato con successo!!";
	header ("refresh:3; url=index.php");
	exit;
}
else {
	echo "Si e' verificato un errore";
	header ("refresh:3; url=index.php");
	exit;
}
?>


I problemi che si presentano sono:
1 nel controllo dove c’è confirm, window.location può essere omesso lasciando lo script così
2 nell’action del form se lo lascio vuoto non mi reindirizza alla pagina indicata da window.location
3 se nell’action lascio quello che c’è scritto mi da questo errore: “Undefined variabile: id in” in quanto nell’url è presente $id
4 lasciando tutto com’è mi reindirizza alla pagina esatta ma nell’url, l’id è lasciato vuoto, quindi niente query e niente eliminazione.

Codice:
http://localhost/prove/script%20cancellazione%20un%20record%20con%20conferma/script_delete.php?id=

Come posso far si che venga passato un id nell’url, così che poi venga assegnato ad un’altra variabile con il metodo GET?

Grazie mille :)
 
Ciao filomeni e grazie per la risposta.
Ho provato a sostituire la mia stringa di codice con la tua ma non funziona.
Prima non mi passava l'id ma il javascript si attivava, con la tua modifica ora manco più quello si attiva.

Come posso fare?
Grazie :)
 
Up

PHP:
<?php
$show = NULL;

$select_query = mysqli_query($connessione, "SELECT * FROM esercitazione_eliminare_record_con_conferma");
while($risultato = mysqli_fetch_assoc($select_query)) {
	$show .= $risultato['nome'] .' ' .$risultato['cognome'] .', ' .$risultato['eta'] 
	.' <form action="" method="POST"><input type="hidden" value="'.$risultato['id'].'" name="id"><input type="button" onclick="myFunction()" value="Elimina" name="delete"></form><br>';
}

if(isset($_POST['id'])) $id = $_POST['id'];
if(isset($_POST['delete'])) $delete = $_POST['delete'];

?>
Codice:
<script>
function myFunction() {
    if(confirm("Sei sicuro di voler cancellare questo utente\?\?")) {
	window.location = "script_delete.php?id=$id";
	}
}
</script>

Non mi da più i 2 errori ma nell'URL mi appare $id e non il valore assegnato. Se al posto di $id metto un numero specifico, funziona.
 
Ciao, probabilmente non c'è il recupero della vaiabile "$id", fai una prova.
Prima del javascript recupera con php $id e stampalo a monitor... vedi se c'è il recupero reale della variabile, ti faccio un esempio pratico:
Codice:
<?php
$id=$_POST['id'];
echo $id;
die("mi fermo qui per prova");
...
?>

<script>
function myFunction() {
    if(confirm("Sei sicuro di voler cancellare questo utente\?\?")) {
	window.location = "script_delete.php?id=<?php echo $id ?>";
	}
}
</script>
Se il valore di $id viene stampato a monitor sicuramente deve essere passato più in basso al javascript nella maniera indicata da me.
Ciao
 

Discussioni simili