Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

martes, 23 de enero de 2024

Php - simplexml_load_string()


¿Qué es xml?

XML (Extensible Markup Language) es un lenguaje de marcado creado por el W3C (World Wide Web Consortium ), con la finalidad de definir una sintaxis para la codificación de documentos, que tanto los usuarios como las propias máquinas en sí puedan ser capaces de leer.

Pero uno de los aspectos que diferencia XML del HTML es que es extensible. Es decir, XML no cuenta con un lenguaje de marcado predefinido, sino que ofrece la posibilidad a los usuarios de generar sus símbolos de marcado.

En un archivo XML encontramos tanto etiquetas como texto, y las etiquetas proporcionan estructura a los datos. En el desarrollo web, XML se utiliza a menudo para almacenar o transportar datos, mientras que en Android, XML se utiliza para crear y personalizar la interfaz de usuario de las aplicaciones.


Script en PHP:


<?php
echo "<h2>Ejemplo xml - datos de la apf </h2>"; // mostrar encabezado 
 
$xmlstring = <<<XML
<?xml version='1.0' encoding='ISO-8859-1' ?> 
<futbol>
    <genero>Masculino</genero>
    <torneo>APERTURA 2024 - Primera division</torneo>
    <nrofecha>2</nrofecha>
    <equiposparticipantes>
        <equipo>Club Olimpia</equipo>
        <equipo>Club Cerro Porteño</equipo>
        <equipo>Club Libertad</equipo>
        <equipo>Club Nacional</equipo>
        <equipo>Club Guarani</equipo>
        <equipo>Club Sportivo Luqueño</equipo>
        <equipo>Club General Caballero de JLM</equipo>
        <equipo>Club Tacuary</equipo>
        <equipo>Club Sol de America</equipo>
        <equipo>Club Sportivo Trinidense</equipo>
        <equipo>Club Sportivo Ameliano</equipo>
        <equipo>Club 2 de Mayo</equipo>
    </equiposparticipantes>
</futbol>
XML;
 
$xml = simplexml_load_string( $xmlstring );
 
$equipos = $xml->equiposparticipantes;
echo "<br> <b>Cantidad de equipos :</b>". $equipos->equipo->count();
 
echo "<h3> Lista de equipos participantes: </h3>";
 
foreach( $equipos->equipo as $club ){
      echo " nombre de equipo: " . $club ."<br>" ;
      //var_dump( $club );
}
 
echo "<pre>";
var_dump( $equipos );
 
// echo $xml->asXML()  ;
// var_dump( $xml->xpath('//equiposparticipantes') );
 
?>


Es importante que conozca la estructura del xml, los niveles, para realizar la llamada
a la etiqueta correcta.
echo "<br> Torneo :" . $xml->torneo ;
// (resultado) Torneo :APERTURA 2024 - Primera division
echo "<br> El primer equipo es :" . $xml->equiposparticipantes->equipo[0]; // (respuesta) El primer equipo es :Club Olimpia

Gracias por visitar mi Blog. Nos vemos en el siguiente blog.

lunes, 22 de enero de 2024

Clases de PHP ( Nivel básica )



 Clases cortas de php


Mira el script en php y veras ejemplos de como usar estos comandos:

  •   array_push — Inserta uno o más elementos al final de un array
  •  compact — Crear un array que contiene variables y sus valores
  • El constructor foreach proporciona un modo sencillo de iterar sobre arrays.
  • Dos manera de comentar en php  con //   o con  /* */
  • Esta permitido agregar etiquetas html en los comandos echo '<br>'
  • print_r() para mostrar por pantalla el contenido de un array, otra forma es con var_dump() 
  1. <?php
  2.  
  3. // recuerda esta es una linea de comentario ( con // al inicio del texto)
  4.  
  5. /*
  6.   ( debe iniciar con el simbolo barra seguido de asterisco)
  7.  
  8.   -- texto contenido --
  9.   Esta es la forma de comentar tu codigo en PHP con varias lineas
  10.  
  11.   ( debe finalizar con asterisco seguido del simbolo barra )
  12.   */
  13.  
  14.  
  15. echo '<br>';
  16. echo '<h3 style="color:blue;">compact</b> — Crear un array que contiene variables y sus valores </h3>';
  17.  
  18. $arrPersonas = [];
  19.  
  20. // ingreso datos de la persona 1
  21. $nombre = "LLanero";
  22. $apellido = "Solitario";
  23. $ciudad = "Boqueron";
  24. $ci = '0000001';
  25.  
  26. $arrReg = compact( "nombre", "apellido", "ci","ciudad" );
  27.  
  28. array_push($arrPersonas, $arrReg );
  29.  
  30. // ingreso datos de la persona 2
  31. $nombre = "Daniel";
  32. $apellido = "Boone";
  33. $ciudad = "Luque";
  34. $ci = '0000002';
  35.  
  36. $arrReg2 = compact( "nombre",'apellido' ); // variables son almacenados en array
  37. $arrReg2["ciudad"]= $ciudad; // insertar clave/valor nueva al $arrReg2
  38. $arrReg2["ci"]= $ci; // insertar clave/valor nueva al $arrReg2
  39.  
  40. array_push($arrPersonas, $arrReg2 );
  41.  
  42. echo "<pre>";
  43. echo "<br> <strong><span style='color:red;font:bold;'>*** mostrar array contenidos print_r() otra opcion es var_dump() </span></strong><br>";
  44. print_r( $arrPersonas );
  45.  
  46. echo "<br> <b>*** interar array \$arrPersonas</b> <br><br>";
  47. // interar datos del $arrPersonas con foreach
  48. foreach ($arrPersonas as $Persona ){
  49. $stringDatos = '';
  50. foreach ($Persona as $i => $value) {
  51. $stringDatos .= '| Propiedad: '. $i . ' Valor: '.$value .' |' ;
  52. }
  53. echo $stringDatos . '<br>';
  54. }
  55.  
  56. echo "<br> <b>*** mostrar el nombre y el apellido del segundo array interno</b> <br>";
  57. echo "<br>El nombre es: " . $arrPersonas[1]['nombre']; // [1] indica el indice 1 o segundo array interno
  58. echo "<br>El nombre es: " . $arrPersonas[1]['apellido'];
  59.  
  60. echo '<br><br>';
  61. echo "<br> <b>*** Link de apoyo de la funcion compact: </b> <br>";
  62. echo 'https://www.php.net/manual/es/function.compact.php';
  63.  
  64. ?>
  65. Resultado de la ejecución del código php ( si desea ejecutar en tu pc, te recomiendo de instales Xampp,
es un paqueta de software, que incluye el servidor web apache, necesario para la ejecucion de los
programas hechos en php ).



    Php es un lenguaje de programación, que se ejecuta del lado del servidor. Es fácil de aprender, pero requiere practica.

    Seguiremos aprendiendo en la siguiente clase.

martes, 25 de julio de 2017

Mysqli - POO -Update tabla




Ya hemos creado la tabla tbproveedor. Y creamos un programa de consulta.
Ahora vamos a modificar uno de los registros que fue ingresado en nuestra base de datos (Mysql).

Tenga en cuenta que dejamos de usar la antigua mysql por mysqli orientado a objeto, es decir la instruccion new mysqli

Archivo de actualizacion en php ( UpdateProveedor.php )



<?php

$servername = "localhost";
$username   = "root";
$password   = "MiPassword";
$dbname     = "db_test";

// Creamos la conexion
$conn = new mysqli($servername, $username, $password, $dbname);


// verifica coneccion # Check connection
if ($conn->connect_error) {
    die("falla en la conexión : " . $conn->connect_error);
}

   // preparamos la campos a modificar. En este ejemplo será el  registro con id=3 
 $id = 3;
 $direccion = "Lillo 1212" ;
 $telefono  = "555-123";

$sql = "UPDATE tbproveedor SET direccion= ?, telefono = ? WHERE id= ? ";
$stmt = $conn->prepare($sql);

// 'ssd'  donde la s=string  y la i=integer
$stmt->bind_param('ssi', $direccion, $telefono, $id);

$stmt->execute();


if ($stmt->errno ) {
    echo "Error de actualización : " . $conn->error;
} else {
        echo "El Registro fue actualizado con exito !!!";
}

// cerrar la conexion
$conn->close();

?>
Con el navegador, ejecutamos el programa php creado. El resultado es esta impresión de pantalla. 

Tenga en cuenta que debe estar en ejecución el Servidor Web, en mi caso el apache, y el Mysql (en mi caso tengo instalado el XAMPP).


sábado, 15 de julio de 2017

Msqli - POO - Consultar tabla






Introducción a la extensión MySQL mejorada (Mysqli)

La extensión mysqli
(mysql improved) permite acceder a la funcionalidad proporcionada por MySQL 4.1 y posterior.

La extensión mysqli ofrece una interfaz dual. Soporta el paradigma de programación procedimental y el orientado a objetos (poo).  En esta sección vamos a utilizar la poo

Pasos a seguir:

1) Creción de la base de datos 
db_test y la tabla tbproveedor  en mysql

2) Creamos el archivo php de consulta

  1. conexión a la base de datos con el comando new mysqli()
  2. chequear la conexión
  3. preparar la consulta ( select )
  4. recorrer los registros y mostrar en pantalla
Iniciamos la tarea:

Creamos la tabla (tbproveedor) en Mysql

