Problema php relativo a funzione di un pulsante

Giancarlo Lupo

Nuovo Utente
5 Mar 2016
6
0
0
Salve a tutti, sono nuovissimo del forum e chiedo il vostro aiuto per risolvere un piccolo problema relativo a un codice php:

PHP:
<!-- table of search -->

<form id="searchgiftregistry" method="POST" action="<?php echo $link ?>" >
<input name="searchgiftregistry" value="1" type="hidden" />
<table class="" style="margin-top: 112px; margin-bottom: 1px;">
  <tr>
    <td><label><?php echo __('',GIFTREGISTRY_TEXT_DOMAIN) ?></label></td>
  </tr>
  <tr>
    <td><input class="input-text4" type="text" name="grname" <?php if( isset($_SESSION['registrynamesearch'])) {?> value="<?php echo $_SESSION['registrynamesearch'] ?>" <?php }?>></td>
  </tr>
  
  <tr>
   <td><input class="cerca-lista2" type="submit" name="submit" value="<?php echo __('Cerca Lista' , GIFTREGISTRY_TEXT_DOMAIN) ?>"></td>
  </tr>
</table>
</form>
<!-- end table of search -->

Praticamente questa parte di codice gestisce un piccolo form in cui gli utenti del sito possono accedere e visualizzare la propria lista nascita. Il problema credo sia nella riga
PHP:
 <td><input class="cerca-lista2" type="submit" name="submit" value="<?php echo __('Cerca Lista' , GIFTREGISTRY_TEXT_DOMAIN) ?>"></td>
se provate ad entrare su http://mondo-piccino.com e nel box a sinistra sotto lo slide iniziale inserite la keyword 'listaprova' troverete una lista, ed eccoci arrivati al problema reale: se do l'ok il sistema mi ricarica la home e al successivo click sul pulsante cerca lista mi accede alla pagina, vorrei che il tutto non fosse effettuato con un ricarica home che non ha senso.

Grazie mille a tutti per le risposte.
 
Ciao,
PHP è un linguaggio server side, quindi da solo non può lavorare in modo asincrono (senza aggiornare la pagina): la soluzione è usare AJAX. Per citare Wikipedia:
In informatica AJAX, acronimo di Asynchronous JavaScript and XML, è una tecnica di sviluppo software per la realizzazione di applicazioni web interattive (Rich Internet Application). Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente.
Se sei deciso a procedere per questa strada, posso aiutarti a scrivere il codice necessario :)
 
Fatto!
Javascript:
Codice:
//modifica queste variabili
var id_campo = "campo_ricerca"; //id dell'input di ricerca
var id_risultati = "risultati_ricerca"; //id del div in cui mettere i risultati della ricerca
//qui comincia il codice vero e proprio
function richiestaAjax(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
 if (window.ActiveXObject){
  for (var i=0; i<activexmodes.length; i++){
   try{
	return new ActiveXObject(activexmodes[i])
   }
   catch(e){
   }
  }
 }
 else if (window.XMLHttpRequest)
  return new XMLHttpRequest()
 else
  return false
}
function carica(url){
	document.getElementById("risultati_ricerca").innerHTML = "Attendere, ricerca in corso..."
	var richiesta=new richiestaAjax()
	richiesta.onreadystatechange=function(){
		if (richiesta.readyState==4){
			if (richiesta.status==200 || window.location.href.indexOf("http")==-1){
				var risultato = richiesta.responseText
				document.getElementById(id_risultati).innerHTML = risultato
			}
			else{
				document.getElementById(id_risultati).innerHTML="Si &egrave; verificato un errore! Controlla la tua connessione ad Internet e riprova."
			}
		}
	}
	var termine_ricerca = "s=" + encodeURIComponent(document.getElementById(id_campo).value)
	richiesta.open("POST", url, true)
	richiesta.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
	richiesta.send(termine_ricerca)
}
HTML:
HTML:
<input type="text" id="campo_ricerca"><input type="button" value="cerca" onclick="carica('pagina_ricerca.php');">
<div id="risultati_ricerca">I risultati della ricerca appariranno qui.</div>
In pagina_ricerca.php dovrai inserire il codice php che effettua la ricerca e mostra i risultati. La/e parola/e cercata/e saranno contenute in $_POST['s'].
Per una demo, clicca qui

