Symfony – Sign In – Simple Form with Object – Json – Array

Come creare un semplice form Sign In ed ottenere i dati in JSon

Il template .twig in app/Resources/views/default/new.html.twig


{# app/Resources/views/default/new.html.twig #}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}

L’entità in src/AppBundle/Entity/Person.php


<?php

// src/AppBundle/Entity/Person.php
namespace AppBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert; // serve per @Assert\...

class Person // dichiarazione esplicita dell'oggetto
{
    // -------------------------------------------------------------------------    
    // Proprietà ---------------------------------------------------------------
    // -------------------------------------------------------------------------
    
    /**
     * @Assert\NotBlank()
     */
    public $name;    
     /**
     * @Assert\NotBlank()
     */
    public $surname; 
    /**
     * @Assert\Email(
     *     message = "The email '{{ value }}' is not a valid email.",
     *     checkMX = true
     * )
     */
    public $email; 
    
    // -------------------------------------------------------------------------
    // Metodi ------------------------------------------------------------------
    // -------------------------------------------------------------------------
    
    // NB metodi get e set obbligatori per permettere a 'Form component' di symfony di funzionare correttamente
    public function getName() // ottieni
    {
        return $this->name; // assegna il valore che proviene dall'istanza $this->
    }

    public function setName($name) // setta
    {
        $this->name = $name;
    }
    
    // -------------------------------------------------------------------------

    public function getSurname() // ottieni 
    {
        return $this->surname;
    }

    public function setSurname($surname) // setta 
    {
        $this->surname = $surname;
    }
    
    // -------------------------------------------------------------------------
    
     public function getEmail() // ottieni 
    {
        return $this->email;
    }

    public function setEmail($email) // setta 
    {
        $this->email = $email;
    }
    
    // -------------------------------------------------------------------------
}

La classe SignIn in src/AppBundle/Controller/SignIn.php


<?php

// src/AppBundle/Controller/SignIn.php
namespace AppBundle\Controller;
 
use AppBundle\Entity\Person; // carica Person.php creato da me
use Symfony\Bundle\FrameworkBundle\Controller\Controller; // il bundle controller Symfont
use Symfony\Component\HttpFoundation\Request; // capacità do renderizzare html
use Symfony\Component\Form\Extension\Core\Type\TextType; // form di Symfony
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;// NECESSARIO per utilizzare @Route

class SignIn extends Controller // estende la classe Controller di Symfony
{
    /**
    * @Route("/signin")
    */
    public function signInAction(Request $request)
   {
       // creo il nuovo oggetto 
       $person = new Person();
      
       // 1. creo i contenuti HTML del form
       // invio Andrea, Tonin, andrea@email.it
       $form = $this->createFormBuilder($person)
           ->add('name', TextType::class) // il nome delle varibili è lo stesso di Person.php
           ->add('surname', TextType::class) 
           ->add('email', TextType::class) 
           ->add('save', SubmitType::class, array('label' => 'Create Person'))
           ->getForm();
        
       // 3. riconosce che il form non è stato inviato e non fa nulla
       $form->handleRequest($request); 
        
       // 4. se il form è inviato AND valido
       if ($form->isSubmitted() && $form->isValid()) {
           // $form->getData() holds the submitted values
           // but, the original `$person` variable has also been updated
           $person = $form->getData();// ottieni i dati dal form
           
           // debug START ######################################################
           // Oggetto originale
           var_dump($person);  // mostra l'oggetto
           var_dump($person->name);  // mostra la varianbile name all'interno dell'oggetto
           // Conversione Json - NOTAZIONE JSON - è utile per trasportare i dati all'interno di una stringa
           $personJson = json_encode($person); // oggetto convertito in json format
           var_dump ($personJson); // mostra in json
           // Decodifica JSon - TORNA AD ESSERE UN OGGETTO
           $personDecoded = json_decode($personJson);
           var_dump ($personDecoded);
           var_dump($personDecoded->name);  // mostra la varianbile name all'interno dell'oggetto
           
           // Dummy Data, instanzio la classe inviando dei dati di esempio
            $anotherPerson = new Person();
            $anotherPerson->name = "Erica";
            $anotherPerson->surname = "Tonin";
            $anotherPerson->email = "erica@email.it";
           
           // Array
           $people =[]; // creo un array di persone vuoto
           array_push($people,$anotherPerson); // aggiungo id=0 dell'array
           array_push($people,$person); // aggiungo id=1 dell'array
           var_dump ($people); // visualizza il contenuto dell'array
           var_dump ($people[1]->name); // visualizzerà Andrea, array id 1 chiave name
           
           // altre operazioni con gli array
           // conta gli oggetti all'interno dell'array, visualizzerà 2
           var_dump(count($people)); 
           
           // renderizza tutto il contenuto dell'array di oggetti
           for ($i = 0; $i < count($people); $i++)// conteggia tutto il contenuto
           {
            echo $i . " " . ($people[$i]->name) . " " . ($people[$i]->surname) . " " . ($people[$i]->email) . "<br>";
           }
           
           // renderizza solo ad una particolare condizione
           for ($i = 0; $i < count($people); $i++)// conteggia tutto il contenuto
           {
                if (($people[$i]->name) === 'Erica') // se il valore è identico
                {
                echo 'La email di Erica è: ' . ($people[$i]->email) . "<br>";
                }
           }
           
           die ("Stop Here");  // interrompi qui la funzione
           // debug END ########################################################
       }// END validation
 
       // 2. Il form viene creato e renderizzato
       return $this->render('default/new.html.twig', array(
           'form' => $form->createView(),
       ));
   }   
    
}// END class SignIn

Puntare il browser a: http://localhost/symfonytest/first_test_symfony/web/signin

Inserire i dati ed inviare, verrà stampato a video:


C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:45:
object(AppBundle\Entity\Person)[316]
  public 'name' => string 'Andrea' (length=6)
  public 'surname' => string 'Tonin' (length=5)
  public 'email' => string 'andrea@email.it' (length=15)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:46:string 'Andrea' (length=6)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:49:string '{"name":"Andrea","surname":"Tonin","email":"andrea@email.it"}' (length=61)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:52:
object(stdClass)[390]
  public 'name' => string 'Andrea' (length=6)
  public 'surname' => string 'Tonin' (length=5)
  public 'email' => string 'andrea@email.it' (length=15)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:53:string 'Andrea' (length=6)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:65:
array (size=2)
  0 => 
    object(AppBundle\Entity\Person)[372]
      public 'name' => string 'Erica' (length=5)
      public 'surname' => string 'Tonin' (length=5)
      public 'email' => string 'erica@email.it' (length=14)
  1 => 
    object(AppBundle\Entity\Person)[316]
      public 'name' => string 'Andrea' (length=6)
      public 'surname' => string 'Tonin' (length=5)
      public 'email' => string 'andrea@email.it' (length=15)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:66:string 'Andrea' (length=6)

C:\wamp64\www\symfonytest\first_test_symfony\src\AppBundle\Controller\SignIn.php:70:int 2

0 Erica Tonin erica@email.it
1 Andrea Tonin andrea@email.it
La email di Erica è: erica@email.it

Stop Here

Come funziona?

1. Istanziata la classe $person = new Person(); e creato l’oggetto $person, vuoto, cone le sole chiavi.

2. Creato il form con il metodo di Symfony createFormBuilder()

3. Renderizzato il form con il metodo di Symfony return $this->render()

4. Invio i dati dal form, il metodo handleRequest($request); verifica che è stato inviato e aggiorna $person

5. Il contenuto di $person viene validato nell’entità Person.php

6. In signIn.php se $person è stato inviato ed è valido: $person = $form->getData();

7. nella sezione di debug gioco un po con i dati:
– mostro il dato come oggetto
– codifico il dato come json
– decodifico il dato da json
– creo un nuovo oggetto istanziando $anotherPerson = new Person();
– creo un array vuoto $people =[]
– inserisco nell’array i 2 oggetti precedentemente creati
– visualizzo i contenuti secondo la sintassi:

$people[1]->name
nomearray[id]->keyword

Il mio sito ufficiale: lucedigitale.com

By |JSON, PHP, Symfony, Web Design|Commenti disabilitati su Symfony – Sign In – Simple Form with Object – Json – Array

PHP MySQL code to extract data from MySQL table and display as JSON

MySQL -> PHP -> JSON Layer -> JS/HTML

To prevent database password sniffing you must not get a direct access to database (sending database access datas).
The best way is to call a PHP engine and after, the PHP engine will render simple JSON data structure.
In the end you can use JScript to write, on the fly, the final HTML code.

json structure

We need store this simple datas:

Users:

Andrea Tonin January, 12 2012
Riccardo Santato April, 28 2010

We will create this json structure:

{"users":[
        {
            "firstName":"Andrea",
            "lastName":"Tonin",
            "joined": {
                "month":"January",
                "day":12,
                "year":2012
            }
        },
        {
            "firstName":"Riccardo",
            "lastName":"Santato",
            "joined": {
                "month":"April",
                "day":28,
                "year":2010
            }
        }
]}

Create database

Open phpMyAdmin

On the top localhost> mydatabase

Use phpMyAdmin to create:

Left Column> ‘Crea tabella’> MyISAM

Table name: ‘users’

PhpMyAdmin> In Alto> linguetta Struttura> aggiungere i campi

Campo: id
Tipo: INT
Lunghezza: 20
Predefinito: Nessuno
Null: deselezionato
Indice: PRIMARY
AUTO_INCREMENT: selezionato

Campo: firstName
Tipo: VARCHAR
Lunghezza: 255
Predefinito: Nessuno
Null: deselezionato
Indice: nessuno
AUTO_INCREMENT: deselezionato

Campo: lastName
Tipo: VARCHAR
Lunghezza: 255
Predefinito: Nessuno
Null: deselezionato
Indice: nessuno
AUTO_INCREMENT: deselezionato

Campo: month
Tipo: VARCHAR
Lunghezza: 20
Predefinito: Nessuno
Null: deselezionato
Indice: nessuno
AUTO_INCREMENT: deselezionato

Campo: day
Tipo: INT
Lunghezza: 2
Predefinito: Nessuno
Null: deselezionato
Indice: nessuno
AUTO_INCREMENT: deselezionato

Campo: year
Tipo: INT
Lunghezza: 4
Predefinito: Nessuno
Null: deselezionato
Indice: nessuno
AUTO_INCREMENT: deselezionato

The final result inside phpMyAdmin:

mysql-0009

PhpMyAdmin> In Alto> linguetta Inserisci>

Aggiungere i campi:

Andrea Tonin January, 12 2012
Riccardo Santato April, 28 2010

colonna di sinistra PhpMyAdmin> click su ‘users’>

mysql-0010

PHP json translator – php-json.php

<?php
$host="localhost"; //lasciare com'è se utilizzate bluehost
$username="lucedigi_user"; 
$password="mypassword"; 
$db_name="lucedigi_testphp"; // database name
$tbl_name="users"; //indicate la tabella presente nel database a cui si deve collegare 
  
// Connetti al server e seleziona il database
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("DB non connesso");
 
// JSON TRANSLATOR CODE START ###################################
 
$sql = "select * from users"; //indicate la tabella presente nel database a cui si deve collegare 
$result = mysql_query($sql);
$json = array();
if(mysql_num_rows($result)){
while($row=mysql_fetch_row($result)){
$json['users'][]=$row;  //indicate la tabella presente nel database a cui si deve collegare 
}
}
mysql_close($db_name);
echo json_encode($json); // json_encode() PHP Function
 
// JSON TRANSLATOR CODE END ####################################
?> 

Notice:

echo json_encode($json); // json_encode() PHP Function

If you execute php-json.php, you will see:

{“users”:[[“1″,”Andrea”,”Tonin”,”January”,”12″,”2012″],[“3″,”Riccardo”,”Santato”,”April”,”28″,”2010″]]}

JScript Render – js-json.php

<!DOCTYPE html>
 
<html>
<head> 
</head>
 
<body>

    <!-- Write with PHP include function -->
    Write with PHP include function: <br>
    <?php include("php-json.php"); ?>
     
    <script>
	// Write with Javascript
	var jsoncontent='<?php include("phpjson.php"); ?>';
	document.write('<br>Write with JavaScript - simple variable:<br>');
	document.write(jsoncontent);
    </script>
	
</body>
 
</html>

If you execute js-json.php, you will see:

Write with PHP include function:
{“users”:[[“1″,”Andrea”,”Tonin”,”January”,”12″,”2012″],[“3″,”Riccardo”,”Santato”,”April”,”28″,”2010″]]}
Write with JavaScript – simple variable:
{“users”:[[“1″,”Andrea”,”Tonin”,”January”,”12″,”2012″],[“3″,”Riccardo”,”Santato”,”April”,”28″,”2010″]]}

You can store the data inside a javascript object:

<!DOCTYPE html>
  
<html>
<head> 
</head>
  
<body> 
    <script>
    // Write with Javascript
    var jsoncontent='<?php include("php-json.php"); ?>';
    var obj = JSON.parse(jsoncontent);
    alert(JSON.stringify(obj, null, 4));
    </script>   
</body>
  
</html>

Notice: JSON.stringify function to print out Javascript objects

The result is:
json-0001

By |JavaScript, JSON, MySQL, PHP, Web Design|Commenti disabilitati su PHP MySQL code to extract data from MySQL table and display as JSON

Corso Base JQuery OnLine – Metodo – getJSON()

Lezione #id-jd-2013-0011#

Il parsing o analisi sintattica è la capacità di analizzare una data grammatica formale di una struttura di dati.
JQuery tramite il metodo getJSON() esegue automaticamente il parsing delle informazioni JSON. Questo ci permette di caricare con una sola istruzione i dati JSON ed utilizzarli nella nostra pagina web.

By |JQuery, JSON, Web Design|Commenti disabilitati su Corso Base JQuery OnLine – Metodo – getJSON()

Corso Base JSON OnLine – Cos’è JSON?

Corso Base JSON OnLine – Cos’è JSON?

JSON è l’acronimo di JavaScript Object Notation, non è un linguaggio di programmazione ma bensì un formato creato per immagazzinare dei dati che possono essere scambiati facilmente fra client e server.

By |JSON, Web Design|Commenti disabilitati su Corso Base JSON OnLine – Cos’è JSON?