Advertisement
Guest User

Untitled

a guest
Feb 24th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.95 KB | None | 0 0
  1. <div class="row">
  2. <div class="col-md-4">
  3. <?php
  4. //comprobacion de mensaje guardao mediante $_SESSION segundo el tipo de alert ejemplo: $_SESSION['type']; alert-seccess en sesion tipo para mostrar
  5. if (isset($_SESSION['message'])) { ?>
  6. <div class="alert alert-<?=$_SESSION['type'];?> alert-disimissible fade-show" role="alert">
  7. <?=$_SESSION['message'];?>
  8. <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  9. </div>
  10. //destruir session al cerrar el alert de no ser asi al refrescar la pagina la session se mantiene y por ende el mensaje por igual.
  11. <?php session_destroy();endif}?>
  12. <div class="card card-body">
  13. //formulario para agregar una nota el cual manda los datos mediante POST para ser verificados en el archivo save_task.php
  14. <form action="libs/save_task.php" method="POST">
  15. <div class="form-group">
  16. <input type="text" placeholder=" Write a Task" name="task" class="form-control" autofocus="">
  17. </div>
  18. <div class="form-group">
  19. <textarea name="description" rows="2" placeholder="Write an description" class="form-control"></textarea>
  20. </div>
  21. <input type="submit" value="Save" class="btn btn-success form-control">
  22. </form>
  23. </div>
  24. </div>
  25. <div class="col-md-8">
  26. <table id="tab" class="table table-bordered table-responsive-sm">
  27. <thead class="thead-dark">
  28. <tr>
  29. <th>Title</th>
  30. <th>Description</th>
  31. <th>Date-created</th>
  32. <th>Edit</th>
  33. <th>Delete</th>
  34. </tr>
  35. </thead>
  36. <tbody id="mostrar">//se carga los datos mediante JS de manera dinamica, con XMLHttpRequest();
  37. </tbody>
  38. </table>
  39. </div>
  40. </div></div> <script src="js/main.js"></script><script src="js/jquery-3.2.1.js"></script><script src="js/bootstrap.min.js"></script></body></html>
  41.  
  42. <?php session_start(); require_once 'database.php';
  43. //validacion campos enviados por $_POST no esten vacios
  44. //preparacion de la consulta
  45. try {
  46. $stmt = Database::conectar()->prepare("INSERT INTO task(title, description) VALUES(:title, :desp)");
  47. //vinculacion de parametros
  48. $stmt->bindParam(':title', $_POST['task']);
  49. $stmt->bindParam(':desp', $_POST['description']);
  50. //ejecucion de la consulta
  51. $stmt->execute();
  52. $_SESSION['type'] = 'success';
  53. $_SESSION['message'] = 'Save task';
  54. header('Location: ../');
  55. } catch (PDOException $e) {
  56. print_r('Error en: ' . $e->getMessage()); }}else{ $_SESSION['type'] = 'warning';$_SESSION['message'] ='Not empty message null';header('Location: ../');}
  57.  
  58. $_SESSION['type'] = 'success'; //guardo el tipo de color a mostrar en el alert de bootstrap en este caso se mostrara alert-success
  59. $_SESSION['message'] = 'Save task'; // y aqui el mensaje a mostrar
  60. header('Location: ../'); // redirecciona a la pagina principal y mostrara los mensajes ya sea que la consulta haya sido exitosa o que hubiese generado error.
  61.  
  62. <tbody id="mostrar">
  63. </tbody>
  64.  
  65. function mostrarTodo() {
  66. xmlhttp = new XMLHttpRequest();
  67. xmlhttp.onreadystatechange= function(){
  68. if (this.readyState === 4 && this.status===200) {
  69. document.getElementById('mostrar').innerHTML =this.responseText;
  70. }
  71. }
  72. xmlhttp.open("GET","libs/mostrarDatos.php",true );
  73. xmlhttp.send();}mostrarTodo();
  74.  
  75. <?php
  76. require_once 'database.php';//se hace un require para el archivo databa.php
  77. $sql = "SELECT * FROM task";//variable que contiene la consulta
  78. $stmt = Database::conectar()->prepare($sql);//preparacion de la consutla
  79. $stmt->execute();//ejecucion de la consulta
  80. while ($result= $stmt->fetch(PDO::FETCH_OBJ)) { ?><tr > // recorre con un while y con fetch se obtienen las filas
  81. <!-- <td><?=$result->id;?></td> -->
  82. <td><?=$result->title;?></td>
  83. <td><?=$result->description;?></td>
  84. <td><?=$result->created_at;?></td>
  85. <td class="update">
  86. <button type="button" data-toggle="modal" data-target="#editarUsuario" class="btn btn-secondary" data-id="<?=$result->id;?>">
  87. <i class="fa fa-edit"></i>
  88. </button></td>
  89. <td>
  90. <a class="btn btn-danger" href="libs/delete_task.php?id=<?=$result->id;?>">
  91. <i class="fa fa-trash"></i>
  92. </a>
  93. </td>
  94. </tr>
  95. <?php }//end while ?>
  96.  
  97. <button type="button" data-toggle="modal" data-target="#editarUsuario" class="btn btn-secondary" data-id="<?=$result->id;?>">
  98. <i class="fa fa-edit"></i>
  99. </button>
  100.  
  101. document.addEventListener("click", function(event){
  102. //validacion que busca en especifico la clase .btn btn-sencodary
  103. if (event.target.className=="btn btn-secondary"){
  104.  
  105. var id = event.target.dataset.id;
  106. // console.log(id);
  107. cargarFormulario(id , function(){
  108. document.querySelector("#ed").innerHTML = this.responseText;
  109. });
  110. } });
  111.  
  112. var id = event.target.dataset.id;
  113.  
  114. cargarFormulario(id , function(){
  115. document.querySelector("#ed").innerHTML = this.responseText;
  116. });
  117.  
  118. function cargarFormulario(id, callback){
  119. var xmlhttp = new XMLHttpRequest();
  120. xmlhttp.onreadystatechange = function(){
  121. if(this.readyState === 4 && this.status === 200) {
  122. callback.apply(xmlhttp);
  123. } //end if
  124. }
  125. xmlhttp.open("GET", "libs/edit_task.php?id=" + id , true);
  126. xmlhttp.send();
  127.  
  128. xmlhttp.onreadystatechange = function(){
  129. if(this.readyState === 4 && this.status === 200) {
  130. callback.apply(xmlhttp);
  131. } //end if
  132. }
  133.  
  134. <div class="modal fade" id="editarUsuario" tabindex="-1" role="dialog" aria-labelledby="Titulo" aria-hidden="true">
  135. <div class="modal-dialog" role="document">
  136. <div class="modal-content">
  137. <div class="modal-header">
  138. <h3 class="modal-title text-center" id="Titulo">Editar nota</h3>
  139. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  140. <span aria-hidden="true">&times;</span>
  141. </button>
  142. </div>
  143. <div id="ed" class="modal-body">
  144. </div>
  145. <div class="modal-footer">
  146. <button type="button" class="btb btn-secondary" data-dismiss="modal">
  147. Cancelar</button>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152.  
  153. var alerta =document.getElementById("alerta");document.addEventListener("click", function(e){if (e.target.id == "save_data") {var id = e.target.dataset.id;
  154. saveUpdates(id)}});function saveUpdates(id) {
  155. var ts = document.querySelector("#ts").value;
  156. var tes = document.querySelector("#tes").value;
  157.  
  158. var title = "title="+ts;
  159. var description = "&description=" + tes;
  160. xmlhttp = new XMLHttpRequest();
  161. xmlhttp.onreadystatechange = function() {
  162. if (this.readyState == 4 && this.status == 200) {
  163. mostrarTodo();
  164. alerta.innerText=this.responseText;
  165. }
  166. }
  167. xmlhttp.open("GET","libs/saved_changes.php?&"+ title + description + '&id='+id, true);
  168. xmlhttp.send();
  169.  
  170. if (this.readyState == 4 && this.status == 200) {
  171. mostrarTodo(); // al pasar la verificacion llamamos a la funcion mostrarTodo() para ver vizualmente los cambios, ya que de no ser asi el usuario no se percataria de nada.
  172. alerta.innerText=this.responseText; // de retornar variables se utuliza la referencia al div#alert
  173.  
  174. <?php
  175. require_once 'database.php';
  176. if (isset($_GET)) {
  177. try {
  178. $sql="UPDATE task SET title = :title , description = :descri
  179. WHERE id =:id";
  180.  
  181. $consulta = Database::conectar()->prepare($sql);
  182. $consulta->bindParam(":title", $_GET['title']);
  183. $consulta->bindParam(":descri", $_GET['description']);
  184. $consulta->bindParam(":id", $_GET['id']);
  185. $consulta->execute();
  186. $tipo = $_SESSION['type'] = 'success';
  187. $mensaje = $_SESSION['message'] = 'Changes successfully';
  188. } catch (PDOException $e) {
  189. $tipo = $_SESSION['type'] = 'danger';
  190. $mensaje = $_SESSION['message'] = 'No se guardaron los cambios';
  191. }
  192. echo $tipo;
  193. echo $mensaje;}
  194.  
  195. <?php
  196. class Database { //reemplazar
  197. private static $host = 'localhost';
  198. private static $user = ''; // usario
  199. private static $password = ''; //password
  200. private static $dbname = 'php2019';
  201. private static $charset = 'utf8mb4';
  202.  
  203. public function __construct()
  204. {
  205. self::$host;
  206. self::$user;
  207. self::$password;
  208. self::$dbname;
  209. self::$charset;
  210. }
  211.  
  212. public static function conectar()
  213. {
  214. try {
  215. $dns = 'mysql:host=' . self::$host . ';dbname=' . self::$dbname . ';charset='.self::$charset;
  216. $options = [
  217. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  218. PDO::ATTR_EMULATE_PREPARES => false,
  219. ];
  220. $pdo = new PDO($dns, self::$user, self::$password, $options);
  221. return $pdo;
  222. } catch (PDOException $e) {
  223. print_r('Error al establecer conexion con el provedor de bases de datos' . $e->getMessage());
  224. }
  225. }
  226.  
  227. $var tipo = array(
  228. '0' => 'success',
  229. '1' => 'warning',
  230. '2' => 'danger',
  231. ); ///etc....
  232. $var mensaje = array(
  233. '0' => 'Mensaje exito',
  234. '1' => 'mensaje en caso de advertencia',
  235. '2' => 'mensaje en caso de error'
  236. );
  237.  
  238. <div class="alert-<?=$tipo[0];?>" > //mostraria aler-success qu es el color del alert mensaje exitoso</div>"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement