Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ayuda modificar datos sql con select
#1
Tengo esta tabla:
[Imagen: gI0X3fE.png]
El valor de asistencia por defecto es 0, si el valor es 1 quiere decir que el usuario asistira, si el valor es 0 el usuario no asistira.
Lo que quiero es añadir un boton Flip switch (de jquery mobile) cuyo codigo es:
Código PHP:
<fieldset class="ui-grid-a">
    <div class="ui-block-a"><input type="radio" id="toggle-on" name="toggle" checked><label class="btn" for="toggle-on">Si</label></div>
    <div class="ui-block-b"><input type="radio" id="toggle-off" name="toggle"><label class="btn" for="toggle-off">No</label></div>
</
fieldset
Lo que necesito es que coja el valor de la tabla Asistencia (que por defecto es 0), cuando se alterne la opcion (seleccionar si), se cambien los valores de la columna asistencia a 1 y una columna nueva llamada Saldo se le reste 1.20.
Si despues de haber pulsado el boton se vuelve a pulsar(seleccionar no), cambiar el valor de asistencia a 0 y volver a sumar 1.20 a la columna Saldo.
#2
Puedes sumar con SELECT pero obviamente estos cambios no se verían reflejados en la base de datos, primero necesitarías actualizar los datos con UPDATE.

De cualquier forma, para sumar con SELECT:

Código:
SELECT
    (Saldo - 1.20) AS Saldo_Total
FROM <NOMBRE DE TU TABLA>
WHERE Id = <ID>;

Para hacer lo que quieres, yo lo haría con dos peticiones con AJAX con simples UPDATE, aquí en SQL (creo es lo único que quieres).

Código:
-- #toggle-on
UPDATE <NOMBRE DE TU TABLA>
SET
    Asistencia = 0,
    Saldo = 0
WHERE Id = <ID>;

-- #toggle-off
UPDATE <NOMBRE DE TU TABLA>
SET
    Asistencia = 1,
    Saldo = 1.20
WHERE Id = <ID>;

Luego con AJAX puedes actualizar los valores (Si/No) con lo que obtengas de un SELECT.

Código:
SELECT
    Id,
    Asistencia,
    Saldo
FROM <NOMBRE DE TU TABLA>;

Esto si es que entendí bien.

Si lo que buscas es una sola sentencia que solucione que lo solucione seguramente la encontrarás, pero toma en cuenta que debes dividir el problema en subproblemas, e ir solucionando estos últimos por separado, aunque con SQL también es recomendable hacer el menor número de peticiones que sea posible.
WWW
#3
Al final lo hice de esta manera:
Código PHP:
<?PHP if(isset($_POST['updatesi'])){
 
  $query "UPDATE Usuarios SET Asistencia = 1 WHERE Usuario = '$usuario'"
 
  $result mysql_query($query);
 
  header("Location: ../allow/");
}
?>
<?PHP 
if(isset($_POST['updateno'])){
 
  $query "UPDATE Usuarios SET Asistencia = 0 WHERE Usuario = '$usuario'"
 
  $result mysql_query($query);
 
  header("Location: ../allow/");
}
?>
<?php
if ($Avisoasistencia2 == 0){
    echo 
"Actualmente No estas en la lista de asistentes.<br/><form data-ajax='false' id='updatesi' method='post' action=''>
    <input type='submit' name='updatesi' value='¡Me apunto!'/>  </form>"
;
    }
    else{
        echo 
"Actualmente Si estas en la lista de asistentes.<br/><form data-ajax='false' id='updateno' method='post' action=''>
    <input type='submit' name='updateno' value='No puedo ir'/>  </form>"
;};    ?>
Ahora tengo un problema, añadí una redireccion al pulsar cada botón (a la misma pagina, para refrescar y mostrar nuevos datos), pero me sale un error:
Warning: Cannot modify header information - headers already sent by (output started at /home/noxtail/public_html/baloncestoenbaeza.ml/allow/index.php:27) in/home/noxtail/public_html/baloncestoenbaeza.ml/allow/index.php on line 101


Al utilizar jquery mobile, pense que era por el ajax por lo que no se actualizaba la pagina, y añadi al formulario "<form data-ajax='false'..." viendo que no funcionaba le añadi a cada imput "onclick='location.reload(true)'" y tampoco funciona, como puedo hacer que recargue la pagina cuando se envien los datos?
#4
Ajax = no recargar pagina solo enviar datos y actualizar un campo que diga datos enviados o algo asi.

La verdad es que esto es algo muy facil fe hacer y deberas hacer un real_escape_string a tu variable username evitando asi inyeccion de codigo. Coloca igualmente htmlspecialchars_uni y con eso y un int al valor yes o no del formulario siendo 0 o 1 el resultado al hacer el update a la tabla.

No debes usar select ya que esto hace como su nombre lo dice una seleccion de los datos de una tabla mientras que update actualiza el valor del campo.

Con un update unicamente basta y eliges el valor de $_POST en entero de tu campo si o no y listo agregando o restando el valor deseado igualmente.

Si tienes skype agregame y lo hacemos en live para ver que datos son mejores para tomar de tu base de datos y hacer el envio de los mismos normal y luego agregandole ajax para hacer algo bien y sin consumo excesivo.

Es algo sumamente facil en verdad.
No hay nada mas infinito que el unverso y la estupidez humana, aunque del universo no estoy tan seguro...
WWW


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Las bases de datos más grandes del mundo Smithcanal 3 478 06-06-2017, 04:16 PM
Último mensaje: easy english
  [Tutorial] Pasar base de datos MySQL por SSH Jvh_22 1 491 11-10-2016, 04:12 PM
Último mensaje: efbsfcd
  GOOGLE CHARTS: INTRODUCCION A LA VISUALIZACION DE DATOS, GRAFICAS, MAPAS Y MAS khristia 2 535 16-08-2016, 08:27 PM
Último mensaje: efbsfcd
  [Duda] Cómo puedo usar python para calcular datos y mostrarlos vía php piero.cpvd 3 1,056 05-12-2015, 12:12 PM
Último mensaje: midd_98
  Enviar datos vía post y get usando cURL y PHP torgar22 5 3,697 30-11-2015, 06:36 AM
Último mensaje: habacuc78
  Solucionado: Problema al conectar con base de datos remota mysql efbsfcd 10 1,139 21-07-2015, 02:23 PM
Último mensaje: Kevin9908
  Proteger pagina con login sin Base de datos zodiaco 12 2,570 04-07-2015, 11:38 AM
Último mensaje: davilro
  [PHP+PDO+MYSQL] Conectandose a una base de datos (BD) Kevin9908 0 597 03-07-2015, 03:03 PM
Último mensaje: Kevin9908
  [PHP+MYSQLi] Conectandose a una base de datos (BD) Kevin9908 1 1,798 01-07-2015, 08:01 PM
Último mensaje: AbaddonOrmuz
  [PHP+MYSQL] Conectandose a una base de datos (BD) aperpen 6 954 01-07-2015, 03:11 PM
Último mensaje: d0rag0n



Usuarios navegando en este tema: 1 invitado(s)