PDA

View Full Version : [PHP+MYSQL] variabile e salvataggio


AYAMY
01-09-2006, 15:36
ciao a tutti... ho il seguente problema. .vorrei salvare il valore della variabile $Totale del file bookschedacarello.php dentro in mysql all 'interno del database "ordini" appunto sotto il campo "spesa" tramite il file ordina.php ...
come posso fare una cosa del genere?

Mi date una mano?



Questo è il file bookschedacarello.php (quello relativo al tasto ordina una volta visualizzato il carrello)




<?php

require_once( 'Interfaccia.inc.php' );

class BookSchedaCarrello extends BookScheda {

public function __construct( $carrello )
{
parent::__construct( );
$prodotti =& $carrello->getProdotti( );
if( count( $prodotti ) == 0 || $prodotti == null )
{
$testo = "Carrello vuoto";
}
else if( count( $prodotti ) == 1 )
{
$testo = "Nel tuo carrello hai 1 prodotto.";
}
else
{
$testo = "Nel tuo carrello hai " . count( $prodotti ) . " prodotti.";
}
$this->aggiungiRigaSpan3( $testo, "titoloScheda" );
$this->aggiungiRigaVuota( );
if( count( $prodotti ) != 0 && $prodotti != null )
{
for( $i = 0; $i < count( $prodotti ); $i++ )
{
// Crea l'icona di eliminazione
$elimina =& new htmlLink;
$eliminaImg =& new htmlImage;
$eliminaImg->setWidth( "22px" );
$eliminaImg->setUrl( "images/elimina.png" );
$eliminaImg->setTitle( "Elimina il prodotto dal carrello" );
$eliminaImg->setAlternate( "" );
$url = "eliminaDalCarrello.php?id=$i";
$elimina->setUrl( $url );
$elimina->append( $eliminaImg );

// Crea l'icona di aumento della quantità
$up =& new htmlLink;
$upImg =& new htmlImage;
$upImg->setWidth( "22px" );
$upImg->setUrl( "images/up.png" );
$upImg->setTitle( "Aggiungi una unità" );
$upImg->setAlternate( "" );
// SISTEMARE L'URL
$url = "modificaCopie.php?id=$i&copie=su";
$up->setUrl( $url );
$up->append( $upImg );

// Crea l'icona di diminuzione della quantità
$down =& new htmlLink;
$downImg =& new htmlImage;
$downImg->setWidth( "22px" );
$downImg->setUrl( "images/down.png" );
$downImg->setTitle( "Elimina una unità" );
$downImg->setAlternate( "" );
// SISTEMARE L'URL
$url = "modificaCopie.php?id=$i&copie=giu";
$down->setUrl( $url );
$down->append( $downImg );

// Crea la tabellina ed appende ad essa le 3 icone
$tabellina =& new htmlTable;
$tabellina->setSize( 1, 3 );
$tabellina->setBorder( 0 );
$tabellina->Cells[0][0]->append( $elimina );
$tabellina->Cells[0][1]->append( $up );
$tabellina->Cells[0][2]->append( $down );

// Conteggia il costo totale
$numberProdotticarrello = $prodotti[$i][copie] ;
$costoProdottocarrello = $prodotti[$i][prodotti]->getprezzoVendita( );
$Singolo = $numberProdotticarrello*$costoProdottocarrello;
$Totale += $Singolo;


// Crea il titolo con associata la quantità
// $titoloProdotto = $prodotti[$i][prodotti]->getTipologia( ) ." " . $prodotti[$i][prodotti]->getTitolo( ) ." --> " .$Singolo. "€ /". $prodotti[$i][copie]." unità."." Fin qui il totale è di € ".$Totale ;
$titoloProdotto = $prodotti[$i][prodotti]->getTipologia( ) ." " . $prodotti[$i][prodotti]->getTitolo( ) ." --> " .$Singolo. "€ /". $prodotti[$i][copie]." unità." ;

// Aggiunge alla scheda la riga con codice del prodotto, titolo e pulsanti
// $this->aggiungiRigaSpan111( $prodotti[$i][prodotti]->getCodice( ), $titoloProdotto, $tabellina, "coloreCodice", "coloreCosto", "" );
$this->aggiungiRigaSpan111( $titoloProdotto, " Fin qui il totale è di € ".$Totale, $tabellina, "coloreCodice", "coloreCosto", "" );
}
}
}
//$this->aggiungiRigaSpan111( "", "", $importo, "", "", "valoreScheda" );
}

?>




questo è il file ordina.php



<?php

require_once( 'php/boundary/Interfaccia.inc.php' );
require_once( 'php/database/ArchivioOrdini.class.php' );
require_once( 'php/database/ArchivioClienti.class.php' );
require_once( 'php/entity/Carrello.class.php' );
require_once( 'php/entity/Ordine.class.php' );
require_once( 'php/entity/Cliente.class.php' );

session_start( );

if( isset( $_SESSION['username'] ) && $_SESSION['utente'] == 0 )
{
$identificatore = Archivio::connetti();

$carrello =& new Carrello;
$carrello->caricaSessione( );

if( count( $carrello->getProdotti( ) ) != 0 || $carrello->getProdotti( ) != null )
{
$username = $_SESSION['username'];
$cliente = ArchivioClienti::cercaClientePerUsername( $username );
$ordine =& new Ordine( $cliente, $carrello->getProdotti( ) );
$ordine->setStato( "pendente" );
$ordine->Simo= $carrello->getTotale() ;
$risultato = ArchivioOrdini::inserisciOrdine( $ordine );
$_SESSION['prodottiCarrello'] = null;
$scheda =& new BookSchedaOrdine( $ordine, 0 );
$pagina =& new PaginaClassica;
$pagina->aggiungiContenutoCn( $scheda );
$pagina->fine( );
}
else
{
$link =& new htmlLink;
$link->setUrl( "apriCarrello.php" );
$link->redirect( );
}

Archivio::disconnetti( $identificatore );
}
else
{
$link =& new htmlLink;
$link->setUrl( "login.php" );
$link->redirect( );
}
?>






Questo invece è il file Ordine.class.php



<?php

require_once( 'php/entity/Cliente.class.php' );
require_once( 'php/entity/Prodotto.class.php' );
require_once( 'php/database/Archivio.class.php' );

class Ordine {

private $_id;
private $_data;
private $_stato;
private $_Totale;
private $_cliente;
private $_prodotti = array( );

private function get_array_vars( )
{
$vars = array( );
$vars = $this->get_array_vars_ordine( );
$vars[prodotti] = $this->getProdotti( );
return $vars;
}

private function get_array_vars_ordine( )
{
$vars_ordine = array
(
id => $this->getId( ),
stato => $this->getStato( ),
Totale => $this->getTotale( ),
data => $this->getData( ),
cliente => $this->getCliente( )->getCodiceFiscale( )
);
return $vars_ordine;
}

private function get_array_vars_partecipazione( )
{
foreach( $this->getProdotti( ) as $prodotto )
{
$vars_partecipazione[] = array
(
ordine => $this->getId( ),
prodotto => $prodotto[prodotto]->getCodice( ),
copie => $prodotto[copie]
);
}
return $vars_partecipazione;
}

public function __construct( & $cliente, & $prodottiOrdinati )
{
$this->setId( 0 );
$this->setData( "" );
$this->setTotale( $ordine->Totale );
$this->setStato( "" );
$this->setCliente( $cliente );
$this->setProdotti( $prodottiOrdinati );
}
public function setId( $id )
{
$this->_id = $id;
}
public function setData( $data )
{
$this->_data = $data;
}
public function setTotale( $Totale )
{
$this->_totale = $Totale;
}
public function setStato( $stato )
{
$this->_stato = $stato;
}
public function setSimo( $simo )
{
$this->_simo = $simo;
}

public function setCliente( & $cliente )
{
$this->_cliente = $cliente;
}
public function setProdotti( & $prodotti )
{
$this->_prodotti = $prodotti;
}

public function getId( )
{
return $this->_id;
}
public function getData( )
{
return $this->_data;
}
public function getTotale( )
{
return $this->_Totale;
}
public function getStato( )
{
return $this->_stato;
}

public function getCliente( )
{
return $this->_cliente;
}
public function getProdotti( )
{
return $this->_prodotti;
}

public function creaScheda( )
{
$schedaOrdine =& new SchedaOrdine;
$schedaOrdine->crea( $this->get_array_vars( ) );
return $schedaOrdine;
}

public function salvaDati( )
{
Archivio::inserisci( "ordini", $this->get_array_vars_ordine( ) );
foreach( $this->get_array_vars_partecipazione( ) as $var_partecipazione )
{
Archivio::inserisci( "partecipazioni", $var_partecipazione );
}
}

public function modificaStato( $statoStr )
{
$tabellaStr = "ordini";
$valoriArr = array( stato => $statoStr );
$condizioniArr = array( id => $this->getId( ) );
Archivio::modifica( $tabellaStr, $valoriArr, $condizioniArr );
}

}
?>




questo è il file ArchivioOrdini.class.php



<?php

require_once( 'php/database/Archivio.class.php' );
require_once( 'php/database/ArchivioClienti.class.php' );
require_once( 'php/database/ArchivioProdotti.class.php' );
require_once( 'php/entity/Ordine.class.php' );

abstract class ArchivioOrdini extends Archivio {

public static function generaIdUnivoco( )
{
$selezioni = array
(
"id"
);
$tabelle = array
(
"ordini"
);
$condizioni = array
(
);
$risultato = parent::ricerca( $selezioni, $tabelle, $condizioni );
return parent::contaRighe( $risultato ) + 1;
}

public static function inserisciOrdine( & $ordine )
{
$ordine->setId( self::generaIdUnivoco( ) );
$valoriOrdine = array
(
"id" => $ordine->getId( ),
"stato" => $ordine->getStato( ),
"Totale" => $ordine->getTotale( ),
"data" => $ordine->getData( ),
"cliente" => $ordine->getCliente( )->getCodiceFiscale( )
);
$risultato1 = Archivio::inserisci( "ordini", $valoriOrdine );

foreach( $ordine->getProdotti( ) as $prodotto )
{
$valoriPartecipazione = array
(
"ordine" => $ordine->getId( ),
"prodotto" => $prodotto[prodotti]->getCodice( ),
// GESTIRE BENE LE COPIE
"copie" => $prodotto[copie]
);
$risultato2 = Archivio::inserisci( "partecipazioni", $valoriPartecipazione );
}
}

public static function cercaOrdinePerStato( $stato )
{
$condizioni = array
(
"stato" => $stato
);
return self::cercaOrdine( $condizioni );
}

public static function cercaOrdine( $condizioniOrdine )
{
$selezioniOrdine = array
(
);
$tabelleOrdine = array
(
"ordini"
);
$risultatoOrdine = Archivio::ricerca( $selezioniOrdine, $tabelleOrdine, $condizioniOrdine );
$ordiniTrovati = array( );
for( $i = 0; $i < Archivio::contaRighe( $risultatoOrdine ); $i++ )
{
$riga = Archivio::recuperaRighe( $risultatoOrdine );
$cliente =& new Cliente;
$prodotti = array( );
$ordiniTrovati[$i] =& new Ordine( $cliente, $prodotti );
$ordiniTrovati[$i]->setId( $riga[id] );
$ordiniTrovati[$i]->setStato( $riga[stato] );
$ordiniTrovati[$i]->setTotale( $riga[Totale] );
$ordiniTrovati[$i]->setData( $riga[data] );
$cliente = ArchivioClienti::cercaClientePerCodiceFiscale( $riga[cliente] );
$ordiniTrovati[$i]->setCliente( $cliente );
}

foreach( $ordiniTrovati as $ordineTrovato )
{
$selezioniPartecipazione = array
(
"prodotto",
"copie"
);
$tabellePartecipazione = array
(
"partecipazioni"
);
$condizioniPartecipazione = array
(
"ordine" => $ordineTrovato->getId( )
);
$risultatoPartecipazione = Archivio::ricerca( $selezioniPartecipazione, $tabellePartecipazione, $condizioniPartecipazione );
$prodotti = array( );
for( $i = 0; $i < Archivio::contaRighe( $risultatoPartecipazione ); $i++ )
{
$riga = Archivio::recuperaRighe( $risultatoPartecipazione );
$prodotti[$i][prodotti] = ArchivioProdotti::cercaProdottoPerCodice( $riga[prodotto] );
$prodotti[$i][copie] = $riga[copie];
}
$ordineTrovato->setProdotti( $prodotti );
}
return $ordiniTrovati;
}

public static function modificaStatoOrdine( $stato, $id )
{
$valori = array
(
"stato" => $stato
);
$condizioni = array
(
"id" => $id
);
parent::modifica( "ordini", $valori, $condizioni );
}
}
?>





Grazie

Xalexalex
01-09-2006, 20:27
Se proprio ma proprio per caso potessi dirci qual'è il problema...
Ma proprio se capita per volere del fato eh.. :D

anonimizzato
01-09-2006, 20:35
Se proprio ma proprio per caso potessi dirci qual'è il problema...
Ma proprio se capita per volere del fato eh.. :D

LOL per me è un indovinello. :D

Cmq ragazzi, visto che è uno vostro interesse, fate più attenzione quando postate i problemi. ;)

Xalexalex
01-09-2006, 20:41
LOL per me è un indovinello. :D

Cmq ragazzi, visto che è uno vostro interesse, fate più attenzione quando postate i problemi. ;)
Allora cominciamo la soluzione..
Partiamo dal presupposto che è uno script di e-commerce...
La pagina principale dello script è ordina.php...
Gli unici inserimenti di variabile possibile mi pare siano
$risultato = ArchivioOrdini::inserisciOrdine( $ordine ); e
$pagina->aggiungiContenutoCn( $scheda );
Cerchiamo indi per cui, l'errore in uno dei due metodi...

AYAMY
01-09-2006, 20:46
ho modificato il post.. adesso ci sono tutte le info necessarie per inquadrare il problema...
secondo te dov'è ho sbagliato?

Grazie 1000!!!

Simo

Xalexalex
01-09-2006, 20:51
ho modificato il post.. adesso ci sono tutte le info necessarie per inquadrare il problema...
secondo te dov'è ho sbagliato?

Grazie 1000!!!

Simo
Non c'avevo acchiappato manco di striscio XD

Non l'ho letto bene ma così a strizzo mi viene in mente:

- Mettilo insieme a "spesa" e separa i due valori con qualcosa (se sono varchar, string o simili)...
-Crea un'altra tabella.. Id unico totale, id spesa, totale.

Potrei non aver capito nulla cmq, ora leggo meglio.
Ciaoz

AYAMY
01-09-2006, 20:55
lo so che sto abusando della tua pazienza.. ma visto che sono acerbo all'uso di php mi potresti dire o meglio indicare proprio le modifiche da fare al codice? altrimenti mi ritroverei punto e d'accapo....saprei il da farsi (visto che me lo avresti detto tu) ma comunque non saprei come attuare le modifiche da te consigliate!!

Grazie e scusami se ti chiedo troppo!!

Xalexalex
01-09-2006, 21:00
lo so che sto abusando della tua pazienza.. ma visto che sono acerbo all'uso di php mi potresti dire o meglio indicare proprio le modifiche da fare al codice? altrimenti mi ritroverei punto e d'accapo....saprei il da farsi (visto che me lo avresti detto tu) ma comunque non saprei come attuare le modifiche da te consigliate!!

Grazie e scusami se ti chiedo troppo!!
Muaa figurati.. Nopro... Anzi il problema c'è.. Dovrei sapere come è fatta la tabella ordini...

AYAMY
01-09-2006, 21:10
GRAZIE!!!! GRAZIE!!!!! mi arrampicavo proprio sugli specchi.. :mc: spero che sotto la tua supervisione riesca a risolvere il problema...MAGARI!!! :cry:

allora la tabella ordini è fatta in questo modo:

http://img230.imageshack.us/img230/5245/unoqv5.th.jpg (http://img230.imageshack.us/my.php?image=unoqv5.jpg)

AYAMY
01-09-2006, 21:14
http://img232.imageshack.us/img232/6420/2cx7.th.jpg (http://img232.imageshack.us/my.php?image=2cx7.jpg)


GRAZIE!!! GRAZIE!!! GRAZIE!!

AYAMY
02-09-2006, 10:44
poi sei riuscito a capire dov'è l'inghippo?

grazie

PS.sono nelle tue mani!! :mc:

Xalexalex
02-09-2006, 23:30
Tornato ora da una gitarella a Firenze.. Domani guardo. Notte..

AYAMY
03-09-2006, 00:52
grazie 1000 :D :eek: :cry: !!

AYAMY
04-09-2006, 10:58
...poi sei riuscito a dargli uno sguardo?... scusa se ti stresso.. ma l'esame è domani..e sinceramente con le mie conoscenze da solo non je la fo!!

Grazie 10000!!!! :mc:

AYAMY
05-09-2006, 17:12
toc toc ?