PDA

Visualizza la versione completa : Selezionare un record in una pagina e inserire l'id corrispondente in un'altra


Saretta883
06-06-2012, 14:15
Ciao a tutti...
vi sottopongo il mio problema e spero che riuscirete a darmi qualche dritta.
Ho fatto una maschera in php che mostra in una tabella i dati relativi ai beni.
Nella parte bassa della tabella ho messo un link "Inserisci nuovo bene" che manda ad un'altra pagina nella quale è possibile inserire un nuovo bene.
Fra i campi da popolare per inserire un nuovo bene ci sono dei campi come per esempio ID_FORNITURA che l'utente non può ricordarsi a memoria.
Per questo motivo ho pensato di mettere a fianco della casella dove inseririre l'id della fornitura un link/un'immagine/un pulsante che rimanda ad un'altra pagina nella quale sia possibile vedere tutti i dati relativi alle forniture e selezionare quella interessata.
Una volta selezionata (tramite la spunta di un checkbox o di un radio) vorrei che si chiudesse la finestra in questione e venisse popolato il campo con l'id della fornitura selezionata.
Potreste darmi una mano??
Spero di essermi spiegata.
Il problema è: "come faccio una volta selezionata la fornitura a chiudere la finestra e far inserire l'id corrispondente nel text della fornitura???"

Grazie

Sara

danlupo
06-06-2012, 14:19
Ciao, invece di usare PHP non potresti usare l'autocomplete di jquery UI ?

Qui potresti avere due soluzioni: Se il nome dei fornitori è fisso allora puoi direttamente creare una lista nello script jquery, altrimenti se è un elenco dinamico puoi creare una tabella e poi fare l'encode JSON.

Così non hai un'altra pagina ma solo un campo di un form

Saretta883
06-06-2012, 14:29
A parte che non conosco jquery UI.
Cmq non si tratta del nome del fornitrore altrimenti l'avrei messo in un campo con la lista che popolo tramite query.
Si tratta di una FORNITURA alla fornitura è associato un FORNITORE una DATA DI FORNITURA ecc... cioè non c'è un campo che identifica univocamente la fornitura a parte l'id. Ovviamente non posso pretendere che l'utente si ricordi l'id della fornitura per questo motivo mi servirebbe fare quello che ti ho spiegato.
Vorrei far aprire una pagina a parte nella quale mostro tutte le informazioni sulla fornitura, l'utente seleziona quella desiderata e dopo la selezione si chiude automaticamente (va bene anche al click di un bottone) la pagina e viene mostrata la pagina precedente con il campo id fornitura popolato con l'id della fornitura selezionata.
Capito???

donotten
06-06-2012, 17:22
Ciao,
io risolverei così:
assegno l'Id della fornitura ad una variabile di sessione che utilizzerò per popolare il campo Id nella pagina a cui verrò riindirizzato.

esempio:


<?php session_start() ?>
<form method="GET">
<input type="checkbox" name="info" value="Id fornitura" /> Id fornitura
...
...
...
<input type="submit" name="submit" value="Vai alla pagina Nuova Fornitura" />
</form>

<?php
if (isset($_GET['info']) && $_GET['info'] == "Id fornitura")
{
$_SESSION['id_fornitura'] = $_GET['info']; //assegnazione della variabile di sessione
header('url_della_pagina'); //riindirizzamento alla pagina col form
}
?>


Nella pagina a cui vieni reindirizzata:


<?php
@session_start();
?>

<form method="GET">
<input type="text" name="id_fornitura" value="<?php $_SESSION['id_fornitura'] ?> /">
...
...
...
</form>


spero di esserti stato d'aiuto,
ciao

Saretta883
07-06-2012, 08:32
si...pensavo di utilizzare le variabili di sessione ma il mio problema è:
qual'è il comando che fa aprire una nuova pagina? non una nuova scheda ma una nuova pagina...qual'è?
Una volta risolto questo problema....il problema successivo è il seguente:
Una volta che l'utente ha scelto la fornitura dovrà premere su un pulsante e al click l'evento che dovrà scatenarsi sarà:
1- la chiusura della pagina (so come si fa),
2- il refresh della pagina che era rimasta aperta (non so proprio come si possa fare).
Qualche idea??

donotten
07-06-2012, 09:06
Buongiorno,
Per fare il refresh la funzione è la stessa del riindirizzamento


<?php
header('location:url_pagina_corrente.php'); //aggiorni la pagina corrente
header('location:url_pagina_nuova.php'); //redirect su un altra pagina
?>

Per aprire una nuova finestra devi utilizzare javascript:
http://www.w3schools.com/jsref/met_win_open.asp

Se però quello che intendi fare è aprire una nuova istanza del browser, non ti servirà a molto perchè perderai le variabili di sessione

Ciao

Saretta883
07-06-2012, 09:15
Che stupida o.O'
cit."Se però quello che intendi fare è aprire una nuova istanza del browser, non ti servirà a molto perchè perderai le variabili di sessione".
Ovvio...hai perfettamente ragione.
Cmq io mi trovo nella pagina "UNO.PHP" qui faccio click su un pulsante e mi si aprirà la SCHEDA "DUE.PHP" scelgo la fornitura desiderata (selezionando il radio opportuno).
Sempre da questa pagina faccio click sul pulsante che:
1- mi fa chiudere la scheda (ok!)
2- mi fa aggiornare la pagina che era rimasta aperta "UNO.PHP" (come faccio???)



<?php
header('location:url_pagina_corrente.php'); //aggiorni la pagina corrente
header('location:url_pagina_nuova.php'); //redirect su un altra pagina
?>


Dove lo metto questo codice??? l'header fa in modo che nella finestra dove mi trovo venga aperta la pagina specificata nell'url, no?
Quindi se inserisco questo codice nella pagina "DUE.PHP" ottengo che in quella scheda mi viene caricata la pagina "UNO.PHP", così avrei aperta 2 volte la stessa pagina e non va bene, sbaglio?
Come posso risolvere il problema???
Help :dhò:

donotten
07-06-2012, 10:08
Ok, ho capito cosa vuoi fare,
ma temo che in php non ci sia modo di avere controllo sulle schede aperte dal tuo browser..
con javascript puoi, ma visto che non lo conosco bene, onde evitare di dirti minchiate ti linko questo:

http://www.grizzlyweb.com/webmaster/javascripts/refresh.asp

la funzione dovrebbe essere window.location.replace,

cmq per semplificare il tutto non potresti fare:
1: vado sul form nuova fornitura
2: non mi ricordo l'id, clicco sul link delle info => header('location:info.php') vengo riindirizzato alla pagina info senza l'apertura di una nuova scheda
3: check box sull'id e alla pressione del pulsante submit => assegna la variabile di sessione e header di nuovo sulla pagina del form, che adesso avrà il value dell'Id aggiornato.
(se nn fosse così leva la cache)


header("Cache-Control: no-cache");
header("Pragma: no-cache");

tutto quando nella stessa scheda..

Saretta883
07-06-2012, 10:57
Non c'avevo pensato...anche questa potrebbe essere un'idea!
Molto ma molto poco carina ma sicuramente funzionale...adesso provo a vedere il link che mi hai postato e se non ci riesco prenderò in considerazione il tuo suggerimento.
Grazie mille :)

donotten
07-06-2012, 11:26
Figurati ;)
Purtroppo io sono alle prime armi e non saprei darti ulteriori info..
cmq ho il sospetto che per gestire questo tipo di situazioni, la libreria JQuery sia la soluzione più adatta.. :mem:

se trovo qualcosa ti aggiorno,

ciao

Loading