Estas son las instrucciones que se debe ejecutar en Mysql. Creamos la tabla tbproveedor  con el comando CREATE TABLE e ingresamos tres registros  en la tabla con el comando INSERT.

CREATE DATABASE db_test;

USE db_test;

CREATE TABLE tbproveedor
(  id INT NOT NULL AUTO_INCREMENT , 
   proveedor  VARCHAR(40) NOT NULL , 
   direccion  VARCHAR(50) NOT NULL ,
   telefono   VARCHAR(20) NULL , 
   PRIMARY KEY (id)) ENGINE = InnoDB;

/* insertamos algunos datos de prueba */
INSERT INTO tbproveedor values
   ('', 'Paseo San Vicente', 'Charles de Gaulle 221', '607-273'),
   ('', 'Shoes 4 less', 'Shopping Multiplaza', '514-045'),
   ('', 'Proveedor 03', 'Direccion prueba 03', '456-789');



Solo resta creamos el archivo php, que realiza la consulta a la base de datos Mysql, y prepara la vista de los proveedores.
Tenga en cuenta que dejamos de usar extension MySQL (original)  por la nueva mysqli orientado a objeto.

MySQL(original): Esta extensión está obsoleta a partir de PHP 5.5.0, por lo que ha sido eliminada a partir de PHP 7.0.0.

Archivo de consulta en php ( ConsultarProveedor.php )

<?php

  $servername = "localhost";
  $username   = "root";
  $password   = "MiPassword";
  $dbname     = "db_test";

// crear conexion con new mysqli
  $conn = new mysqli($servername, $username, $password, $dbname);

// Chequear la conexion
  if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
  } 

  $sql = "SELECT id, proveedor, direccion, telefono FROM tbproveedor";
  $result = $conn->query($sql);

  if ($result->num_rows > 0) {
     // preparamos nuestra tabla
     echo "<table border=2>";
     echo "<tr>";
     echo "<th>id</td> <th>proveedor</td> <th>direccion</td> <th>telefono</td>";
     echo "</tr>";

     // recorrer los registros del select cargando la consulta en un array asociativo
     while( $row = $result->fetch_assoc() ) {
  
        // echo "id: " . $row["id"]. " - proveedor: " . $row["proveedor"]. " Direccion: " . $row["direccion"].
        //      " Telef: " . $row["telefono"] . " </br>" ;
        echo "<tr>";
        echo "<td>" .  $row["id"] . "</td>";
        echo "<td>" .  $row["proveedor"] . "</td>";
        echo "<td>" .  $row["direccion"] . "</td>";
        echo "<td>" .  $row["telefono"] . "</td>";
        echo "</tr>" ;  
     }
     echo "</table>";
  } else {
    echo "0 results";
}
$conn->close();

?>


Con el navegador, ejecutamos el programa php creado. El resultado es esta impresión de pantalla. 
Tenga en cuenta que debe estar en ejecución el Servidor Web, en mi caso el apache, y el Mysql (en mi caso tengo instalado el XAMPP).





Material de consulta:


-       

lunes, 10 de julio de 2017

PHP - Sumar días a una fecha/Crear array con los primeros días de cada mes


Script en php – como sumar días a una fecha y como crear array con el primer día de cada mes de un año determinado (se recibe como parámetro el año)

Estilo orientado a objetos :   public DateTime DateTime::modifystring $modify )

sumar días a una fecha con modify()

Esta es la instruccion del archivo php.  La variable $fecha recibe el objeto con la fecha/hora, con el comando new DateTime.

Posterior a eso, en el ciclo for incrementamos los dias con el comando
$fecha->modifiy(), y el parametro  '+1 day',  '+2 day',  '+3 day',  
'+4 day',  '+5 day',  '+6 day',  '+7 day'


<?php

echo " ** fin del recorrido ** <br><br>";
$hoy = date('Y-m-d');
echo "fecha de hoy =" . $hoy . " <br> ";

$fecha = new DateTime( $hoy );
$fecha->modify('+7 day');
echo "Agregar +7 dia =" . $fecha->format('Y-m-d h:m:s') . " <br> ";

for ($i=1;$i<=7;$i++){
   $avance = '+'.$i .' day';  
   $fecha->modify($avance);
   echo "Agregar +$i dia =" . $fecha->format('Y-m-d h:m:s') . " <br> ";
               
}

?>

Resultado del script PHP, ejecutado en el navedador.
Ten en cuenta que debes tener en ejecucion el Servidor Web, en mi caso Apache, para realizar tus pruebas.







crear array con el primer día de cada mes de un año determinado


<?php

$arraymes = array( 'Enero','Febrero','Marzo',
                                   'Abril','Mayo', 'Junio',
                                'Julio','Agosto','Septiembre',
                                    'Octubre','Noviembre','Diciembre');
                                                                
