Ricerca da una pagina e visualizza in un'altra

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ciao Ragazzi,
a causa del lavoro è da tanto che non programmo e non scrivo. Adesso sto tornando.

Ho un db mysql che contiene una tabella: codice, immagine, descrizione, testo, scheda

dove codice contiene un valore numerico, immagine il nome (in .jpg) di una immagine che sta sul db.

Vorrei avere due pagine web in cui: nella prima ho una cella che mi permette di scrivere un valore numerico e dando INVIO mi cerca nel db la tupla con codice uguale a quello inserito in cella e mostra il risultato in un'altra pagina (che ho già preparato e strutturato). La pagina di visualizzazione deve visualizzare per "xx" secondi e poi tornare alla prima pagina (non è un problema perché utilizzo:
PHP:
header("refresh:60;url=ricerca_e_visualizza.php");
)

Vi posto il codice della pagina che contiene la cella di inserimento:
PHP:
<?php
ob_start();
?>

<html>
<head>

<style type="text/css">
body {
    background-color: #C0C0C0;
    color: #fff;
    font-family: Verdana, sans-serif;
    font-size: 14px;
}
 
#form {
    width: 500px;
    margin: 50px auto;
    background: #222;
    padding: 25px;
    overflow: hidden;
 
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
}
 
h1 {
    font-size: 16px;
    color: #FCCC69;
    margin-bottom: 20px;
}





label, input, textarea { /* Stili comuni agli elementi del form */
    color: #dedede; /* Colore del testo */
    float: centre-left; /* Float a sinistra */
    font-family: Verdana, sans-serif; /* Tipo di carattere per il testo */
    margin: 10px 0; /* Margini */
}
label { /* Stili per la label */
    display: block; /* Impostiamo la label come elemento blocco */
    line-height: 30px; /* Altezza di riga */
    width: 150px; /* Larghezza */
}
 
input, textarea { /* Stili per il campo di testo e per la textarea */
    background: #FFA500; /* Colore di sfondo - prima era #1C1C1C */
    border: 5px solid #323232; /* Bordo */
    color: #fff; /* Colore del testo */
    height: 60px; /* Altezza */
    line-height: 60px; /* Altezza di riga */
    width: 300px; /* Larghezza */
    padding: 0 10px; /* Padding */
}
 
input { padding-left: 30px;
 
textarea { /* Stili specifici per la teaxtarea */
    background: #1C1C1C url('images/social_balloon.png') no-repeat 235px 95px; /* Sfondo con immagine */
    font-size: 12px;
    height: 200px;
    width: 320px;
    overflow: hidden; /* disabilitare la scrollbar in IE */
}
</style>


<title> Ricerca e visualizza HTML/PHP/JAVASCRIPT </title>
</head>


<P ALIGN="CENTER">
	<FONT COLOR="#FF0000" SIZE = 7> Ricerca e visulizza </FONT> <br>
	</P>


<FORM METHOD="post" ACTION="visualizza.php"> <!Metodo POST, le informazioni inviate da un form con il metodo POST sono invisibili agli altri e non ha limiti sulla quantitÃ* di informazioni da inviare>
	
<input type="text" name="foo" id="foo"/>
<script>
    document.getElementById("foo").focus();
</script>	

<INPUT TYPE="submit" VALUE="-">
</FORM>		



<body>
<?php
header("refresh:60;url=ricerca_e_visualizza.php");
?>


<br>
<hr>
<br/>


</body>
</html>

<?php
ob_end_flush();
?>

A questo punto, capisco bene che dovrei fare una SELECT con WHERE in cui confrontare il valore numerico che è stato immesso nella cella con i valori che nella colonna "codice", fatto questo, se lo trova, devo stampare la corrispondente riga.

Mi domando: ma la SELECT la devo fare nell'altra pagina e invece dalla prima pagina devo passare il valore numerico.

Potete gentilmente aiutarmi?

Grazie
 
Ciao, un pò contorto il modo di esporre la domanda!!! comunque cerco di interpretare.
Come prima cosa mi salta all'occhio che l'apertura del tag body è sbagliata devi metterla dopo la chiusura del tag head.
Stai utilizzando un tag obsoleto "font" da sostituire eventualmente con un tag <span></span> assegnandogli un id o classe e specificare con uno stile css le caratteristiche.
Se fai un "action" sulla pagina "visualizza.php" è su quest'ultima che devi recuperare il POST e fare la SELECT, in questa pagina metti il redirect a tempo che dipende come strutturata la pagina, può essere fatto in diverse maniere.
esempio
PHP:
PHP:
<?php
   ob_start();
   echo "Se il tuo browser non supporta il redirect clicka <a href=\"tuapagina.php\">qui</a>.";
   header( "refresh:5;url=tuapagina.php" );
   ob_end_flush();
?>
oppure in javascript:
Codice:
<script type="text/javascript">
function redirect() {
  location.href = "tuapagina.php";
}
window.setTimeout("redirect()", 5000);
</script>
Spero di aver capito e centrato li problema...
ciao
 
Ultima modifica:
Ciao, grazie per la risposta.
Ho capito, ma per fare il POST ok ma la pagina di inserimento è corretta?
Cioè nella pagina nuova per recuperare il post dovrei fare:
$prova = "SELECT * FROM tabella WHERE codice =".$POST[" "];
ma cosa mettere in quelle quadre? cioè credo che il mio problema sia quello del passaggio di parametri. come posso risolvere?
 
Per recuperare i dati in POST (nel tuo caso è da recuperare solo il nome del file inserito nel campo)
PHP:
$foo=$_POST['foo'];
in questa maniera recuperi quindi il valore inseito nel campo, poi fai la query:
PHP:
$sql="SELECT * FROM tabella WHERE codice ='".$foo."'";
$rs=@mysql_query($sql) or die("Errore query Database");
	while($riga=mysql_fetch_array($rs)){
	$codice = $riga['codice'];
	
echo $codice;//qui visualizzi l'immagine
}
 
Ultima modifica:
RISOLTO - Ricerca da una pagina e visualizza in un'altra

Grazie per il consiglio, effettivamente già ieri sera ci ero riuscito perché mi sono andato a studiare i Metodi $_GET e $_POST.
Per chiunque dovesse leggere questo post, se in una pagina avete ad esempio:

PHP:
<FORM METHOD="post" ACTION="visualizza.php"> <!Metodo POST, le informazioni inviate da un form con il metodo POST sono invisibili agli altri e non ha limiti sulla quantità* di informazioni da inviare>
	
<input type="text" name="foo" id="foo"/>
<script>
    document.getElementById("foo").focus();
</script>	

<INPUT TYPE="submit" VALUE="-">
</FORM>

ovvero una casella/area di testa in cui potete inserire valori, questi valori potete recuperarli in un'altra pagina mediante il metodo $_POST, come:

PHP:
$query ="SELECT * FROM tabella WHERE valore = $_POST[foo]"; //mediante $_POST[foo] recupero il valore inserito nell'area di testo della pagina di provenienza. "foo" è il contenuto di name: <input type="text" name="foo" />

Sia io che "filomeni" abbiamo utilizzato "foo" che è proprio il nome dell'input type:
Codice:
<input type="text" name="foo" id="foo"/>

Nel mio caso che dovevo:
- scrivere nella cella (pagina 1)
- cercare in una tabella
- visualizzare il contenuto quando il campo è uguale (pagina 2)

ho recuperato e fatto la SELECT così:

PHP:
....

  $query ="SELECT * FROM tabella WHERE valore = $_POST[foo]"; //mediante $_POST[foo] recupero il valore inserito nell'area di testo della pagina di provenienza. "foo" è il contenuto di name: <input type="text" name="foo" />

	$result = mysql_query($query, $connessione);

        $numrows = mysql_num_rows($result);


//Avvio un ciclo for che si ripete per il numero di occorrenze trovate
  for($x=0; $x<$numrows; $x++){
    //Recupero il contenuto di ogni record rovato
    $resrow = mysql_fetch_row($result); //mysql_fetch_row() recupera il contenuto dei record trovati. Più precisamente restituisce un array contenente i valori di ogni campo riscontrati nel recordset
    
$var1 = $resrow[0];
$var2 = $resrow[1];
    $var3 = $resrow[2];
    $var4 = $resrow[3];
    $var5 = $resrow[4];    

    
//Stampo il risultato
   
    echo $var1;
    echo $var2;
    echo $var3;
    echo $var4;
    echo $var5;

//Nota queste stampa sono solo a scopo didattico, realmente ho utilizzato il codice per alto
 
  } //fine ciclo for

...
 

Discussioni simili