SlideShare uma empresa Scribd logo
1 de 39
Integración de Ext JS con CodeIgniter Ing. Crysfel Villa
Objetivo Conocer el Framework CodeIgniter e integrarlo con Ext JS para generar aplicaciones RIA
Agenda Introducción a PHP Conociendo el lenguaje Conexiones a base de datos Patrón MVC CodeIgniter Integración con Ext JS Uniendo las piezas
Conocimiento previo Xhtml/Html CSS Javascript básico
Instalación Apache 2 PHP MySQL Ext JS Notepad++
¿Qué es PHP? PHP: HypertextPreprocessor Lenguaje interpretado Es Open Source Normalmente es ejecutado del lado del servidor Tiene soporte para varias bases de datos (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
¡Hola mundo! <?php $msg= "¡Hola mundo!";  ?> <html> 	<head> 		<title>Ejemplo</title> 	</head> 	<body> 		<h1><?phpecho$msg; ?></h1> 	</body> </html>
Condiciones $numero = 2; If($numero == 2){ 	$numero --; }elseif($numero == 1){ 	$numero++; }else{ 	$numero = 0; }
Concatenación $nombre = “Crysfel”; $apellido = “Villa”; echo“Me llamo ”.$nombre.” ”.$apellido;
Ciclos for($i = 0; $i < 10 ; $i++){ echo“i = $i ”; } $j = 5; while($j < 0){ echo“j = $j”; 	$j--; }
Arrays $alumnos = array(“Juan”,”Pedro”,”Karina”); echo $alumnos[1]; $alumnos[] = “Maria”;  array_push($alumnos,”Carlos”); unset($alumnos[1]);
Arrays $hash = array( array( 			"nombre"=>"Juan", 			"apellido"=>"Perez", 			"edad"=>28 		), array( 			"nombre"=>"Maria", 			"apellido"=>"Martinez", 			"edad"=>21 		) 	); echo $hash[1]['nombre'];
Recorrer un Array foreach($hash as $persona){ foreach($persona as $key=>$value){ echo“$key: $value, "; 	} }
Conexión a una Base de Datos //host, user, passwd $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('no se pudo conectar: ' . mysql_error()); } echo'¡Se conectó correctamente!'; mysql_close($link);
Seleccionar una DB $db_selected = mysql_select_db('testing', $link); if (!$db_selected) { 	die ('No se puede usar "testing" : '. mysql_error()); } echo'Usando "testing"';
Leyendo información $result = mysql_query('SELECT * FROM personas'); if (!$result) {die('Invalidquery: ' . mysql_error());} $personas = array(); while($row = mysql_fetch_assoc($result)){ array_push($personas, $row); }
Servidor Web
Patrón MVC
CodeIgniter Es un Framework para desarrollo de aplicaciones Web  open source basado en el lenguaje PHP. Fácil de implementar Buena documentación No utiliza la línea de comandos
Instalación Descargar Descomprimir Copiar al servidor Web
Configuranción básica application/config/config.php URL base application/config/autoload.php DataBase, Form y URL Helper, Modelos application/config/database.php Credenciales application/config/routes.php Ruta de inicio
Controller class Post extendsController{ functionindex(){ 		$data['title'] = “Bienvenidos"; 		$data['date'] = date('d-m-Y'); $this->load->view("post/page", $data); 	} }
View <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> 		<title>Page title</title> </head> <body> <h1><?phpecho $title; ?></h1> <p><?phpecho $date; ?></p> </body> </html>
CRUD Create(crear) Read (leer) Update (actualizar) Delete (borrar)
Creación de la Base de datos Miblog Post Id Titulo Fecha Contenido Autor
Model (Leer) classPost_modelextendsModel{ functionfindAllPosts(){ 		$query = $this->db->get('posts'); return $query->result(); } }
Controller (Leer) functionindex(){ //mostrar todos los posts 		$data['title'] = "Bienvenido"; 		$data['date'] = date('d-m-Y'); 		$posts = $this->post_model->findAllPosts(); if(!isset($posts))$posts =array(); 		$data['posts'] = $posts; $this->load->view("post/list",$data); 	} *Para usar el “post_model” se debe cargar primero
View (Leer) <h1><?phpecho $title; ?></h1> <p><?phpecho $date; ?></p> <ul> <?phpforeach($postsas $post):?> 	<li><?phpecho $post->titulo; ?></li> <?phpendforeach?> </ul>
Model (Crear) functionaddPost($post){ $this->db->insert('posts',$post); }
Controller (Crear) functioncreate(){ 		$post = array( 			'titulo'=>$this->input->post('titulo'), 			'contenido'=>$this->input->post('contenido'), 			'author'=>$this->input->post('autor'), 			'fecha'=>date('Y-m-d') 		); $this->post_model->addPost($post); $this->index(); 	}
View (Crear) <?phpechoform_open('post/create'); ?> <p> 	<labelfor="titulo">Titulo:</label> 	<input type="text" name="titulo" id="titulo" /> </p> <p> 	<labelfor="autor">Autor:</label> 	<input type="text" name="autor" id="autor" /> </p> <p> 	<labelfor="contenido">Contenido:</label> 	<textareaname="contenido" id="contenido"></textarea> </p> <input type="submit" value="Guardar" /> <?phpechoform_close(); ?> *Para usar el “form_open” se debe cargar el “form” helper
Model (borrar) functiondeletePost($id){ 		$this->db->where('id',$id); 		$this->db->delete('posts'); }
Controller (Borrar) function delete(){ $this->post_model->deletePost(  		$this->uri->segment(3) 	); $this->index(); }
View (Borrar) <?php  echoanchor("post/delete/$post->id","Borrar");  ?> *Para utilizar el ”anchor” se debe cargar el ”url” helper
Model (Actualizar)  functionfindPostById($id){ $this->db->where('id',$id); $query = $this->db->get('posts'); if($query->num_rows() > 0) return $query->row();  } functionupdatePost($post){ $this->db->where('id',$post['id']); $this->db->update('posts',$post); }
Controller (Actualizar) functionedit(){ $data['post'] = $this->post_model->findPostById($this->uri->segment(3)); $this->load->view('post/edit',$data); }
Controller (Actualizar) functionupdate(){ 		$post = array( 			'id'=>$this->input->post('id'), 			'titulo'=>$this->input->post('titulo'), 			'contenido'=>$this->input->post('contenido'), 			'author'=>$this->input->post('autor'), 			'fecha'=>date('Y-m-d') 		); $this->post_model->updatePost($post); $this->index(); 	}
View (Actualizar) <?phpechoform_open('post/update'); ?> <input type="hidden" name="id" value="<?phpecho $post->id;?>" /> <p> 	<labelfor="titulo">Titulo:</label> 	<input type="text" name="titulo" id="titulo" value="<?phpecho $post->titulo;?>" /> </p> <p> 	<labelfor="autor">Autor:</label> 	<input type="text" name="autor" id="autor" value="<?phpecho $post->author;?>" /> </p> <p> 	<labelfor="contenido">Contenido:</label> 	<textareaname="contenido" id="contenido"><?phpecho $post->contenido;?></textarea> </p> <input type="submit" value="Guardar" /> <?phpechoform_close(); ?>
Preguntas Crysfel Villa www.quizzpot.com training@quizzpot.com

Mais conteúdo relacionado

Destaque

セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)
セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)
セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)Shoot Morii
 
Determinismo e seconda legge della dinamica
Determinismo e seconda legge della dinamicaDeterminismo e seconda legge della dinamica
Determinismo e seconda legge della dinamicaFabrizio Rota
 
Cort 1 & Soalan
Cort 1 & SoalanCort 1 & Soalan
Cort 1 & SoalanNor Azlina
 
Asignaturas J.23pptx
Asignaturas J.23pptxAsignaturas J.23pptx
Asignaturas J.23pptxMarta
 
Outlook Luglio
Outlook LuglioOutlook Luglio
Outlook LuglioMarta
 
簡報技巧、寫作格式分享
簡報技巧、寫作格式分享簡報技巧、寫作格式分享
簡報技巧、寫作格式分享Jlarkin Wang
 
Presentation Talent Pull
Presentation Talent PullPresentation Talent Pull
Presentation Talent PullKees Wolters
 
Vaidyakiya Vyavasay Vyavahar Aani Dhyeya A Bestseller By Dr
Vaidyakiya  Vyavasay  Vyavahar  Aani  Dhyeya  A  Bestseller By   DrVaidyakiya  Vyavasay  Vyavahar  Aani  Dhyeya  A  Bestseller By   Dr
Vaidyakiya Vyavasay Vyavahar Aani Dhyeya A Bestseller By DrMonika Gavali
 
Eportfolio
EportfolioEportfolio
Eportfolioaecro
 
Message Viet
Message VietMessage Viet
Message Vietminh_va
 
济南市信息产业情况介绍20091109
济南市信息产业情况介绍20091109济南市信息产业情况介绍20091109
济南市信息产业情况介绍20091109victorchina
 
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarSwacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarMonika Gavali
 
Простейшие
ПростейшиеПростейшие
ПростейшиеMax Buts
 
"Facciamo Ubuntu" @ Linux Day 2009
"Facciamo Ubuntu" @ Linux Day 2009"Facciamo Ubuntu" @ Linux Day 2009
"Facciamo Ubuntu" @ Linux Day 2009Lorenzo Sfarra
 
Tecnologia
TecnologiaTecnologia
TecnologiaRicardo
 
презентация натальи корякиной 2
презентация натальи корякиной 2презентация натальи корякиной 2
презентация натальи корякиной 2panteranatasha
 

Destaque (20)

セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)
セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)
セキュリティ&プログラミングキャンプ2009参加レポート (PDF版)
 
Determinismo e seconda legge della dinamica
Determinismo e seconda legge della dinamicaDeterminismo e seconda legge della dinamica
Determinismo e seconda legge della dinamica
 
Cort 1 & Soalan
Cort 1 & SoalanCort 1 & Soalan
Cort 1 & Soalan
 
OváRio
OváRioOváRio
OváRio
 
Asignaturas J.23pptx
Asignaturas J.23pptxAsignaturas J.23pptx
Asignaturas J.23pptx
 
Outlook Luglio
Outlook LuglioOutlook Luglio
Outlook Luglio
 
簡報技巧、寫作格式分享
簡報技巧、寫作格式分享簡報技巧、寫作格式分享
簡報技巧、寫作格式分享
 
Presentation Talent Pull
Presentation Talent PullPresentation Talent Pull
Presentation Talent Pull
 
Vaidyakiya Vyavasay Vyavahar Aani Dhyeya A Bestseller By Dr
Vaidyakiya  Vyavasay  Vyavahar  Aani  Dhyeya  A  Bestseller By   DrVaidyakiya  Vyavasay  Vyavahar  Aani  Dhyeya  A  Bestseller By   Dr
Vaidyakiya Vyavasay Vyavahar Aani Dhyeya A Bestseller By Dr
 
Eportfolio
EportfolioEportfolio
Eportfolio
 
Message Viet
Message VietMessage Viet
Message Viet
 
济南市信息产业情况介绍20091109
济南市信息产业情况介绍20091109济南市信息产业情况介绍20091109
济南市信息产业情况介绍20091109
 
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarSwacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
 
Простейшие
ПростейшиеПростейшие
Простейшие
 
"Facciamo Ubuntu" @ Linux Day 2009
"Facciamo Ubuntu" @ Linux Day 2009"Facciamo Ubuntu" @ Linux Day 2009
"Facciamo Ubuntu" @ Linux Day 2009
 
Alfabetoamigo
AlfabetoamigoAlfabetoamigo
Alfabetoamigo
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
презентация натальи корякиной 2
презентация натальи корякиной 2презентация натальи корякиной 2
презентация натальи корякиной 2
 
Hge ranking puno 2014 2015
Hge ranking puno 2014 2015Hge ranking puno 2014 2015
Hge ranking puno 2014 2015
 
Len Trophy
Len TrophyLen Trophy
Len Trophy
 

Taller de PHP + Code Igniter

  • 1. Integración de Ext JS con CodeIgniter Ing. Crysfel Villa
  • 2. Objetivo Conocer el Framework CodeIgniter e integrarlo con Ext JS para generar aplicaciones RIA
  • 3. Agenda Introducción a PHP Conociendo el lenguaje Conexiones a base de datos Patrón MVC CodeIgniter Integración con Ext JS Uniendo las piezas
  • 4. Conocimiento previo Xhtml/Html CSS Javascript básico
  • 5. Instalación Apache 2 PHP MySQL Ext JS Notepad++
  • 6. ¿Qué es PHP? PHP: HypertextPreprocessor Lenguaje interpretado Es Open Source Normalmente es ejecutado del lado del servidor Tiene soporte para varias bases de datos (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
  • 7. ¡Hola mundo! <?php $msg= "¡Hola mundo!"; ?> <html> <head> <title>Ejemplo</title> </head> <body> <h1><?phpecho$msg; ?></h1> </body> </html>
  • 8. Condiciones $numero = 2; If($numero == 2){ $numero --; }elseif($numero == 1){ $numero++; }else{ $numero = 0; }
  • 9. Concatenación $nombre = “Crysfel”; $apellido = “Villa”; echo“Me llamo ”.$nombre.” ”.$apellido;
  • 10. Ciclos for($i = 0; $i < 10 ; $i++){ echo“i = $i ”; } $j = 5; while($j < 0){ echo“j = $j”; $j--; }
  • 11. Arrays $alumnos = array(“Juan”,”Pedro”,”Karina”); echo $alumnos[1]; $alumnos[] = “Maria”; array_push($alumnos,”Carlos”); unset($alumnos[1]);
  • 12. Arrays $hash = array( array( "nombre"=>"Juan", "apellido"=>"Perez", "edad"=>28 ), array( "nombre"=>"Maria", "apellido"=>"Martinez", "edad"=>21 ) ); echo $hash[1]['nombre'];
  • 13. Recorrer un Array foreach($hash as $persona){ foreach($persona as $key=>$value){ echo“$key: $value, "; } }
  • 14. Conexión a una Base de Datos //host, user, passwd $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('no se pudo conectar: ' . mysql_error()); } echo'¡Se conectó correctamente!'; mysql_close($link);
  • 15. Seleccionar una DB $db_selected = mysql_select_db('testing', $link); if (!$db_selected) { die ('No se puede usar "testing" : '. mysql_error()); } echo'Usando "testing"';
  • 16. Leyendo información $result = mysql_query('SELECT * FROM personas'); if (!$result) {die('Invalidquery: ' . mysql_error());} $personas = array(); while($row = mysql_fetch_assoc($result)){ array_push($personas, $row); }
  • 19. CodeIgniter Es un Framework para desarrollo de aplicaciones Web open source basado en el lenguaje PHP. Fácil de implementar Buena documentación No utiliza la línea de comandos
  • 20. Instalación Descargar Descomprimir Copiar al servidor Web
  • 21. Configuranción básica application/config/config.php URL base application/config/autoload.php DataBase, Form y URL Helper, Modelos application/config/database.php Credenciales application/config/routes.php Ruta de inicio
  • 22. Controller class Post extendsController{ functionindex(){ $data['title'] = “Bienvenidos"; $data['date'] = date('d-m-Y'); $this->load->view("post/page", $data); } }
  • 23. View <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Page title</title> </head> <body> <h1><?phpecho $title; ?></h1> <p><?phpecho $date; ?></p> </body> </html>
  • 24. CRUD Create(crear) Read (leer) Update (actualizar) Delete (borrar)
  • 25. Creación de la Base de datos Miblog Post Id Titulo Fecha Contenido Autor
  • 26. Model (Leer) classPost_modelextendsModel{ functionfindAllPosts(){ $query = $this->db->get('posts'); return $query->result(); } }
  • 27. Controller (Leer) functionindex(){ //mostrar todos los posts $data['title'] = "Bienvenido"; $data['date'] = date('d-m-Y'); $posts = $this->post_model->findAllPosts(); if(!isset($posts))$posts =array(); $data['posts'] = $posts; $this->load->view("post/list",$data); } *Para usar el “post_model” se debe cargar primero
  • 28. View (Leer) <h1><?phpecho $title; ?></h1> <p><?phpecho $date; ?></p> <ul> <?phpforeach($postsas $post):?> <li><?phpecho $post->titulo; ?></li> <?phpendforeach?> </ul>
  • 29. Model (Crear) functionaddPost($post){ $this->db->insert('posts',$post); }
  • 30. Controller (Crear) functioncreate(){ $post = array( 'titulo'=>$this->input->post('titulo'), 'contenido'=>$this->input->post('contenido'), 'author'=>$this->input->post('autor'), 'fecha'=>date('Y-m-d') ); $this->post_model->addPost($post); $this->index(); }
  • 31. View (Crear) <?phpechoform_open('post/create'); ?> <p> <labelfor="titulo">Titulo:</label> <input type="text" name="titulo" id="titulo" /> </p> <p> <labelfor="autor">Autor:</label> <input type="text" name="autor" id="autor" /> </p> <p> <labelfor="contenido">Contenido:</label> <textareaname="contenido" id="contenido"></textarea> </p> <input type="submit" value="Guardar" /> <?phpechoform_close(); ?> *Para usar el “form_open” se debe cargar el “form” helper
  • 32. Model (borrar) functiondeletePost($id){ $this->db->where('id',$id); $this->db->delete('posts'); }
  • 33. Controller (Borrar) function delete(){ $this->post_model->deletePost( $this->uri->segment(3) ); $this->index(); }
  • 34. View (Borrar) <?php echoanchor("post/delete/$post->id","Borrar"); ?> *Para utilizar el ”anchor” se debe cargar el ”url” helper
  • 35. Model (Actualizar) functionfindPostById($id){ $this->db->where('id',$id); $query = $this->db->get('posts'); if($query->num_rows() > 0) return $query->row(); } functionupdatePost($post){ $this->db->where('id',$post['id']); $this->db->update('posts',$post); }
  • 36. Controller (Actualizar) functionedit(){ $data['post'] = $this->post_model->findPostById($this->uri->segment(3)); $this->load->view('post/edit',$data); }
  • 37. Controller (Actualizar) functionupdate(){ $post = array( 'id'=>$this->input->post('id'), 'titulo'=>$this->input->post('titulo'), 'contenido'=>$this->input->post('contenido'), 'author'=>$this->input->post('autor'), 'fecha'=>date('Y-m-d') ); $this->post_model->updatePost($post); $this->index(); }
  • 38. View (Actualizar) <?phpechoform_open('post/update'); ?> <input type="hidden" name="id" value="<?phpecho $post->id;?>" /> <p> <labelfor="titulo">Titulo:</label> <input type="text" name="titulo" id="titulo" value="<?phpecho $post->titulo;?>" /> </p> <p> <labelfor="autor">Autor:</label> <input type="text" name="autor" id="autor" value="<?phpecho $post->author;?>" /> </p> <p> <labelfor="contenido">Contenido:</label> <textareaname="contenido" id="contenido"><?phpecho $post->contenido;?></textarea> </p> <input type="submit" value="Guardar" /> <?phpechoform_close(); ?>
  • 39. Preguntas Crysfel Villa www.quizzpot.com training@quizzpot.com