$arraydias = array( 'Lunes','Martes','Miercoles',
                                  'Jueves','Viernes','Sábado',
                                  'Domingo');
                                                                
                                                                
function obtener_1DMY($fyear){
                // funcion obtener primer dia del mes con avance de mes
                $arrayprimermes = array();

                $dt = new DateTime($fyear . '-01-01');
                for ($i=1; $i<=12; $i++){
                        array_push($arrayprimermes, $dt->format('Y-m-d'));
                        $dt->modify("+1 month"); 
                }
                return $arrayprimermes;
} // fin funcion

$Year = '2016' ;
$array1erDMY = obtener_1DMY($Year);

$i=0;
foreach ($array1erDMY as $fecha){
       $dt_fecha = new DateTime($fecha);
       echo "El primer dia de " . $arraymes[$i]. " sera el " . $dt_fecha->format('d/m/Y') . " caera un día " . $arraydias[$dt_fecha->format('w')] ." <br>" ;
        $i++;
}


?>

Resultado del script PHP:

Obtener primer día simplificado

$fecha = new DateTime();
$fecha->modify('first day of this month');
echo $fecha->format('d/m/Y'); // resultado 10/07/2017

domingo, 17 de julio de 2016

Yii2 Formulario Modal via Ajax (create/update/view)

Paso 1) En el archivo index.php de la vista
Views/cliente/index.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
use yii\bootstrap\Modal;
use yii\helpers\Url;
?>

 <h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
      
     // comenta este link
     <?= // Html::a('Create cliente', ['create'], ['class' => 'btn btn-success']) ?>
       
     // Agregar este boton  
     <?= Html::button('Create cliente', 
        ['value'=>Url::to(['cliente/create']),
                        'class' => 'btn btn-success','id'=>'modalButton']) ?>
    
    


//  Antes del GridView agregar esta declaracion modal

<?php
  Modal::begin([
     'header' =>'<h4>Ficha</h4>',
     'id'     =>'modal',
     'size'   =>'modal-lg',
     'clientOptions' => ['backdrop' => 'static', 'keyboard' => FALSE]
     ]);
  echo "<div id="modalContent"> </div>";
  Modal::end();
?>

<?php

GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
   
 ...

// ['class' => 'yii\grid\ActionColumn'],  

  // personalizamos la acciones del GridView
  [
   'class' => 'yii\grid\ActionColumn',
   'contentOptions' => ['style' => 'width: 8.7%'],
             //'visible'=> Yii::$app->user->isGuest ? false : true,
             'buttons'=>[
                      'view'=>function ($url, $model) {
                          return Html::button('<span class="glyphicon glyphicon-eye-open"></span>', 
                                       ['value'=>Url::to(['cliente/view', 'id'=>$model->id]), 
                                        'class' => 'btn btn-default btn-xs custom_button'
                                       ]);
                      },
                      'update'=>function ($url, $model) {
                          return Html::button('<span class="glyphicon glyphicon-pencil"></span>', 
                                       ['value'=>Url::to(['cliente/update', 'id'=>$model->id]),
                                        'class' => 'btn btn-default btn-xs custom_button'
                                        ]);
                      },
                  ],
            ],  // fin ActionColumn

       ],
    ]);
    ?>

Paso 2) assets/AppAsset.php

1
2
3
  public $js = [
     'js/formmodal.js',
   ];
Paso 3) web\js\formmodal.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function(){
 
 //alert("jquery");
 
    $('#modalButton').click(function(){
       $('#modal').modal('show')
                  .find('#modalContent')
                  .load($(this).attr('value'));
        document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
    });


    $('.custom_button').click(function(){
        $('#modal').modal('show')
                   .find('#modalContent')
                   .load($(this).attr('value'));
         //dynamiclly set the header for the modal
          document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';

    });


});


Paso 4) En el Controlador ClienteController.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php

public function actionView($id)
    {
        // remplazar render por renderAjax
        return $this->renderAjax('view', [
            'model' => $this->findModel($id),
        ]);
    }
public function actionCreate()
    {
        $model = new Cliente();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } 
        elseif (Yii::$app->request->isAjax) {
            return $this->renderAjax('create', [
                        'model' => $model
            ]);
        } else {
            return $this->render('create', [
                        'model' => $model
            ]);
        }
    }

 public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }
        elseif (Yii::$app->request->isAjax) {
            return $this->renderAjax('update', [
                        'model' => $model
            ]);
        } else {
            return $this->render('update', [
                        'model' => $model
            ]);
        }
    }

?>
CREATE
view modal yii2

UPDATE

create modal yii2



VIEW

update modal yii2

python - método split()

  Cómo dividir cadena en subcadenas con  el method split()? En este ejemplo, le asigno a la variable varTP el bloque de información con el q...