Nerd Zone: il nostro sito internet

Non hai idea di dove sei finito ?? clicca qui: Nerd Zone., diversamente vuoi conoscere come abbiamo realizzato il nostro sito internet !! Cominciamo Subito !! Siamo partiti nel chiederci che tipo di sito internet doveva essere realizzato e la risposta è stata semplice: comunicare la nostra passione per l'informatica, presentare i nostri progetti in maniera chiara ed esaustiva, mostrare cosa "bolle in pentola" per il futuro e fornire assistenza immediata alla clientela, tutto in puro stile MIT, ovvero CONDIVISIONE!


 Premessa Vitale 
Il sito è stato creato interamente a "mano".

    NON è un WordPress !!!
    NON è Joomla !!!
    NON è Concrete 5 !!!
    NON è Drupal !!!
    NON è TYPO3 !!!
insomma, non è un sito "PRECOTTO" ma 100% originale!

Dopo questa doverosa puntualizzazione, iniziamo.


 il processo creativo 
Semplice! dopo aver deciso la "filosofia" alla base del sito internet, la fase successiva è stata decidere i primi contenuti. Un premessa è d'obbligo: ogni sito internet che si rispetti, è in continuo sviluppo con nuove aree, nuovi contenuti e aggiornamenti tecnici. Parliamo di siti internet "veri", le vetrine wordpress create "al kilo" non fanno testo... Tornando a noi, siamo partiti da una base di contenuti del vecchio sito, deciso le aree principali e iniziato la fase di sviluppo.


 strumenti e tecnologie 
Prima di iniziare a scrivere una sola riga di codice (si, lo so... è solo HTML, ma chiamiamolo comunque, codice, perchè l'evoluzione ci ha portato a scrivere moduli avanzati, nonostante l'uso di PHP... :) abbiamo deciso che la tecnologia alla base doveva essere HTML5 e CSS3, quindi la scelta di usare Bootstrap 4 per velocizzare, con stile, la realizzazione finale.
 [ ! ]  Sviluppiamo tutti le soluzioni web-based con l'ausilo di VMware Workstaion Player su base Debian: questo annulla la latenza e offre la possibilità di lavorare OFF-Line. Come editor php, usiamo PhpStorm by JetBrains.


 Il sito internet 
Per iniziare, abbiamo scelto un template bootstrap 4 di base e abbiamo iniziato a personalizzarlo, in base alla struttura precedentemente stabilita. Chi siamo, cosa facciamo, cosa abbiamo realizzato, cosa voglia realizzare e ... restiamo in contatto, ovvero le sezioni del sito. Al lancio, il sito si presentava solo con sezioni "statiche", successivamente sono iniziate le automazioni basate su db, con la sezione "notizie".
L'intero sito internet è basato su un'unica pagina che carica i contenuti in base alla navigazione e mascherato dal modulo mod_rewrite: ad esempio, quando carico la sezione "Nerd Zone", richiamo sempre index.php passando la chiave "nz", che determina il caricamento della sezione; https://digitalcode.ch/nerd_zone corrisponde a http://digitalcode.ch/?nz e questo è la configurazione .htaccess: RewriteRule ^nerd_zone$ index.php?nz [NC]


 [ Update ] Sezione News 
Parte vitale di un sito internet è comunicare cosa stai facendo !! quindi quale mezzo migliore di una sezione notizie finalizzato a questo scopo ?? Naturalmente i mezzi di coumincazione principale per informare amici e clienti sono i social network con link al portale, ma una volta sul sito, è necessario far sapere ai visitatori le novità. Abbiamo creato un db, basato su MariaDB, e creato l'area notizie in PHP7 utilizzando uno stile "sinusoidale" basato su Bootstrap 4, perchè volevamo qualcosa di estremamente originale.
Successivamente abbiamo aggiunto la funzione di "impaginazione" delle notizie, basato sulla funzione Bootstrap 4 pagination, ma era "troppo classico" e non seguiva lo stile usato per le notizie, quindi abbiamo "trasformato" il quadrato in cerchio !!
style: width: 32px; height: 32px; border-radius: 16px; background-color: #ED8D8D; color: white;


 PHP Database Class 
Per semplificarsi la vita, consigliamo l'utilizzo delle Classi
"Spoileriamo" la nostra usata per gestire il database del sito:

class db {
    protected $connection;
	protected $query;
	public $query_count = 0;
	public function __construct($dbhost = 'localhost', $dbuser = '', $dbpass = '', $dbname = '', $charset = 'utf8') {
		$this->connection = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
		if ($this->connection->connect_error) {
			die('Failed to connect to MySQL - ' . $this->connection->connect_error);
		}
		$this->connection->set_charset($charset);
	}
    public function query($query) {
		if ($this->query = $this->connection->prepare($query)) {
            if (func_num_args() > 1) {
                $x = func_get_args();
                $args = array_slice($x, 1);
				$types = '';
                $args_ref = array();
                foreach ($args as $k => &$arg) {
					if (is_array($args[$k])) {
						foreach ($args[$k] as $j => &$a) {
							$types .= $this->_gettype($args[$k][$j]);
							$args_ref[] = &$a;
						}
					} else {
	                	$types .= $this->_gettype($args[$k]);
	                    $args_ref[] = &$arg;
					}
                }
				array_unshift($args_ref, $types);
                call_user_func_array(array($this->query, 'bind_param'), $args_ref);
            }
            $this->query->execute();
           	if ($this->query->errno) {
				die('Unable to process MySQL query (check your params) - ' . $this->query->error);
           	}
			$this->query_count++;
        } else {
            die('Unable to prepare statement (check your syntax) - ' . $this->query->error);
        }
		return $this;
    }
	public function fetchAll() {
	    $params = array();
	    $meta = $this->query->result_metadata();
	    while ($field = $meta->fetch_field()) {
	        $params[] = &$row[$field->name];
	    }
	    call_user_func_array(array($this->query, 'bind_result'), $params);
        $result = array();
        while ($this->query->fetch()) {
            $r = array();
            foreach ($row as $key => $val) {
                $r[$key] = $val;
            }
            $result[] = $r;
        }
        $this->query->close();
		return $result;
	}
	public function fetchArray() {
	    $params = array();
	    $meta = $this->query->result_metadata();
	    while ($field = $meta->fetch_field()) {
	        $params[] = &$row[$field->name];
	    }
	    call_user_func_array(array($this->query, 'bind_result'), $params);
        $result = array();
		while ($this->query->fetch()) {
			foreach ($row as $key => $val) {
				$result[$key] = $val;
			}
		}
        $this->query->close();
		return $result;
	}
	public function numRows() {
		$this->query->store_result();
		return $this->query->num_rows;
	}
	public function close() {
		return $this->connection->close();
	}
	public function affectedRows() {
		return $this->query->affected_rows;
	}
	private function _gettype($var) {
	    if(is_string($var)) return 's';
	    if(is_float($var)) return 'd';
	    if(is_int($var)) return 'i';
	    return 'b';
	}
}
                                                


>>  Collegarsi al DB:
include '_digital.php';
$dbhost = '***';
$dbuser = '***';
$dbpass = '***';
$dbname = '***';
$db = new db($dbhost, $dbuser, $dbpass, $dbname);

>>  Recuperare i dati dal DB:
$account = $db->query('SELECT * FROM accounts WHERE username = ? AND password = ?', 'test', 'test')->fetchArray();
echo $account['name'];
oppure se preferisci:
$account = $db->query('SELECT * FROM accounts WHERE username = ? AND password = ?', array('test', 'test'))->fetchArray();
echo $account['name'];

>>  Recuperare più record dal DB:
$accounts = $db->query('SELECT * FROM accounts')->fetchAll();
foreach ($accounts as $account) {
	echo $account['name'] . '< br>';
}

>>  Contatore:
$accounts = $db->query('SELECT * FROM accounts');
echo $accounts->numRows();

>>  Contatore rows coinvolte nell'operazione:
$insert = $db->query('INSERT INTO accounts (username,password,email,name) VALUES (?,?,?,?)', 'test', 'test', 'test@gmail.com', 'Test');
echo $insert->affectedRows();

>>  Chiudere il DBe:
$db->close();

>>  Numero totale di query:
echo $db->query_count;

                                                


 Sviluppo Continuo 
Il nostro sito internet è la massima espressione della principale caratteristica che ci distingue: essere pionieri! Siamo partiti da 40 righe di codice e siamo arrivati a quasi 7000! Aggiorniamo costantemente la tecnologia alla base perchè siamo programmatori entusiasti, aggiorniamo costantemente i contenuti perchè siamo internauti incalliti e ascoltiamo le esigenze dei visitatori per creare un mercato migliore a doppio senso e non certo "MERCENARIO" !!
Creato interamente a MANO utilizzando la conoscenza DIRETTA dell'informatica:
site 100% original & hand made


Spero sia stato interessante e magari istruttivo (oppure illuminante :).
Diteci cosa ne pensate sul canale twitter, facebook o linkedin di digitalCode !!

Torna alla Nerd Zone