Fammi sapere se hai problemi nell'integrare il codice nel tuo sito o se hai dubbi :)
 
ciao altutto, ti ringrazio molto per il codice ma ho diverse difficoltà nel caricarlo e renderlo funzionale sul mio sito.
Cerchiamo insieme passo passo di caricarlo?
Incollo tutto il codice php che gestisce la ricerca da parte del plugin della pagina interessata, cosi magari è tutto più chiaro e mi puoi dare qualche dritta su come inserire le variabili come creare il file pagina_ricerca.php dove caricarlo, dove copiare il js e dove caricarlo, il tutto sapendo che stiamo lavorando su Wordpress.

Ecco il codice:

PHP:
<?php     
wp_enqueue_style('thickbox');
wp_enqueue_script('thickbox');    

$acount_page = get_page_by_path('my-account');

$account_link = get_permalink( get_option('woocommerce_myaccount_page_id'));
$my_account_page_url = get_permalink( get_option('woocommerce_myaccount_page_id'));
$w_page = get_permalink( get_option('follow_up_emailgiftregistry_page_id'));;
$http_schema = 'http://';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'])  {
	$http_schema = 'https://';
}
	
$request_link  = $http_schema. $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] ;
	
if (strpos($request_link, '?') > 0)  {
	$buy_link = $w_page. '&giftregistry_id=';
} else {
	$buy_link =$w_page . '?giftregistry_id=';

}

$giftregistry_id = get_option('follow_up_emailgiftregistry_page_id');

$giftregistry_page_path = get_permalink($giftregistry_id);


?>

<!-- Table of result -->

<?php 
$collection = array();
 		global $giftregistryresult;

if (isset($_SESSION['registryresult'])) $collection = $_SESSION['registryresult'];
$collection =$giftregistryresult ;

if (!empty($collection)) { 
?>
  <?php foreach ($collection as $item) {
  	$link =$buy_link .$item['id'];
	
  ?>

  <?php  } ?>
<?php  } ?>



<!-- End of result -->
<!-- table of search -->

<form id="searchgiftregistry" method="post" action="<?php echo $link ?>" >
<input name="searchgiftregistry" value="1" type="hidden" />
<table class="" style="margin-top: 112px; margin-bottom: 1px;">
  <tr>
    <td><label><?php echo __('',GIFTREGISTRY_TEXT_DOMAIN) ?></label></td>
  </tr>
  <tr>
    <td><input class="input-text4" type="text" name="grname" <?php if( isset($_SESSION['registrynamesearch'])) {?> value="<?php echo $_SESSION['registrynamesearch'] ?>" <?php }?>></td>
  </tr>
  
  <tr>
    <td> 
    
    <input class="cerca-lista2" type="submit" name="submit" onclick="alert('Ci sei quasi! Clicca su OK, reinserisci il codice lista e il gioco è fatto!')" value="<?php echo __('Cerca Lista' , GIFTREGISTRY_TEXT_DOMAIN) ?>"></td>
    
  </tr>
  
</table>

</form>


<!-- end table of search -->


</ul>

Se serve qualsiasi altra cosa fammi sapere
Grazie Mille
 
Ciao Giancarlo,
Scusami per il ritardo nel risponderti e per aver dimenticato di specificare dove andassero messi i codici che ho postato.
Non conosco bene la struttura di Wordpress, ma il codice Javascript dovrebbe andare in tutte le pagine che hanno un campo di ricerca, mentre invece pagina_ricerca.php dovrebbe essere la pagina del plugin che mostra come output soltanto i risultati, senza i tags <head> o <body>. Se non riesci a trovare quel file, è possibile che sia necessario adattarne uno esistente, fammi sapere se riesci, altrimenti sarò felice di aiutarti :)
 

Discussioni simili