C’era una volta il West o c’era di mezzo solo un parametro? Lo chiamavano trinità o era solo Codeigniter con la sua logica Model-View-Controller ad avere l’esclusiva? Indagini sulle dinamiche nel passaggio di variabili

Scacco e poi Matto!

C’era una volta il West o c’era di mezzo solo un parametro? Lo chiamavano trinità o era solo Codeigniter con la sua logica Model-View-Controller ad avere l’esclusiva? Indagini sulle dinamiche nel passaggio di variabili

Ottobre 21, 2020 codeigniter 0

Senza mancare di rispetto alle istituzioni religiose, la scoperta per chi come me é avvezzo al procedurale terra terra elemntare (non si deve fare fare confusione nei ruoli professionali legati al web, nel senso che un web master come mi definisco io, sa un pò tutto di design, developer e marketing, tre aree professionali molto diverse e ricche di tecnologie, con l’accortezza di non sapere nulla di niente alla fine perché questi tre settori a loro volta nascondono ciascuno decine di diversi mestieri da scomporre a approfondire!), che CODEIGNITER SIA UNO E TRINO è di per se sconvolgente. Abbiamo anche detto che conviene quando si studia una nuova tecnologia lavorare su problemi pratici perché siccome Dio é infinito ma l’essere umano no, ha poco senso perdere un sacco di tempo a studiare manuali e teoria che alla fine risulta sterile a se stessa senza applicazioni pratiche che servono e che siano sentite empaticamente dall’ aspirante web developer, quindi lavorando sul progetto WESTERN abbiamo tirato su una VALANGA DI PROBLEMATICHE DA RISOLVERE. Tra l’altro la questione si presta molto come metafora perchè se andiamo a sotituire il c’era una volta il WEST di Leone con un c’era una volta un parametro ecco che entriamo nel vivo del problema del posto che è fatto di cose concrete:

come faccio a mettere un link su una immagine (o in qualsiasi altra parte) che mi spedisce dei PARAMETRI a una PAGINA DETAILS che dovrà catturare quel parametro e servendosi della clausola where della query andare a costruire dinamicamente di volta in volta quello che serve?

Dal punto di vista procedurale questa questione con PHP si riassume così. Prendiamo il potentissimo applicativo dal titolo UMBRIA GNAM che nessuno conosce. Analizziamo come funziona. C’era una volta la solita INDEX.PHP che spediva un parametro ID che guarda caso ha un valore pieno, per cui cliccando su quell’ elemento specifico sono sicuro di andare a recuperare l’identificatore univoco della riga, cioé IO AVRO’ una sola pagina dettaglio per decine di informazioni variegati e non andrò ogni volta a costruire una pagina diversa a seconda che io debba trafficare piuttosto che con gli attori piuttosto che con i registi o altro. Quindi vediamo come è fatto il link della index dell’ applicativo procedurale tirato su a scopo didattico da Umbriaway Consulting da notare il details.php?id=$id:

echo “<a href=’details.php?id=$id’>”.'<img src=”img/’.$row[‘little’].'” class=”img-responsive” style=”width:100%” alt=”web design umbria”>’.'</a>’

ok e dall’ altra parte che cosa ho sulla details.php la mia pagina di atterraggio e di costruzione dinamica della pagina? Questa pagina di fatto è sempre la stessa per varie intestazioni di colonne tipo attori e registi che a seconda dell’identificativo della riga andranno a stamparsi sulla pagina Intanto con la variabile superglobals GET dovrò recuperare i dati che transitano sulla URL, presumibilmente queste istruzioni andranno dopo l’apertura DB e le verifiche di connessione:

if(isset($_GET[‘id’])){
$id = $_GET[‘id’];

ok e quindi dopo con una semplice QUERY recupero dall’ altra parte, nella seconda pagina dopo il ponte, il valore ID, recuperando solo le informazioni della riga pertinenti con:

$get_details = “select * from nometabella where id=’$id'”;

da sottolineare l’importanza della clausola WHERE e il suo valore di assegnazione che guarda caso chiude il ponte o il cerchio con quanto spedito dalla parte opposta di pagina 1! Sotto la Query avrò il ciclo while che lavora per stampare tutto quello che mi serve:

$run = mysqli_query($connessione, $get_details);
while($row=mysqli_fetch_array($run)){

Adesso IL PROBLEMA CHE SI PONE E’ COME FACCIO A FARE TUTTO QUESTO CHE DI SUO E’ SEMPLICE CON CODEIGNITER?

A questa domanda risponderò a fini didattici con un gigantesco BOOOOOOO nel senso che il FRAMEWORK non funziona così, altrimenti che pattern MVC sarebbe?. Scartabellando in giro leggo tizio caio e sempronio ma per chi è a digiuno della tecnologia specifica all’ inizio si miagola nel buio, per cui ho deciso di FARE UN PASSO INDIETRO NELLO STUDIO E PREOCCUPARMI PRIMA DI COSTRUIRE SITUAZIONI ELEMENTARI CHE SI CAPISCONO A LIVELLO DUMMIES!

Ok lasciamo il problema grosso da parte e preoccupiamoci di un problema simili ma più piccolo che si possa scomporre a livello elementare atomico come fa la tecnologia REACT che per le sue applicazioni usa una filosofia simile. Creiamo una pagina che spedisce dei dati e facciamo in modo che dall’ altra parte possano essere catturati e stampati a video. Nel caso di prova ipotizziamo con la nostra portentosa applicazione che è finalizzata a inquadrare meglio MVC di codeigniter che chiameremo “che tempo fa” funzioni in questo modo:

SE NON VENGONO INSERITI PARAMETRI SUL LINK IO DIRO’ SOLO ALL’ UTENTE: oggi il TEMPO ATMOSFERICO è un mistero, mentre se PIOVE O ALTRO, scriverò un parametro che verrà catturato dinamicamente, come fare?

Costruiamo il controller e la pagina rispettivamente mvc (ricordiamoci di definire la classe con la prima lettera maiuscola)

mvc controller:

public function index()
{
$tempo = $this->input->get(‘tempo’);
if ($tempo) {
$data[‘tempo’] = $tempo;
}
else {
$data[‘tempo’] = ‘misterioso’;
}
$this->load->view(‘mvc_view’, $data);
}

mvc_view.php:

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Esempi Umbriaway Consulting</title>
<style type=”text/css”>

</style>
</head>
<body>
<div id=”container”>
<div id=”header”>
<h1 style=”color: #ff9900″;>Esempi Umbriaway Consulting</h1>
</div>
<div id=”main”>
<p>Ciao oggi il tempo atmosferico é: <strong><?php echo $tempo;?></strong>!</p>
</div>
<div id=”footer”>
<small>Page rendered in {elapsed_time} seconds</small>
</div>
</div>
</body>
</html>

Quindi se sostanzialmente non metto i parametri metti l’informazione di default come risultato, altrimenti stampa a video ALTRO , l’informazione che desideri vedere, quindi se mi collegassi all’ indirizzo:

http://localhost/fwd_mvc/index.php/mvc

vedrei solo

Esempi Umbriaway Consulting

Ciao oggi il tempo atmosferico é: misterioso!
Page rendered in 0.0514 seconds

mentre se digitassi i PARAMETRI , esempio:

http://localhost/fwd_mvc/index.php/mvc?tempo=nuvoloso

vedrei le info giuste:

Esempi Umbriaway Consulting

Ciao oggi il tempo atmosferico é: nuvoloso!
Page rendered in 0.0757 seconds

A questo punto abbiamo anche detto che un web master come mi definisco io professionalmente deve essere in grado di padroneggiare elementi di grafica, elementi di programmazione ma anche di marketing quindi anche l’occhio vuole la sua parte andiamo sul file config.php che si trova dentro la cartella config che sta dentro a la cartella di lavoro application e mettiamo come base url, l’istruzione:

$config[‘base_url’] = ‘http://localhost/mvc/’;

a che ci serve? A inserire risorse esterne come i CSS, abbellimenti grafici o vestiti della domenica, quindi creo allo stello livello di APPLICATION una cartella ASSETS e dentro una CARTELLA CSS e dentro un file mvc.css e dentro scrivo i miei selettori dopodiché linkerò il tutto alla home che nel nostro caso é mvc_view dove andrò a specificare nella head:

<link rel = “stylesheet” type = “text/css” href = “<?php echo base_url(); ?>assets/css/mvc.css”>

ok NON funziona? Perché non sai dare scacco matto del barbiere per cui vedere https://www.farwebdesign.com/wp/dare-lo-scacco-matto-del-barbiere-a-codeigniter-per-inserire-risorse-esterne-seguendo-la-logica-mvc-del-framework/ ma facendo così non farei altro che seguire tutti i tutorial incompleti che ci sono in rete (molti con errori anche voluti per far impazzire il lettore) e per cui diciamo che bisogna caricare l’eleper URL nel controller come prima riga che diventa:

public function index()
{
$this->load->helper(‘url’);
$tempo = $this->input->get(‘tempo’);
if ($tempo) {
$data[‘tempo’] = $tempo;
}
else {
$data[‘tempo’] = ‘misterioso’;
}
$this->load->view(‘mvc_view’, $data);
}

A questo punto occorre fare pace con il cervello, è stato scomposto solo un meccanismo elementare SENZA L’USO DEI DATABASE per andare a recuperare i dati, quindi al momento non ci resta che analizzare tutto il post e capire come posso sfruttare questa dinamica (che funziona, sperimentato sul campo) per risolvere la questione del passaggio dei parametri che riguardano però QUERY di selezione. Per cui attendiamo illuminazioni come San Paolo sulla via di Damasco visto che CODEIGNITER é uno e trino!