|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
[PHP] Interrogazione SQL come renderla dinamica?
CIao, sto cercando il modo di creare delle pagine in HTML e PHP per presentare i risultati di una ricerca in un database fatta attraverso una query SQL nella quale inserisco i valori presi da un form.
Fin qui ci sono riuscito creando le seguenti pagine:
Faccio un esempio che spero aiuti a spiegarrmi: a pagina 1 indico che voglio fare una ricerca tra tutti gli utenti che vivono a Roma. A pagina 2 mi vengono presentati in una tabella tutti i risultati trovati dalla query: Codice:
SELECT * FROM Utenti WHERE comune='Roma' Quindi: Codice:
SELECT * FROM Utenti WHERE comune='Roma' AND sesso='F' Se mi date qualche parola chiave da cercare potrei anche provare a cercare su Google se c'è qualcosa di simile a cui ispirarsi. GRAZIE!!! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Con javascript hai tutto quello che ti serve. In linea di principio dovresti al click nel menù far partire una richiesta ajax passando cosa è stato clickato ad una pagina PHP(che può essere anche quella in cui sei). Questa pagina PHP deve fare echo del contenuto che deve cambiare. La chiamata ajax prende in ingresso una funzione da eseguire se ha avuto successo e a cui viene passato automaticamente come argomento la risposta della pagina PHP. A quel punto non ti resta che sostituire i tuoi dati (che avrai avuto l'accortezza di mettere dentro un div per sostituire tutto in una volta sola) con ciò che ti ha ritornato la chiamata ajax dentro questa funzione.
Ho fatto cose simili solo con jQuery quindi se vuoi posso farti un esempio con quello. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
Intanto grazie 1000 della risposta. Personalmente non conosco jQuery però non è un problema studiarlo ed impararlo se serve a raggiungere il mio obiettivo. Preferisco leggere un libro che mi insegni qualcosa di utile piuttosto che rincitrullirmi a guardarre la De Filippi in TV.
Sarei molto felice di poter vedere un esempio pratico se ne hai fatto uno simile anche se, come ho già detto, devo proma studiarmi almeno un po' come funziona jQuery per comprenderlo cmq intanto se non ti dà problemi lo potresti postare qui sul forum oppure ti posso fornire il mio indirizzo e-mail via messaggio privato...come preferisci. Grazie! |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Beh, di jquery per usare l'ajax non ti serve sapere molta roba.
L'unica cosa che devi fare è: Codice:
$.ajax({
url: 'test.php',
data: 'sex=F',
type: 'POST',
success: function(data) {
$('#result').html(data);
}
});
test.php sarà una pagina che controlla che parametri sono passati in POST, esegue la query basandosi sui parametri e crea l'output ma che non farà return ma echo. Prova e poi dimmi pure qua se ti serve sapere qualcosa. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
Dopo una veloce studiata di JQuery sono riuscito ad utilizzare effcacemente e piuttosto velocemente il tuo codice. Grazie!
Mi resta però un dubbio, al momento i valori che la pagina "test.php" li scrivo io manualmente nel codice della pagina quindi sono sostanzialmente fissi. Vorrei utilizzare invece un form che mi permetta di inserire direttamente dal browser il valore. Ho scritto il seguente codice che chiede il nome e poi nella pagina 03.php tramite un echo lo "stampa a video". Codice:
<HTML>
<HEAD>
<script type="text/JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</HEAD>
<BODY>
<form action="03.php" method="post">
<input type="text" name="nome" size="15">
<input type="submit" value="Calcola" id="Calcola" tabindex="110"></p>
</form>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$.ajax({url:"03.php", type: 'POST',data: 'nome=Nicola', success:function(data){
$("#result").html(data);
}});
});});
</script>
<div id="result">Testo prima del cambiamento</div>
</BODY>
</HTML>
Come posso fare? Mi basta anche qualche input poi cerco di documentarmi in autonomia. Grazie ancora! Ultima modifica di *nicola* : 07-05-2011 alle 21:07. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Per prendere il valore dal form:
Codice:
$("button").click(function(){
var data = 'nome=' + $('input[name=nome]').attr('value');
$.ajax({url:"03.php", type: 'POST',data: data, success:function(data) {
$("#result").html(data);
}});
});
Codice:
$("button")
Codice:
$("#Calcola")
Tra l'altro, alla fine della funzione al click metti Codice:
return false; |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
Ti ringrazio! Ora funziona benone, cercando sul web avevo trovato serialize() però non riuscivo a far apparire i risultati in un formato diverso da name=Nicola, in pratica non riuscivo a far venire fuori solo "Nicola".
Mi permetto di romperti le scatole ancora una volta (spero che sia l'ultima). Sto cercando di generalizzare un po' l'esempio per farlo funzionare con 2 input (nome e cognome) anzichè con solo il nome però non ci riesco. Inserendo qualche linea scovata su Internet sono arrivato a questo punto però lo script fallisce e mi apre la pagina 03.php senza usare AJAX. Codice:
<HTML>
<HEAD>
<script type="text/JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</HEAD>
<BODY>
<form action="06.php" method="post">
<input type="text" name="nome" size="15">
<input type="text" name="cognome" size="15">
<input type="submit" value="Calcola" id="Calcola" tabindex="110"></p>
</form>
<script type="text/javascript">
$("#Calcola").click(function(){
var nome = 'nome=' + $('input[name=nome]').attr('value');
var cognome = 'cognome=' + $('input[name=cognome]').attr('value');
$.ajax({url:"03.php", type: 'POST',"nome=" + nome + "cognome=" + cognome, success:function(nome, cognome) {
$("#result").html(nome, cognome);
}});
return false;
});
</script>
<div id="result">Testo che si legge prima del cambiamento</div>
</BODY>
</HTML>
Codice:
<?php $nome=$_POST["nome"]; $cognome=$_POST["cognome"]; echo"Io mi chiamo $nome"; echo"e $cognome di cognome"; ?> |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Penso il problema sia dovuto al modo in cui mandi i dati. Se il problema è quello le soluzioni sono 2.
Se continui ad usare la stringa devi mettere & tra una variabile e l'altra e quindi diventa Codice:
"nome=" + nome + "&cognome=" + cognome Altrimenti passi agli oggetti: Codice:
var data = {};
data['nome'] = $('input[name=nome]').attr('value');
data['cognome'] = $('input[name=cognome]').attr('value');
Codice:
{
url:"03.php",
type: 'POST',
data: "nome=" + nome + "cognome=" + cognome,
success:function(nome, cognome) {
$("#result").html(nome, cognome);
}
}
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
Che bellezza...ho risolto grazie!
Posto il codice nel caso in cui possa tornare utile ai posteri. Allora il codice della pagina con il form è: Codice:
<HTML>
<HEAD>
<script type="text/JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</HEAD>
<BODY>
<form action="06.php" method="post">
<input type="text" name="nome" size="15">
<input type="text" name="cognome" size="15">
<input type="submit" value="Calcola" id="Calcola" tabindex="110"></p>
</form>
<script type="text/javascript">
$("#Calcola").click(function(){
var nome = 'nome=' + $('input[name=nome]').attr('value');
var cognome = 'cognome=' + $('input[name=cognome]').attr('value');
$.ajax({url:"06.php", type: 'POST',data: "nome=" + nome + "&cognome=" + cognome, success:function(nome, cognome) {
$("#result").html(nome, cognome);
}});
return false;
});
</script>
<div id="result">Testo che si legge prima del cambiamento</div>
</BODY>
</HTML>
Codice:
<?php $nome=$_POST["nome"]; $cognome=$_POST["cognome"]; echo"Il mio nome è $nome, il mio cognome, se non ricordo male, è $cognome." ?> |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
|
le parti in rosso ovviamente rappresentano gli errori nel codice.
I primi 2 sono ovvi perchè Codice PHP:
Lasciando come sta ora nella pagina 06.php la variabile nome diventerà "nome=PIPPO" invece di essere soltanto "PIPPO" e l'echo risultante sarà "Il mio nome è nome=PIPPO, il mio cognome, se non ricordo male, è cognome=ROSSI." Perciò bisogna eliminarli da var nome e cognome...e fare direttamente Codice PHP:
Codice PHP:
Lasciando il codice come l'hai scritto tu, cognome dovrebbe essere una variabile non definita...infatti se provi a eliminarla e mettere soltanto $("#result").html(nome); vedrai che ti scriverà nell'html sempre lo stesso risultato. La soluzione sarebbe Codice PHP:
Ultima modifica di black_wizard : 10-05-2011 alle 12:03. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Grazie, comunque non sono io l'autore del thread xD
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Ragazzi ho un problema.. Nell'html generato dal mio script ho una tabella con dei link che si possono cliccare per far qualcosa ma qua dentro non so come gestirla. Cioè, questa tabella ce l'ho anche da un'altra parte senza essere richiamata da ajax e funziona alla perfezione. Invece, richiamata da ajax, non so come gestire i link. Non so neanche che pagina dovrei richiamare. Qualcuno mi dà un hint?
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 408
|
Quote:
|
|
|
|
|
|
|
#17 | |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Quote:
Se ti sembra il tuo caso ne parliamo meglio (in un altro thread) sennò spiega meglio che succede. ^^ |
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Feb 2009
Città: Varese
Messaggi: 205
|
perchè non usare json_encode?
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Feb 2009
Città: Varese
Messaggi: 205
|
per passare i dati,tramite ajax,da pagine php
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:33.




















