Entra

View Full Version : php: uso di form


me88
27-09-2010, 11:50
Sto programmando in php, in particolare ho una pagina contenente un form con due select per effettuare una ricerca.
con i valori di queste due select effettuo una query.
vi chiedevo se esiste un modo per fare questo tutto in una stessa pagina, mi spiego meglio in modo che il risultato della query mi appaia sotto il form senza dover usare un bottone submit che passi questi valori in una seconda pagina dove poi andrà a stampare la query.

dojolab
27-09-2010, 12:50
Sto programmando in php, in particolare ho una pagina contenente un form con due select per effettuare una ricerca.
con i valori di queste due select effettuo una query.
vi chiedevo se esiste un modo per fare questo tutto in una stessa pagina, mi spiego meglio in modo che il risultato della query mi appaia sotto il form senza dover usare un bottone submit che passi questi valori in una seconda pagina dove poi andrà a stampare la query.

Il SUBMIT lo devi comunque fare a meno che non usi JS e auto-mandi il FORM alla fine del completamento dei campi.

In alternativa puoi integrare il codice PHP nella stessa pagina del form (anche se è una pessima scelta a livello logico) e usare il SELF per ricaricare se stessa all'invio del FORM.

pabloski
27-09-2010, 13:39
Riguardo il non ricaricare la pagina puoi usare ajax. In ogni caso utilizza Jquery per gestire il tutto, così eviti di impazzire.

vladix
27-09-2010, 14:07
e la seconda volta che consiglio dojo ( spero che mi paghino ghgh )
cmq ritornando a noi ... puoi fare tutto nella stessa pagina utilizzando ajax , e visualizzare il risultato della query con un widget di dojo (http://docs.dojocampus.org/dojox/grid/DataGrid).

questo è un esempio che ho preso dal sito di dojo ed ho addattato al caso tuo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html dir="ltr">

<head>
<style type="text/css">
body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
</style>
<script src="/dojo/dojo/dojo.js" djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
dojo.require("dojox.grid.DataGrid");
dojo.require("dojox.data.CsvStore");

var grid4 = false;

dojo.addOnLoad(function() {
// our test data store for this example:
var store4 = new dojox.data.CsvStore({ data: 'col1, col2, col3\n'});

// set the layout structure:
var layout4 = [{
field: 'col1',
name: 'Column 1',
width: '200px'
},
{
field: 'col2',
name: 'Column 2',
width: '50px'
},
{
field: 'col3',
name: 'Column 3',
width: 'auto'
}];

// create a new grid:
grid4 = new dojox.grid.DataGrid({
query: {
Title: '*'
},
store: store4,
clientSort: true,
rowSelector: '20px',
structure: layout4
},
document.createElement('div'));
// append the new grid to the div "gridContainer4":
dojo.byId("gridContainer4").appendChild(grid4.domNode);
// Call startup, in order to render the grid:
grid4.startup();
});

// carica il risultato della query nella tabella in modo asincrono
function caricaGrid(){

var paramValue = 'xd';

dojo.xhrGet( {

url: "indirizzo server",
handleAs: "text",
// qui metti in formato json i parametri che devi inviare
content: {param1: "value1" , param2: paramValue} ,

timeout: 5000,
load: function(response, ioArgs) {
try{
// il risultato ritornato dal server deve essere scritto in questo formato:
// - "colum1, column2 , column3 \nrow1value1, row1value2, row1value3 \nrow2value1, row2value2, row2value3 \n"
// - gli '\n' sono utilizzati per indicare che si sta iniziando una nuova riga
// - la prima riga deve contenere sempre i nomi delle colonne
grid4.setStore( new dojox.data.CsvStore({data:response}));
}catch(err){alert(err.description);}
return response;
},
error: function(response, ioArgs) {}
}
);
}
</script>
<link rel="stylesheet" type="text/css" href="/dojo/dijit/themes/claro/claro.css"
/>
<style type="text/css">
@import "/dojo/dojox/grid/resources/Grid.css";
@import "/dojo/dojox/grid/resources/claroGrid.css";
.dojoxGrid table { margin: 0; } html, body { width: 100%; height: 100%;
margin: 0; }
</style>
</head>

<body class=" claro ">

<select onChange="caricaGrid()"></select>
<div id="gridContainer4" style="width: 100%; height: 100%;">
</div>
</body>

</html>

onestamente non ho provato questo codice ma dovrebbe andare ...

me88
27-09-2010, 16:11
grazie per le risposte, adesso vedrò come risolvere!

me88
27-09-2010, 16:27
Il SUBMIT lo devi comunque fare a meno che non usi JS e auto-mandi il FORM alla fine del completamento dei campi.

In alternativa puoi integrare il codice PHP nella stessa pagina del form (anche se è una pessima scelta a livello logico) e usare il SELF per ricaricare se stessa all'invio del FORM.

volendo usare il SELF come faccio?
in action cosa metto? e poi come recupero i valori nel codice php per generare la query?

dojolab
27-09-2010, 17:35
volendo usare il SELF come faccio?
in action cosa metto? e poi come recupero i valori nel codice php per generare la query?

Self lo puoi ottenere in due modi:


facendo puntare l'action del form alla medesima pagina .php del form
al posto dell'action alla pagina .php, mettere un $_SERVER["PHP_SELF"]


nella medesima pagina avrai il ritorno in post/get (dipende da cosa scegli tu) dei dati passati nel form.
:)