[PHP] Creazione classe PDO

  • Creatore Discussione Creatore Discussione webfra01
  • Data di inizio Data di inizio

webfra01

Utente Attivo
14 Mag 2018
27
0
1
Ciao a tutti, sto realizzando il mio progetto creare un sito con un blog tutto fatto in php.

Siccome sono all'inizio con la programmazione ho deciso di imparare direttamente quella ad oggetti, ho creato una classe per la connessione al db dove all'interno ce la funzione consteuct che apre la connessione e un altra funzione per la chiusura delle connessione ovvero chiudi() che pare non funzionare.

Qualcuno può gentilmente dirmi se può andate bene cone codice?

PHP:
<?php

//connessione db
class db {

    public $conn;
    private $hostname = "localhost";
    private $dbname = "db";
    private $user = "root";
    private $pass = "";

   
      public function __construct() {

        try{

        $this->conn = new PDO('mysql:host='.$this->hostname.';dbname='.$this->dbname, $this->user, $this->pass);

        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);      

      // riporta errori

        }catch(PDOException $e){

          die("Errore connessione database: ". $e->getMessage()); }

      }

      public function chiudi() {

          $this->conn = null;
      }

                   

    }




//apro connessione

$test = new db();

//chiudo connessione

$test->chiudi();

 

//controllo non funziona

        if($test == null) {

        echo 'sei disconnesso';

    } else {

        echo 'sei connesso';

}


Poi vorrei creare le funzioni per aggiungere modificare ed eliminare record nel db. Ovviamente sempre con approccio oop e usando quary parametriche e BindParam

Grazie mille a tutti
 
meglio una sana lettura,
https://phpdelusions.net/pdo (mr webmaster non apre il link, copialo e incollalo nel browser)
anzi due
https://www.culttt.com/2012/10/01/roll-your-own-pdo-php-class/
Grazie mille, il primo link l'ho trovato subito dopo aver postato [emoji23]. Il secondo è un ottima modello, l'esempio l'avevo trovato in un forum ma su questo articolo è spiegato spiegato bene.

Sai se esiste una cosa simile per creare una funzione che mi sanifichi gli input di un form.
Conosco i filter_var o sanitaze ma mi piacerebbe passare una variabile presa da un form ad una funzione ed essa me la restituisca pulita (di spazi slash e simboli sfdabi.

Graize ancora
 
Ultima modifica:
creare una funzione che mi sanifichi gli input di un form
credo non basti, le funzioni dovrebbero restituirti il valore "giusto" per la gestione, considerando anche la "localizzazione".
ho una soluzione semplice (senza localizzazione), giusto per iniziare,
PHP:
function isValidDate($mydate) {
  list($dd,$mm,$yy)=explode("/",$mydate);
  if(is_numeric($yy) and is_numeric($mm) and is_numeric($dd)) return checkdate($mm,$dd,$yy);
  return false;
}

function ValidateString($string) {
  $val = htmlspecialchars( strip_tags( trim( $string ) ) );
  $val = filter_var($val, FILTER_SANITIZE_STRING);
  return $val;
}

function ValidateInt($int) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($int))));
  $val = (int)filter_var($val, FILTER_SANITIZE_NUMBER_INT);
  return $val;
}

function ValidateFloat($float) {
  $val = htmlentities(strip_tags(trim($float)));
  $val = str_replace(",", ".", str_replace(".", "", $val));
  $val = (float)filter_var($val, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
  return $val;
}

function ValidateEmail($email) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($email))));
  $val = filter_var($val, FILTER_SANITIZE_EMAIL);
  return $val;
}

function ValidateUrl($url) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($url))));
  $val = filter_var($val, FILTER_SANITIZE_URL);
  return $val;
}

function ValidateDate($dt, $df = _INTL_DateTimeFormat) {
  $dt = htmlspecialchars(htmlentities(strip_tags(trim($dt))));
  if (empty($dt)) return $dt;
  $dt = str_replace(".000", "", str_replace(".000000", "", $dt));
  $val = DateTime::createFromFormat($df, $dt);
  if ( !( $val and $val->format($df) === $dt ) ) return "ERR";
  return $dt;
}
 
credo non basti, le funzioni dovrebbero restituirti il valore "giusto" per la gestione, considerando anche la "localizzazione".
ho una soluzione semplice (senza localizzazione), giusto per iniziare,
PHP:
function isValidDate($mydate) {
  list($dd,$mm,$yy)=explode("/",$mydate);
  if(is_numeric($yy) and is_numeric($mm) and is_numeric($dd)) return checkdate($mm,$dd,$yy);
  return false;
}

function ValidateString($string) {
  $val = htmlspecialchars( strip_tags( trim( $string ) ) );
  $val = filter_var($val, FILTER_SANITIZE_STRING);
  return $val;
}

function ValidateInt($int) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($int))));
  $val = (int)filter_var($val, FILTER_SANITIZE_NUMBER_INT);
  return $val;
}

function ValidateFloat($float) {
  $val = htmlentities(strip_tags(trim($float)));
  $val = str_replace(",", ".", str_replace(".", "", $val));
  $val = (float)filter_var($val, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
  return $val;
}

function ValidateEmail($email) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($email))));
  $val = filter_var($val, FILTER_SANITIZE_EMAIL);
  return $val;
}

function ValidateUrl($url) {
  $val = htmlspecialchars(htmlentities(strip_tags(trim($url))));
  $val = filter_var($val, FILTER_SANITIZE_URL);
  return $val;
}

function ValidateDate($dt, $df = _INTL_DateTimeFormat) {
  $dt = htmlspecialchars(htmlentities(strip_tags(trim($dt))));
  if (empty($dt)) return $dt;
  $dt = str_replace(".000", "", str_replace(".000000", "", $dt));
  $val = DateTime::createFromFormat($df, $dt);
  if ( !( $val and $val->format($df) === $dt ) ) return "ERR";
  return $dt;
}
Grazie mille, ho provato a creare la classe pdo come spiegato nel secondo link ma purtroppo ottengo degli errori. Riconttillo il codice è j caso posto l'errore

Grazie ancora
 

Discussioni simili