PHP - Problemas PHP con AJAX

   
Vista:

Problemas PHP con AJAX

Publicado por Edwin (3 intervenciones) el 25/05/2017 00:20:20
Hola, tengo un problema en un proyecto que realizo; soy muy nuevo utilizando AJAX así que no se como solucionarlo he investigado por todos lados pero aun no he podido, el problema es que al momento de crear una "Bibliografía" para esto le doy clic a un botón "Nuevo" el cual me llama un modal y desde aquí voy creando mis bibliografías, pero cada que le doy crear mis funcionalidades se pierden, la estructura de la tabla también así que no se como hacer para que no pase eso... Anexo las imágenes y código de dichas funcionalidades, Gracias!!!
--Interfaz crear bibliografía

B4t7a

--Dato ya creado

q9BkC

Como se dan cuenta tengo una funcionalidad de buscar pero al momento de crear o eliminar una bibliografía, se me pierde toda mi estructura de y lo gráfico se echa a perder.

Disculpas por tan extensa pregunta pero pienso que si especifico bien sera mas fácil y me entiendan. A continuación mostrare el código de la funcionalidad.

--Código para crear una bibliografía
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
   session_start();
   include('scripts/config.php');
 
   $con = mysql_connect($server,$user,$password);
   mysql_select_db($database, $con);
   mysql_query("SET NAMES 'utf8'");
 
   //Variables POST
   $urlb = $_POST['urlb'];
   $idcurso = $_POST['idcurso'];
 
   $sql = "INSERT INTO bibliografias(bli_url, bli_idcurso) VALUES ('$urlb',
   '$idcurso')";
   mysql_query($sql,$con) or die('Error. '.mysql_error());
 
   include('consultaBli.php');
?>

--Código para listar la bibliografía
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
<?php
   include('scripts/config.php');
 
   $con = mysql_connect($server,$user,$password);
   mysql_select_db($database, $con);
 
   if (trim($idcurso) == '')
       $idcurso = $_GET['id'];
 
   //Consulta todos las bibliografías
   $sql = mysql_query("SELECT * FROM bibliografias WHERE bli_idcurso =
   ".$idcurso,$con);
?>
 
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped
table-bordered datatables" id="example">
<thead>
    <tr>
        <th>Referencia</th>
        <?php if (($_SESSION['tipo'] == 3) || ($_SESSION['tipo'] == 4)) { ?>
            <th>Acciones</th>
        <?php } ?>
    </tr>
</thead>
<tbody>
    <?php
        while ($row = mysql_fetch_array($sql)){
            echo "<tr>";
            echo "<td>".$row['bli_url']."</td>";
            if (($_SESSION['tipo'] == 3) || ($_SESSION['tipo'] == 4)) {
                echo "<td><a class='btn btn-danger'
  href=\"javascript:eliminarBibliografia(".$row['bli_id'].",".$idcurso.");\"
  onclick=\"return confirm('Deseas realmente eliminar?')\">Eliminar</a>
  </td>";
            }
            echo "</tr>";
        }
    ?>
 </tbody>

--Código para eliminar bibliografía
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
   session_start();
   include('scripts/config.php');
 
   $con = mysql_connect($server,$user,$password);
   mysql_select_db($database, $con);
 
   //Variables POST
   $id = $_POST['id'];
   $idcurso = $_POST['idcurso'];
 
   $sql = "DELETE FROM bibliografias WHERE bli_id = '$id'";
   mysql_query($sql,$con) or die('Error. '.mysql_error());
 
   include('consultaBli.php');
?

--Código donde llamo el listar bibliografías
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
<div class="tab-pane" id="tab6">
   <?php if ($_SESSION['tipo'] == 4) { ?>
      <div class="btn-group">
         <button type="button" class="btn btn-primary popovers"
         id="btnbibliografia" data-toggle="modal"
         onclick="window.open('http://unividafup.edu.co/tools/referencias/' , 
         'PageBibliografías' , '')" href="#bibliografia" data-content="Nueva 
         biblografía">Nuevo</button>
      </div>
   <?php } ?>
   <?php if ($_SESSION['tipo'] == 3) { ?>
      <label class="checkbox-inline">
         <input type="checkbox" id="chkbibliografia" name="chkbibliografia"
         onchange="javascript:showContent(this,'bibliografia')" class="form-
         control popovers" data-content="Selecciona para aprobar."
         style="width:15px; height:15px;" onclick="return confirm('Desea
         realizar esta acción?')" <?php if ($observacion[21][3] == 'T') { ?>
         checked="true" <?php } ?>> Aprobado
      </label>
      <div class="btn-group">
         <button type="button" class="btn btn-danger popovers"
         id="btnbibliografia" data-toggle="modal" data-content="Agregar una
         observación." href="#obsbibliografia"<?php if ($observacion[21][3] 
         == 'T') { ?> style="display: none;" <?php } ?>>Observación</button>
      </div>
   <?php } ?>
   <p>
      <div id="listadoBli"><?php $idcurso = $_GET['id'];
         include('consultaBli.php'); ?>
      </div>
    </p>
 </div>

Muchas gracias, disculpas la pregunta tan extensa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Problemas PHP con AJAX

Publicado por kip (828 intervenciones) el 25/05/2017 05:50:27
Hola, para la paginacion y la busqueda en la tabla usas algun plugin javascript ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas PHP con AJAX

Publicado por Tato (3 intervenciones) el 25/05/2017 07:34:45
Hola tengo este archivo al cual le paso el listadoBli
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
//Función para recoger los datos del formulario y enviarlos por post  
function enviarDatosBibliografia(){
    //div donde se mostrará lo resultados
    divResultado = document.getElementById('listadoBli');
 
    //Recogemos los valores de los inputs
    urlb = document.nueva_bibliografia.bliurl.value;
    cur = document.nueva_bibliografia.idcurso.value;
 
    //Instanciamos el objetoAjax
    ajax = objetoAjax();
 
    //Uso del medotod POST, registroBli.php es el archivo que realizará la operacion
    ajax.open("POST", "registroBli.php",true);
    //Cuando el objeto XMLHttpRequest cambia de estado, la función se inicia
    ajax.onreadystatechange = function() {
        //La función responseText tiene todos los datos pedidos al servidor
        if (ajax.readyState == 4) {
  		    //Mostrar resultados en esta capa
            divResultado.innerHTML = ajax.responseText
  		    //Llamar La funcion para limpiar los inputs
            LimpiarCamposBli();
        }
    }
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//Enviando los valores a registroBli.php para que inserte los datos
	ajax.send("urlb="+urlb+"&idcurso="+cur)
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Problemas PHP con AJAX

Publicado por kip (828 intervenciones) el 25/05/2017 19:29:15
Te pregunto porque veo que en la tabla tienes una clase datatables, supongo que usas el plugin DataTables, entonces si siempre vas a actualizar la estructura HTML de tu tabla debes hallar la forma de que DataTables tome de nuevo esta y le aplique las caracteristicas que tenia antes como el paginado, busqueda... etc

No se que version de DataTables usas pero lo que podrias hacer es reaplicar a la tabla el metodo .dataTable() que supongo es el que usas al inicio asi:

1
$('.datatables').dataTable();

Es decir por ejemplo el el codigo que colocaste antes:

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
//Función para recoger los datos del formulario y enviarlos por post  
function enviarDatosBibliografia(){
    //div donde se mostrará lo resultados
    divResultado = document.getElementById('listadoBli');
 
    //Recogemos los valores de los inputs
    urlb = document.nueva_bibliografia.bliurl.value;
    cur = document.nueva_bibliografia.idcurso.value;
 
    //Instanciamos el objetoAjax
    ajax = objetoAjax();
 
    //Uso del medotod POST, registroBli.php es el archivo que realizará la operacion
    ajax.open("POST", "registroBli.php",true);
    //Cuando el objeto XMLHttpRequest cambia de estado, la función se inicia
    ajax.onreadystatechange = function() {
        //La función responseText tiene todos los datos pedidos al servidor
        if (ajax.readyState == 4) {
  		    //Mostrar resultados en esta capa
            divResultado.innerHTML = ajax.responseText
            $('.datatables').dataTable();
  		    //Llamar La funcion para limpiar los inputs
            LimpiarCamposBli();
        }
    }
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//Enviando los valores a registroBli.php para que inserte los datos
	ajax.send("urlb="+urlb+"&idcurso="+cur)
}

Intenta probando el metodo mas simple y cuentanos si funciona, aunque te recomiendo usar el metodo .draw() quizas junto con rows.add() o el metodo ajax.reload() (este parece que puede ser el mas conveniente en tu caso) todos estos son funciones/metodos que te da DataaTables para tener un control sobre la tabla, pero puedes usar el simple si te sientes muy confundido con estos ultimos.

Links que quizas te ayuden:
https://datatables.net/reference/api/ajax.reload()
https://datatables.net/reference/api/draw()
https://datatables.net/reference/api/rows.add()

Prueba y nos avisas como te fue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas PHP con AJAX

Publicado por Tato (3 intervenciones) el 25/05/2017 22:22:36
La verdad las funciones que mencionas las implemente pero la verdad no las entendí muy bien, el código para recoger los datos de php y luego esa funciona es la que instancio en un objeto en el código anterior:
1
2
//Instanciamos el objetoAjax
    ajax = objetoAjax();
La funciones es
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Función para recoger los datos de PHP según el navegador, se usa siempre.
function objetoAjax(){
    var xmlhttp = false;
	try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
 
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

No entiendo esta linea
1
$('.datatables').dataTable();


Igual estoy mirando y viendo si logro solucionarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar