Ricerca nel DB con radiobutton + riempimento select

ciao
prova così, poi mi sai dire se funzia
PHP:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>scheda del libro</title>
</head>
<body>
 <?php
//dati di connessione
if(isset($_POST['Risultati_Ricerca'])){
	$_SESSION['code']=$_POST['Risultati_Ricerca'];
}
$query = "SELECT * FROM elenco_libri WHERE CODICE='".$_SESSION['code']."'";
$q = mysql_query($query);
if(mysql_num_rows($q)==1){
	$riga=mysql_fetch_array($q);
	$code = $riga['CODICE'];
	$category = $riga['CATEGORIA'];
	$author = $riga['AUTORE'];
	$title = $riga['TITOLO'];
	$publishing = $riga['CASA_EDITRICE'];
	$pubyear = $riga['ANNO'];
	$pubplace = $riga['LUOGO'];
	//qui poi ci penserai tu con i css
	echo "codice libro: $code<br />";
	echo "categoria: $category<br />";
	//ecc....
}else{
	echo "il libro codice $code non esiste o è stato eliminato<br />";
}
if(isset($_POST['elimina']) && $_POST['si']!=""){
	$del="DELETE FROM elenco_libri WHERE CODICE='".$_POST['si']."'";
	echo "li libro ".$_POST['si']." è stato eliminato<br />";
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
vuoi elminare la scheda?<br />
<form action="" method="post" name="elimina">
<!-- eliminare è sempre un richio quindi ti metto che devi dare la conferma selezionando si-->
se si seleziona <input name="si" type="radio" value="<?php echo $_SESSION['code']; ?>"> e <input name="elimina" type="submit" id="elimina" value="elimina">
</form>
<a href="cerca.php">altra ricerca</a>
</body>
</html>
 
MEMO: Ho ricordato una cosa: alcuni titoli hanno lo stesso codice poiché sono compresi in un unico libro (infatti avevo dichiarato come chiave del DB la coppia codice-titolo). Nella query avevo inserito la condizione CODICE = $code AND TITOLO = $title

Ho provato il tuo codice ma non funziona, a quanto sembra non mantiene i parametri perché la pagina viene aggiornata (come quando invii il form) ma non ho nessun messaggio, nessun risultato, ma la schermata vuota come se non fosse stato selezionato alcuna voce.

Forse così si capisce meglio

iMG.png
 
Il codice l'ho inserito nella pagina della scheda (nel titolo hai messo "scheda del libro")
 
ciao
penso di essermi dimenticato un mysql_query
PHP:
<?php
//......
$del="DELETE FROM elenco_libri WHERE CODICE='".$_POST['si']."'";
mysql_query($del);
//....
?>
prova

p.s.
aha l'immagine rappresenta due pagine allora
 
L'immagine, sì comprendeva più pagine...
Il mysql_query l'avevo aggiunto io... Ma non va ugualmente
 
ciao
non ho capito bene cosa non ti funziona
1) fai la ricerca con i vari radio e la text, al subimit
2) ti appare l'elenco dei libri trovati (autore e titolo)
3) clicchi su uno dell'elenco
4) ti appare la scheda con tutti i dati del libro (giusto sin qui?)
5) confermi e clicchi su elimina
e qui cosa succede?
a) il record viene eliminato? verifica con myadmin
b) vieni reindirizzato ad una pagina che ti chiede se vuoi cercare o aggungere un libro?
 
1) fai la ricerca con i vari radio e la text, al subimit OK
2) ti appare l'elenco dei libri trovati (autore e titolo) OK
3) clicchi su uno dell'elenco OK
4) ti appare la scheda con tutti i dati del libro OK
5) confermi e clicchi su elimina
e qui cosa succede?
a) il record viene eliminato? verifica con myadmin

Il record non viene eliminato. Viene in sostanza 'ricaricata' la stessa pagina SENZA le informazioni del titolo che io avevo scelto. Non mi reindirizza alla pagina della ricerca. Semplicemente azzera quella dei dettagli, senza eseguire la query.
 
ciao
fai questa modifica e metti un var_dump
PHP:
<?php
//......
if(isset($_POST['elimina']) && $_POST['si']!=""){
    $del="DELETE FROM elenco_libri WHERE CODICE='".$_POST['si']."'";
    var_dump($del);//guarda e posta cosa ti risulta
	$ris=mysql_query($del);
	if($ris){
		echo "il libro ".$_POST['si']." è stato eliminato<br />";
	}else{
    	echo "errore: il libro non è stato eliminato<br />";
	}
	//aggiungi questa
	unset($_SESSION['code']);
	//questa provvisoriamente commentala per vedere il risultato del var_dump
	//comunque corretta per tornare alla ricerca
	//echo "<meta http-equiv='Refresh' content='3; URL=cerca.php'>";
}
?>
vuoi elminare la scheda?<br />
<!-- ..... -->
dimmi cosa risulta da quel var_dump
es. se ha selezionato il codice a77
se risulta
string(43) "DELETE FROM elenco_libri WHERE CODICE='a77'";
dovrebbe eliminare (hai messo giusti i dati di connessione?)
se invece
string(40) "DELETE FROM elenco_libri WHERE CODICE=''";
devo capire perche non trasmette il codice
 
ciao
ricapitolando.
spunti la conferma e clicchi su elimina:
la pagina non si muove e il record non viene eliminato?
il var_dump nan da nulla?
se non da nulla devo verificare come mai non entra nell'iff.
per sicurezza modifica
vuoi elminare la scheda?<br />
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="elimina">
<!-- eliminare è sempre un richio quindi ti metto che devi dare la conferma selezionando si-->
se si seleziona <input name="si" type="radio" value="<?php echo $_SESSION['code']; ?>"> e <input name="elimina" type="submit" id="elimina" value="elimina">
</form>
l'action vuota o così dovrebbe essere la stessa cosa, ma non si sa mai.
correggi e riprova
intanto io faccio alcune prove
 
Non succede niente... Troverò un altro modo... Comunque se aggiorno la pagina del dettaglio dopo aver aggiornato, il libro "scompare" nel senso che i dettagli si azzerano... Cercherò di studiare un altro modo
 
Ciao Borgo!
Ho fatto qualche correzione nel mio codice e l'eliminazione va...
Tuttavia ho riscontrato un paio di problemi...

1) PAGINA DELLA RICERCA.
Mi avevi consigliato di impostare come default la ricerca per codice. Quando provo a farla andare (di conseguenza cerco senza spuntare i radio button), la ricerca funziona ugualmente, ma spunta l'errore:

Notice: Undefined index: Radio_Ricerca in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\ricerca.php on line 88

E alla riga 88 c'è lo switch per i vari radio-button. Come lo metto a posto? Nel senso, gli dico "Mettimi questo se non c'è niente"?

2) PAGINA DEI DETTAGLI
Esegue l'eliminazione correttamente, ma una volta eliminata la variabile di sessione che contiene il codice, viene fuori questo errore:

Notice: Undefined index: code in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\dettagli_libro.php on line 43

Alla riga in questione c'è la query

$query = "SELECT * FROM elenco_libri WHERE CODICE='".$_SESSION['code']."' ORDER BY AUTORE, TITOLO";
che naturalmente non si ritrova più "code"...
 
ciao
se non erro nello switch manca un break
PHP:
<?php
//.......
    if(isset($_POST['Radio_Ricerca'])) {
        switch ($_POST['Radio_Ricerca']) {
            case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
            break;
            case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
            break;
            case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
            break;
            case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
            break;
            case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
            break;
            case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
            break;
            case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
            break; // QUESTO
			default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
            break;            
        } 
//.....
?>
prova e sappimi dire
poi guardo la session
 
ciao
nella scheda prova a commentare l'unset
PHP:
<?php
//....
 //unset($_SESSION['code']); 
//...
?>
oppure lasciando l'unset prova a reindirizzare direttamente alla pag di ricerca
PHP:
<?php
//....
	unset($_SESSION['code']);
	echo "li libro ".$_POST['si']." è stato eliminato<br />";
    echo "<meta http-equiv='Refresh' content='3; URL=cerca.php'>";
}
//...
?>
 

Discussioni simili