Mandare in stampa una nuova pagina

Ciao

Ricollegandomi alla mia discussione qui:

http://www.phpnews.it/forum/index.php?topic=1726.0

La funzione "conferma" richiamata dal tasto Conferma dovrebbe (dopo aver eseguito

le altre operazioni) per ultimo far aprire una nuova pagina del browser (magari con misure da me stabilite)

che sia mandata direttamente alla stampa.

Questa finestra di pop-up a sua volta prima di essere stampata ovviamente richiamerebbe i dati

completi dal db per visualizzare la fattura terminata.

E' possibile farlo?

grazie ancora

inviato 9 anni fa
frankphp
X 0 X

E' possibile associare alla pressione di un tasto l'apertura di una pop-up. Non credo però che sia possibile far precedere ulteriori operazioni sul server. Temo infatti che la pop-up possa apparire prima che sul server siano state concluse le operazioni di conferma.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

E' possibile associare alla pressione di un tasto l'apertura di una pop-up. Non credo però che sia possibile far precedere ulteriori operazioni sul server. Temo infatti che la pop-up possa apparire prima che sul server siano state concluse le operazioni di conferma.

 :bye:

Cosa proponi, allora?

Aggiungo un tasto "STAMPA" da cliccare subito dopo il tasto "conferma"?

In ogni caso, come si apre la finestra di pop up con le dimensioni richieste?

grazie

risposto 9 anni fa
frankphp
X 0 X

La funzione di stampa va sicuramente separata dalle altre funzioni e va eseguita solo su richiesta. Per il codice necessario ad aprire una popup basta che cerchi nel forum o con google "javascript popup"

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

La funzione di stampa va sicuramente separata dalle altre funzioni e va eseguita solo su richiesta. Per il codice necessario ad aprire una popup basta che cerchi nel forum o con google "javascript popup"

 :bye:

quindi inserisco un nuovo bottone "stampa" che faccia aprire una finestra di pop up

e che invia la richiesta di stampa per la pagina di pop up. Giusto?

Esiste anche una funzione javascript per stampare la pagina visualizzata?

grazie

risposto 9 anni fa
frankphp
X 0 X

window.print();

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

window.print();

 :bye:

Si va bene il tasto stampa.

Però ho dimenticato una cosa.

Il tasto stampa deve far aprire una finestra di pop up di tot dimensioni

(a proposito, quali sono le dimensioni consigliate visto che la pagina deve essere

stampata per intero su un foglio A4?)

che poi con la funzione:

window.print();

da te suggerita dovrebbe mandare automaticamente la pagina in stampa.

Ho dimenticato che questa pagina ( stampa.php) deve richiamare di nuovo i dati completi

della fattura finita dal db cosi visualizzera i dati principali

della fattura + i vari articoli che sono stati associati alla stessa tramite

l'id_fattura (magai faccio un join..non so ancora bene) in modo da

ricreare nella finestra di pop up la fattura completa di prima.

La domanda è:

E' possibile con javascript associate il comando stampa e in più

inviare la variabile (id fattura) al codice php della pagina in pop up

stampa.php?

Devo usare un'altro submit?

come?

grazie

risposto 9 anni fa
frankphp
X 0 X

quando apri la pop-up richiami un URL che verrà caricato nella finestrella. Questo url punterà allo script PHP che genererà la pagina da stampare. Nell'URL, come parametro GET, potrai inserire l'id della fattura da mostrare (e da stampare).

Per effettuare la stampa automaticamente all'apertura della pop-up basta mettere nell'HTML generato dallo script in questione un evento onLoad (nel tag body):

<body onload="javascript: window.print();">

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

quando apri la pop-up richiami un URL che verrà caricato nella finestrella. Questo url punterà allo script PHP che genererà la pagina da stampare. Nell'URL, come parametro GET, potrai inserire l'id della fattura da mostrare (e da stampare).

Per effettuare la stampa automaticamente all'apertura della pop-up basta mettere nell'HTML generato dallo script in questione un evento onLoad (nel tag body):

<body onload="javascript: window.print();">

 :bye:

Ok! Bottone, pop- up e stampa vanno bene.....ma c'è ancora un problema.

Non riesco ad inviare la variabile.

la variabile è l'id_fattura

che dovrebbe essere presa da questa funzione:

function conferma($id2,$not,$aspetto) {
if($id2 != 0){

global $numero, $tot_fatt;

$oggi = time();

$sql3 = mysql_query("INSERT INTO fatture (numero_fatt, id_cliente, totale, data, annotazioni, aspetto)
VALUES ('$numero', '$id2', '$tot_fatt', '$oggi', '$not', '$aspetto');");
$id_fatt =    mysql_insert_id();

$sql4 = mysql_query("SELECT * FROM carrello");

while( $row2 = mysql_fetch_array($sql4) )
 {
 $codi = $row2['codice'];
 $desc = $row2['descrizione'];
 $qua = $row2['quantita'];
 $prezzou = $row2['prezzo_un'];
 $iv = $row2['iva'];


$sql5 = mysql_query("INSERT INTO prodotti_acquistati (codice, descrizione, quantita, prezzo_un, iva, id_fattura)
VALUES ('$codi', '$desc', '$qua', '$prezzou', '$iv', '$id_fatt');");
  }
delete_all();
}

non riesco ad inviarla con questo tasto:

<td width=\"45%\" height=\"25\" align=\"left\">
   <input type=\"submit\" class=\"btn\" Value=\"Stampa\" onclick=\"javascript:Popup('stampa.php?variabile=$id_fatt')\"
   onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\"></td>
   </tr>

se creo una variabile generica sopra a questo codice ad esempio

$var = 73;

e la inserisco così:

onclick=\"javascript:Popup('stampa.php?variabile=$ivar')\"

Il numero 73 viene effettivamente inviato e visualizzato dalla pagina stampa.php

quindi il problema è che non riesco a catturare la varibile id_fatt dalla funzione conferma,

che anche in questo caso è richiamata da una tasto submit.

Come risolvo?

grazie

risposto 9 anni fa
frankphp
X 0 X

Ciao

Nella pagina stampa.php come recuperi la variabile $id_fattura?

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Ciao

Nella pagina stampa.php come recuperi la variabile $id_fattura?

 :bye:

così:

 $nuovavariabile=$_REQUEST['variabile'];

ma non è questo il problema.

E' che la varibile non viene fuori dalla funzione "conferma" forse perchè la

pagina viene aggiornata.

Ho ipotizzato 2 soluzioni:

la prima prevede un request anche nel tasto stampa..ma in questo caso come si invia

la varibile dalla funzione conferma sopra?

la seconda invece prevede la creazione di una nuova funzione "stampa" che faccia

la solita selec dal db ecc ecc.

Che ne dici?

Gradirei, per piacere, un chiarimento e la soluzione su entrambi i metodi proposti.

Ho un po' le idee confuse in merito (colpa della mio impegno nella programmazione

php "mordi_e_fuggi")....scusate ::)

Grazie

risposto 9 anni fa
frankphp
X 0 X

Non ho letto tutto il codice scusami però hai preso in considerazione l'idea di salvare id_fattura dentro ad una variabile di sessione?

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Non ho letto tutto il codice scusami però hai preso in considerazione l'idea di salvare id_fattura dentro ad una variabile di sessione?

 :bye:

Non so usare le sessione. Come dovrei fare?

Poi se devo creare una nuova fattura, mi rimane in memoria con le sessioni

il valore della vecchia id_fatt.

ciao

risposto 9 anni fa
frankphp
X 0 X

Se devi fare una nuova fattura controlli che non sia già presente, se c'è lo svuoti.

Le sessioni non sono difficili da usare, anzi, quindi ti rimando a: http://www.phpnews.it/articoli/php/le-sessioni/

risposto 9 anni fa
LonelyWolf
X 0 X

Se devi fare una nuova fattura controlli che non sia già presente, se c'è lo svuoti.

Le sessioni non sono difficili da usare, anzi, quindi ti rimando a: http://www.phpnews.it/articoli/php/le-sessioni/

Me le stufio, ok.

In ogni caso è possibile inviare questa variabile dalla funzione "conferma" di cui sopra?

ps: bentornato! ;)

risposto 9 anni fa
frankphp
X 0 X

Se devi fare una nuova fattura controlli che non sia già presente, se c'è lo svuoti.

Le sessioni non sono difficili da usare, anzi, quindi ti rimando a: http://www.phpnews.it/articoli/php/le-sessioni/

Me le stufio, ok.

In ogni caso è possibile inviare questa variabile dalla funzione "conferma" di cui sopra?

ps: bentornato! ;)

Grazie!

Per sommi capi (xò stufiale :D ) le sessioni si usano così:

* in ogni pagina che utilizza le sessioni deve esserci un session_start();

* per "salvare" un variabile in sessione: $_SESSION[nome_a_scelta] = $variabile/valore, nel tuo caso potrebbe essere: $_SESSION[id_fatt] = $id_fatt;

* per "recuperare" il valore il contrario: $variabile = $_SESSION[nome_a_scelta] nel tuo caso: $id_fatt = $_SESSION[id_fatt]

* per eliminare la variabile dalla sessione usi unset

risposto 9 anni fa
LonelyWolf
X 0 X

Per sommi capi (xò stufiale :D ) le sessioni si usano così:

* in ogni pagina che utilizza le sessioni deve esserci un session_start();

* per "salvare" un variabile in sessione: $_SESSION[nome_a_scelta] = $variabile/valore, nel tuo caso potrebbe essere: $_SESSION[id_fatt] = $id_fatt;

* per "recuperare" il valore il contrario: $variabile = $_SESSION[nome_a_scelta] nel tuo caso: $id_fatt = $_SESSION[id_fatt]

* per eliminare la variabile dalla sessione usi unset

ok, ho risolto con le sessioni!

apro la sessione ad inizio pagina

session_start();

metto la varibile in sessione dalla funzione che conosciamo:

$sql3 = mysql_query("INSERT INTO fatture (numero_fatt, id_cliente, totale, data, annotazioni, aspetto)
VALUES ('$numero', '$id2', '$tot_fatt', '$oggi', '$not', '$aspetto');");

$id_fatt=mysql_insert_id();
$_SESSION[id_fatt] = $id_fatt;

la recupero come mi hai indicato e controllo con un echo:

$id_fatt = $_SESSION['id_fatt'];
     echo $id_fatt;

e finalmente a questo punto la variabile è inviata alla pagina stampa.php

<form>
   <td width=\"45%\" height=\"25\" align=\"left\">
   <input type=\"submit\" class=\"btn\" Value=\"Stampa\" onclick=\"javascript:Popup('stampa.php?variabile=$id_fatt')\"
   onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\"></td>
   </tr>
   </form>

grazie

Tu hai detto in un post precedente:

"Se devi fare una nuova fattura controlli che non sia già presente, se c'è lo svuoti."

Potresti chiarirmi questo punto: come controllo che se il valore vecchio è già presente e come lo svuoto?

Non ce ne sarebbe comunque bisogno perchè ho notato che l'id si aggiorna quando creo la nuova fattura,

però la cosa mi interessa visto che potrebbe ritornarmi utile per il problema dell'intestazione.

Grazie e ciao

risposto 9 anni fa
frankphp
X 0 X

Per sicurezza pulisci sempre le varibili di sessione!

Basta che prima di iniziare una nuova fattura fai pulizzia della variabile con:

unset($_SESSION['id_fatt']);

In questo modo hai cancellato la variabile.

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Per sicurezza pulisci sempre le varibili di sessione!

Basta che prima di iniziare una nuova fattura fai pulizzia della variabile con:

unset($_SESSION['id_fatt']);

In questo modo hai cancellato la variabile.

 :bye:

si grazie,

In pratica la nuova fattura inizia quando seleziono da un menu in un frame a sinistra

il nome di un nuovo cliente (può essere anche lo stesso veramente ,tanto una volta che ho

confermato inizia tutto da capo) di cui invia l'id recuperato così:

$db = mysql_connect('localhost', 'root', '') or die(mysql_error());
@mysql_select_db('fattura', $db) or die(mysql_error());


$query = mysql_query("SELECT * FROM clientidb WHERE id_user = '".$_REQUEST['id_user']."'",$db);

da questa query poi sono stampati altri dati per l'intestazione (tra cui anche il numero).

Come faccio allora ad inserire il codice da te suggerire senza distruggere l'id_fattura quando mi serve?

in questa discussione c'è il codice della pagina in questione (fatt1.php) anche se sono state fatte nel frattempo alcune modifiche e manca la parte sulle sessioni ovviamente (ma forse ti interessa solo la parte iniziale)

Forse dovrei aggiungere un funzione che la elimini dopo aver premuto il tasto stampa

grazie

risposto 9 anni fa
frankphp
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda