connessione = @mysql_connect($hostname, $user, $password, $db); if ($this->connessione) { mysql_set_charset($charset, $this->connessione); if (@mysql_select_db($db, $this->connessione)) { $this->conn_attuale = $this->connessione; return $this->connessione; } } else { //$this->raise_error("Non riesco a selezionare e/o connettermi al database: $db"); return $this->msgerrore(); } } // Metodo per settare il CHARSET della connessione function set_charset($chr) { @mysql_set_charset($chr, $this->connessione); } public function __destruct() { $this->chiudi_connessione(); } public function chiudi_connessione() { if ($this->qry) { $this->libera_risorse($this->qry); } return @mysql_close($this->connessione); } // Metodi per gestire gli errori public function errore() { $this->errore = (is_null($this->conn_attuale)) ? "" : mysql_error($this->conn_attuale); return $this->errore; } public function errno() { $this->errno = (is_null($this->conn_attuale)) ? 0 : mysql_errno($this->conn_attuale); return $this->errno; } public function msgerrore() { return "[".$this->errno()."] ".$this->errore()."\n"; } public function libera_risorse($qry) { return @mysql_free_result($qry); } // Metodi per interrogare il DB ed estrarre record public function query($sql, $solo_1_rec = false) { $this->qry = mysql_query($sql, $this->connessione); $this->conta_query++; if ($this->qry !== false) { if ($solo_1_rec) { $this->rs = $this->associativo($this->qry); $this->libera_risorse($this->qry); return $this->rs; unset($this->rs); } else { return $this->qry; } } else { //echo("C'è un errore nell'esecuzione della QUERY:
\n".$sql."\n"); //echo("C'è un errore nell'esecuzione della QUERY.
\nContattare info@solidea.com\n"); //exit(); return FALSE; } } public function associativo($qry) { return @mysql_fetch_assoc($qry); } public function numerico($qry) { return @mysql_fetch_array($qry, MYSQL_NUM); } public function v_associativo($sql) { $v = array(); $r = array(); $this->qry = $this->query($sql); while ($v = $this->associativo($this->qry)) { array_push($r, $v); } $this->libera_risorse($this->qry); return $r; } public function v_numerico($sql) { $v = array(); $this->qry = $this->query($sql); while ($v = $this->numerico($this->qry)) { array_push($this->rs, $v); } $this->libera_risorse($this->qry); return $this->rs; } public function num_record_sql($sql) { $this->qry = $this->query($sql); $this->num_record = mysql_num_rows($this->qry); $this->libera_risorse($this->qry); return $this->num_record; } public function num_record($qry) { $this->num_record = mysql_num_rows($qry); return $this->num_record; } public function record_interessati() { return @mysql_affected_rows($this->connnessione); } public function ultimo_inserito() { return @mysql_insert_id($this->connessione); } public function numero_query() { return $this->conta_query; } public function lock_tab($tab) { if ($tab != '') { if ($this->query("LOCK TABLES ".$tab." WRITE")) { $this->is_locked = true; } } } public function unlock_tab() { if ($this->is_locked) { $this->query("UNLOCK TABLES"); } } /********************************************************************************************************* ********************* Le PROPRIETA' che seguono servono per gestire la paginazione ****************** *********************************************************************************************************/ // Impostiamo il numero della pagina corrente public function set_pagina() { //$this->pagina = (isset($_GET[$this->get_qsvar]) && $_GET[$this->get_qsvar] != "") ? $_GET[$this->get_qsvar] : 0; if (isset($_GET[$this->get_qsvar]) && $_GET[$this->get_qsvar] != "") { $this->pagina = substr($_GET[$this->get_qsvar], strlen(($_GET[$this->get_alias])."-")); } else { $this->pagina = 0; } return $this->pagina; } // Restituisce il numero totale di pagine public function numero_pagine($qry) { $this->num_pagine = ceil($this->num_record($qry) / $this->righe_pagina); return $this->num_pagine; } // Metodo 1 per la paginazione vera e propria: ritorna SQL formattato public function sql_paginazione($sql) { $inizio = ($this->set_pagina() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); //$this->qry = $this->query($this->sql); return $this->sql; } // Metodo 2 per la paginazione vera e propria: ritorna QRY public function qry_paginazione($sql) { $inizio = ($this->set_pagina() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); $this->qry = $this->query($this->sql); return $this->qry; } // Metodo 3 per la paginazione vera e propria: ritorna Vettore dati public function rs_paginazione($sql) { $inizio = ($this->set_pagina() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); $this->rs = $this->v_associativo($this->sql); return $this->rs; } /*public function nuova_qs($escludi) { }*/ public function navigazione_semplice($sql, $separatore = " | ", $css = "", $avantindietro = false) { //$url = "index.php?alias=".$_GET['alias']; $url = "/".$_GET[$this->get_alias]."/".$_GET[$this->get_alias]."-"; $nlink = NAV_LINKS; $classica = false; $corrente = $this->set_pagina(); $pippo = $corrente; $tutte = ($this->numero_pagine($this->query($sql)) - 1); if (!$avantindietro) { $nlink = ($nlink < 2) ? 2 : $nlink; } if (($corrente <= $tutte) && ($corrente >= 0)) { if ($corrente > ceil($nlink / 2)) { $inizio = (($corrente - ceil($nlink / 2)) > 0) ? ($corrente - ceil($nlink / 2)) : 1; $fine = ($corrente + ceil($nlink / 2)); if ($fine > $tutte) { $fine = ($tutte + 1); if ($tutte < $nlink) { $inizio = 0; } else { $inizio = (($tutte - ceil($nlink / 2)) > 0) ? ($tutte - ($nlink - 1)) : 1; } } } else { $inizio = 0; $fine = ($tutte >= $nlink) ? $nlink : ($tutte + 1); } if ($tutte >= 1) { $avanti = ($corrente + 1); $indietro = ($corrente - 1); //$this->naviga = ($corrente > 0) ? "". $this->str_indietro ." " : " "; $this->naviga = ($corrente > 0) ? "". $this->str_indietro ." " : " "; if (!$avantindietro) { $c = ($inizio + 1); for ($x = $c; $x <= $fine; $x++) { $prox = ($x - 1); if ($prox != $corrente) { //$this->naviga .= "". $x .""; $this->naviga .= "". $x .""; } else { if ($css != "") { $this->naviga .= "".$x.""; } else { $this->naviga .= $x; } } $this->naviga .= ($prox < ($fine - 1)) ? $separatore : ""; } } //$this->naviga .= ($corrente < $tutte) ? " ". $this->str_avanti ."" : " "; $this->naviga .= ($corrente < ($fine - 1)) ? " ". $this->str_avanti ."" : " "; } } if ($this->naviga != "") { return $this->naviga; } else { return "1"; } } /************************************************************** METODI PER LA PAGINAZIONE CLASSICA (con parametri nell'URL) **************************************************************/ // Impostiamo il numero della pagina corrente public function set_pagina_classica() { $this->pagina = (isset($_GET['page']) && ($_GET['page'] != "")) ? $_GET['page'] : 0; return $this->pagina; } // Metodo 1 per la paginazione vera e propria: ritorna SQL formattato public function sql_paginazione_classica($sql) { $inizio = ($this->set_pagina_classica() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); //$this->qry = $this->query($this->sql); return $this->sql; } // Metodo 2 per la paginazione vera e propria: ritorna QRY public function qry_paginazione_classica($sql) { $inizio = ($this->set_pagina_classica() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); $this->qry = $this->query($this->sql); return $this->qry; } // Metodo 3 per la paginazione vera e propria: ritorna Vettore dati public function rs_paginazione_classica($sql) { $inizio = ($this->set_pagina_classica() * $this->righe_pagina); $this->sql = sprintf("%s LIMIT %s, %s", $sql, $inizio, $this->righe_pagina); $this->rs = $this->v_associativo($this->sql); return $this->rs; } // Metodo per ricostruire la querystring senza il valore PAGE public function rebuild_qs() { $ex = array('page'); $nqs = ""; foreach ($_GET as $chiave => $valore) { if (!in_array($chiave, $ex)) { $nqs .= $chiave."=".$valore."&"; } } return substr($nqs, 0, (strlen($nqs) - 1)); } // Metodo per la Paginazione Classica: URL con parametri, a cui appendiamo &pagina=n public function navigazione_classica($sql, $separatore = " | ", $css = "", $avantindietro = false) { //$url = "index.php?alias=".$_GET['alias']; $newqs = $this->rebuild_qs(); $url = $_SERVER['PHP_SELF']."?".$newqs; $nlink = NAV_LINKS; $classica = true; $corrente = $this->set_pagina_classica(); $pippo = $corrente; $tutte = ($this->numero_pagine($this->query($sql)) - 1); if (!$avantindietro) { $nlink = ($nlink < 2) ? 2 : $nlink; } if (($corrente <= $tutte) && ($corrente >= 0)) { if ($corrente > ceil($nlink / 2)) { $inizio = (($corrente - ceil($nlink / 2)) > 0) ? ($corrente - ceil($nlink / 2)) : 1; $fine = ($corrente + ceil($nlink / 2)); if ($fine > $tutte) { $fine = ($tutte + 1); if ($tutte < $nlink) { $inizio = 0; } else { $inizio = (($tutte - ceil($nlink / 2)) > 0) ? ($tutte - ($nlink - 1)) : 1; } } /*if ( ($tutte > $nlink) && ($fine > $tutte)) { $fine = ($tutte + 1); $inizio = (($tutte - ceil($nlink / 2)) > 0) ? ($tutte - ($nlink - 1)) : 1; } elseif ( ($tutte < $nlink) && ($fine > $tutte)) { $fine = ($tutte + 1); $inizio = 0; }*/ } else { $inizio = 0; $fine = ($tutte >= $nlink) ? $nlink : ($tutte + 1); } if ($tutte >= 1) { $avanti = ($corrente + 1); $indietro = ($corrente - 1); $this->naviga = ($corrente > 0) ? "". $this->str_indietro ." " : " "; //$this->naviga = ($corrente > 0) ? "". $this->str_indietro ." " : " "; if (!$avantindietro) { $c = ($inizio + 1); for ($x = $c; $x <= $fine; $x++) { $prox = ($x - 1); if ($prox != $corrente) { $this->naviga .= "". $x .""; //$this->naviga .= "". $x .""; } else { if ($css != "") { $this->naviga .= "".$x.""; } else { $this->naviga .= $x; } } $this->naviga .= ($prox < ($fine - 1)) ? $separatore : ""; } } $this->naviga .= ($corrente < $tutte) ? " ". $this->str_avanti ."" : " "; //$this->naviga .= ($corrente < ($fine - 1)) ? " ". $this->str_avanti ."" : " "; } } if ($this->naviga != "") { //return "".$this->naviga; return $this->naviga; } else { return "1"; } } } // http://www.giorgiotave.it/forum/php-mysql/105284-paginazione-php.html /*include('costanti.php'); $db = new mysql_dpm(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); $s = "SELECT CodParco, Anno, Mese, TipoVeicoloIT, Portata, DesCarIt, Passo, Lungh, Largh, Altezza, Disponibile, Prezzo FROM `veicoli` ORDER BY dataarrivo ASC LIMIT 0,10"; $t = $db->v_numerico($s); print_r($t); echo "
"; $q = $db->query($s); while ($t = $db->numerico($q)) { print_r($t); } $s = "SELECT CodParco, Anno, Mese, TipoVeicoloIT, Portata, DesCarIt, Passo, Lungh, Largh, Altezza, Disponibile, Prezzo FROM `veicoli` ORDER BY dataarrivo ASC"; //print_r($db->rs_paginazione($s)); echo $db->navigazione_semplice($s, " | ", "paginazione"); $db->chiudi_connessione(); */ ?> va conteggiato come due articoli diversi. * Il WebForce Cart non aveva questa funzionalità. * * L'oggetto @shopCart è un array che andrà in @_SESSION con le seguenti caratteristiche: * @shopCart['totale'] = il prezzo totale degli articoli a carrello * @shopCart['numarticoli'] = il num. tot. degli articoli a carrello * @shopCart['numprodotti'] = il num. tot. dei prodotti a carrello * @shopCart['carrello'][x]['id'] = id articolo * @shopCart['carrello'][x]['qty'] = quantità per ogni articolo a carrello * @shopCart['carrello'][x]['prezzo'] = il prezzo unitario dell'articolo a carrello * @shopCart['carrello'][x]['info'] = informazioni sull'articolo a carrello (nome art) * @shopCart['carrello'][x]['misura'] = la misura dell'art. a carrello * @shopCart['carrello'][x]['colore'] = il colore dell'art. a carrello * @shopCart['carrello'][x]['taglia'] = la taglia dell'art. a carrello * ... * ***************************************************************************/ //class shopCart class dpmCarrello { public $carrello = array(); // Il vettore per la gestione del carrello public $totale = 0; // Serve per tracciare il totale della spesa in euro public $numarticoli = 0; // Serve per tracciare il num. complessivo di articoli nel carrello public $numprodotti = 0; // Serve per tracciare il num. complessivo di prodotti nel carrello (2 art = 1 prod) public $numprodgift = 0; // Serve per tracciare il num. complessivo di prodotti in omaggio public $numartgift = 0; // Serve per tracciare il num. complessivo di articoli in omaggio public $numprodmp = 0; // Serve per tracciare il num. complessivo di prodotti Materiale Pubblicitario public $numartmp = 0; // Serve per tracciare il num. complessivo di articoli Materiale Pubblicitario // = ( numarticoli + numartgift + numartmp ) public $numtotart = 0; // Metodo costruttore function __construct() {} // Metodo Distruttore function __destruct() { /*unset($this->carrello); unset($this->totale); unset($this->numprodotti); unset($this->numarticoli);*/ } /*** * Funzione per gestire l'aggiunta di un articolo al carrello * Parametri: * @idart = id articolo * @qty = quantità * @prezzo = prezzo * @info = è un array contenente informazioni come peso, misura, colore, taglia, ... * Return Void ***/ public function aggiungi_articolo($idart, $qty=1, $prezzo, $vettore=false, $tipo_art=false) { // Controlliamo se l'articolo è già presente nel carrello $doppio = false; $temp = $this->get_carrello(); for ($x = 0; $x < count($temp); $x++) { if (in_array($idart, $temp[$x], TRUE)) { if (!$tipo_art) { // Verifichiamo se Colore e taglia sono uguali; se SI, aggiorniamo le quantità if ( ($vettore['colore'] == $temp[$x]['colore']) && ($vettore['taglia'] == $temp[$x]['taglia']) ) { $doppio = true; $curr = $x; } } else { // Verifichiamo se Colore e taglia sono uguali; se SI, aggiorniamo le quantità if ( ($vettore['colore'] == $temp[$x]['colore']) && ($vettore['taglia'] == $temp[$x]['taglia']) && ($vettore['tipo_art'] == $temp[$x]['tipo_art']) ) { $doppio = true; $curr = $x; } } } } unset($temp); if ($doppio === true) { $this->carrello[$curr]['qty'] += $qty; } else { $y = (empty($this->carrello)) ? 0 : (count($this->carrello)); $this->carrello[$y]['id'] = $idart; $this->carrello[$y]['qty'] = $qty; $this->carrello[$y]['prezzo'] = $prezzo; $this->carrello[$y]['idcart'] = $y; foreach ($vettore as $chiave => $valore) { $this->carrello[$y][$chiave] = $valore; } } // Aggiorniamo il costo totale del carrello $this->aggiorna_totale(); } public function aggiungi_articolo_old($idart, $qty=1, $prezzo, $vettore = FALSE) { // Deriviamo la dimensione dell'array @vettore togliendo i campi nulli $dimvettore = 0; foreach($vettore as $chiave => $valore) { if ($valore != "") $dimvettore++; } // Controlliamo che l'id articolo non sia gi� presente nel carrello $ctrlid = ""; $ctrlinfo = 0; for ($x = 0; $x < count($this->carrello); $x++) { if ($this->carrello[$x]['id'] == $idart) { foreach ($vettore as $chiave => $valore) { if (($valore != "") && ($this->carrello[$x][$chiave] == $valore)) { $ctrlinfo++; } } } if ($ctrlinfo == $dimvettore) { $ctrlid = $x; break; } else { $ctrlinfo = 0; } } // Caso 1: l'id art è già presente nel carrello if ($ctrlid >= 0) { // Caso A: id2 ha le stesse caratteristiche di id1 => aumenta la quantit� di @qty if ($ctrlinfo == $dimvettore) { $this->carrello[$ctrlid]['qty'] += $qty; } // Caso B: id2 ha caratteristiche diverse da id1 => deve essere aggiunto // nel carrello come un articolo differente else { $y = (empty($this->carrello)) ? 0 : (count($this->carrello)); $this->carrello[$y]['id'] = $idart; $this->carrello[$y]['qty'] = $qty; $this->carrello[$y]['prezzo'] = $prezzo; $this->carrello[$y]['idcart'] = $y; foreach ($vettore as $chiave => $valore) { $this->carrello[$y][$chiave] = $valore; } } } // Caso 2: l'id articolo è diverso da quelli presenti nel carrello else { $y = (empty($this->carrello)) ? 0 : (count($this->carrello)); $this->carrello[$y]['id'] = $idart; $this->carrello[$y]['qty'] = $qty; $this->carrello[$y]['prezzo'] = $prezzo; $this->carrello[$y]['idcart'] = $y; foreach ($vettore as $chiave => $valore) { $this->carrello[$y][$chiave] = $valore; } } // Aggiorniamo il costo totale del carrello $this->aggiorna_totale(); } /* Funzione per l'aggiornamento del costo totale, del num. prodotti e num. articoli nel carrello Return Void */ public function aggiorna_totale() { $this->totale = 0.00; $this->numprodotti = 0; $this->numarticoli = 0; $this->numprodgift = 0; $this->numartgift = 0; $this->numprodmp = 0; $this->numartmp = 0; if (sizeof($this->carrello) > 0) { foreach($this->carrello as $articolo) { if ( isset($articolo['tipo_art']) ) { if ( $articolo['tipo_art'] == 1 ) { $this->totale += ($articolo['prezzo'] * $articolo['qty']); $this->numprodotti++; $this->numarticoli += $articolo['qty']; } elseif ( $articolo['tipo_art'] == 2 ) { $this->numprodgift++; $this->numartgift += $articolo['qty']; } elseif ( $articolo['tipo_art'] == 3 ) { $this->numprodmp++; $this->numartmp += $articolo['qty']; } } else { $this->totale += ($articolo['prezzo'] * $articolo['qty']); $this->numprodotti++; $this->numarticoli += $articolo['qty']; } } } $this->numtotart = ($this->numarticoli + $this->numartgift + $this->numartmp); } /* Funzione per la restituzione del contenuto del carrello Restituisce un array nel formato vettore[x]['caratteristica'] */ public function get_carrello() { $spesa = array(); $x = 0; foreach($this->carrello as $articolo) { foreach($articolo as $chiave => $valore) { $spesa[$x][$chiave] = $valore; } if ( isset($articolo['tipo_art']) ) { $spesa[$x]['subtotale'] = ( $articolo['tipo_art'] == 1 ) ? ( $articolo['qty'] * $articolo['prezzo'] ) : 0; $x++; } else { $spesa[$x]['subtotale'] = ( $articolo['qty'] * $articolo['prezzo'] ); $x++; } } return $spesa; } /* Funzione per modificare la quantità di un articolo Parametri: @idcarrello = id del vettore carrello (NON è l'id dell'articolo) @quantita = quantità da aggiornare Return Void */ public function aggiungi_qart($idcarrello, $quantita) { if ($quantita < 1) { $this->elimina_articolo($idcarrello); } else { $this->carrello[$idcarrello]['qty'] = $quantita; } $this->aggiorna_totale(); } /* Funzione per eliminare un articolo dal carrello Return Void */ public function elimina_articolo($idcarrello) { unset($this->carrello[$idcarrello]); $temp = array(); $i = 0; foreach ($this->carrello as $chiave => $valore) { $temp[$i] = $valore; $temp[$i]['idcart'] = $i; $i++; } $this->carrello = $temp; $this->aggiorna_totale(); } /* Funzione per svuotare il carrello della spesa Return Void */ public function svuota_carrello() { //unset($this->carrello); $this->carrello = array(); $this->totale = 0.00; $this->numprodotti = 0; $this->numarticoli = 0; $this->numprodgift = 0; $this->numartgift = 0; $this->numprodmp = 0; $this->numartmp = 0; } /* Funzione per verificare il numero di ARTICOLI di una determinata TIPOLOGIA Esempio: 1 = articoli Vendita, 2 = Omaggi, 3 = Cessione gratuita Return Void */ public function totale_tipo_articolo($chiave, $idtipo) { $ntipo = 0; foreach ($this->carrello as $articolo) { if ($articolo[$chiave] == $idtipo) { $ntipo += $articolo['qty']; } } return $ntipo; } /* Metodo per verificare il numero di Materiale Pubblicitario che viene conteggiato come Omaggio */ public function totale_mp2omaggio($chiave, $idtipo, $idart='') { $ngift = 0; if ( $idart != '' ) { foreach ($this->carrello as $articolo) { if ( ($articolo['id'] != $idart) && ( ($articolo[$chiave] == $idtipo) && (preg_match('/SC/', $articolo['id'])) ) ) { $ngift += $articolo['qty']; } } } else { foreach ($this->carrello as $articolo) { if ( ($articolo[$chiave] == $idtipo) && (preg_match('/SC/', $articolo['id'])) ) { $ngift += $articolo['qty']; } } } return $ngift; } } ?>
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/vhosts/solidea.com/httpdocs/informatori/include/class.mysql.dpm.php:545) in /var/www/vhosts/solidea.com/httpdocs/informatori/include/dpm_carrello.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/solidea.com/httpdocs/informatori/include/class.mysql.dpm.php:545) in /var/www/vhosts/solidea.com/httpdocs/informatori/include/dpm_carrello.php on line 3

Fatal error: Class 'dpmCarrello' not found in /var/www/vhosts/solidea.com/httpdocs/informatori/include/dpm_carrello.php on line 6