Ver Mensaje Individual
  #14 (permalink)  
Antiguo 15/12/2016, 03:15
spark21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: radio buttom php sql update.

Cita:
Iniciado por rbczgz Ver Mensaje
Hola spark21,

Como te decía, si te fijas en la función return_do, tiene un header("Location:..."), por lo tanto, esta función solo puede ser llamada antes de presentar nada por pantalla, ya que los encabezados solo se pueden enviar una vez, revisa

Espero que te sirva para encontrar la solución final... ahora mismo no se me ocurre nada más...
Creo que sí es llamada al comienzo del archivo (no repetí el comienzo del mismo en otras respuestas pero está en mi primer post), llama a
Código:
require_once("session_start.php");
que contiene
Código:
require_once("functions.php");
:
session_start.php
Código PHP:
// Version information
define("TITLE""PREM");
define("SUBTITLE""Podium race E manager");
define("VERSION""1.1.0");
define("PAGE_DEFAULT""main");
define("PAGE_ERROR""error");
// Comment these if you do not need them:
define("USE_MYSQL"1);
define("USE_LOGIN"1);
#define("USER_MUST_LOGIN", 1);
// Include classes
if(defined("USE_LOGIN")) {
    require_once(
"classes/mysql_login.php");
}
// Start session
session_name("PREM");
session_cache_limiter("private, must-revalidate");
session_start();
// Include main configuration and functions
if(!is_file("config.php")) {
    die(
"PREM is not configured. Please create a config.php or copy config.php.dist to config.php for the default options\n");
}
require_once(
"config.php");
require_once(
"functions.php");
if(
defined("USE_LOGIN")) {
    
// Logged in?
    
if(isset($_SESSION['login']) && $_SESSION['login']->is_loggedin()) {
        
$login $_SESSION['login'];
        
$permissions $login->get_data("permissions");
        
$userid $login->get_data("id");
        
$username $login->username();
    }
}
?> 

P.D: Vaya, acabo de conseguir un avance, en lugar de indicar
Código:
<form action="blocks.php" method="post">
he indicado
Código:
<form action=".?page=blocks" method="post">
Aunque ahora tengo el siguiente error:
Warning: Cannot modify header information - headers already sent by (output started at /htdocs/prem/nav.php:38) in /htdocs/prem/functions.php on line 59

en la línea 59 aparece: header("Location: $dest$msg");
functions.php
Código PHP:
/**
 * return_do function redirects the browser to another page.
 * An added message is optional
 *
 * @param string $dest Page to redirect to
 * @param string $msg Message to be shown in page
 */
function return_do($dest$msg "") {
    if(!empty(
$msg))
        
$msg "&msg=" urlencode($msg);

    
header("Location: $dest$msg");
    exit();

He desactivado el bloque con el botón "No", pero el botton "Yes" no vuelve a cambiar el valor a 1, pudiera ser por el error...

Pongo aquí el código completo blocks.php:

Código PHP:
<? if(!defined("CONFIG")) exit();
if(!isset(
$login)) { show_error("You do not have administrator rights\n"); return; }
require_once(
"session_start.php");
?>

<!--Next events block-->
<?

    mysqlconnect
();

    if (isset(
$_POST['active_next'])) {
    
$query_next "UPDATE blocks SET active='$active_next' WHERE content_file='next_events'";
    
$result_next mysql_query($query_next);
    if (!
$result_nexterror("MySQL Error: ".mysql_error()."\n");

    
return_do(".?page=blocks""activated succesfully modified\n$msg");
}else{ 
?>


        <h1>Next events</h1>
        <form action=".?page=blocks" method="post"> 
        Activate:
      <input type="radio" name="active_next" <?php if (isset($active_next) && $active_next=="1") echo "checked";?> value="1">Yes
      <input type="radio" name="active_next" <?php if (isset($active_next) && $active_next=="0") echo "checked";?> value="0">No
       &nbsp;
       </b> </b> <input type="submit" name="submit" value="Set">
      <br><br> 
    </form>
<? ?>



<!--Last race block-->
<h1>Last race</h1>
<form action="blocks.php" method="post"> 
  Activate:
  <input type="radio" name="active_last" value="1">Yes
  <input type="radio" name="active_last" value="0">No
  &nbsp;</b> </b> <input type="submit" name="submit" value="Set">
  <br><br>
</form>

<!--standings block-->
<h1>Standings block</h1>
<form action="blocks.php" method="post"> 
  Activate:
  <input type="radio" name="active_standings" value="1">Yes
  <input type="radio" name="active_standings" value="0">No
  &nbsp;</b> </b> <input type="submit" name="submit" value="Set">
  <br><br>
  
</form>

<?
    $sql_sp_list 
"SELECT sp.*, s.name FROM standing_pages sp JOIN season s ON (sp.season = s.id) ORDER BY sp.page ASC";
    
$result_sp_list mysql_query($sql_sp_list);
    if(!
$result_sp_list) {
        
show_error("MySQL error: " mysql_error());
        return;
    }
    
?>

<br />
<br />
<a href=".?page=standings_add">Add Standing page</a>
<?
    
if(mysql_num_rows($result_sp_list) == 0) {
        
show_msg("No standings pages found\n");
        return;
    }
?>
    <div class="w3-container">
<table class="w3-table-all">
    <tr class="w3-dark-grey">
        <td>&nbsp;</td>
        <td>Page</td>
        <td>Season</td>
    </tr>

<?

    
while($item mysql_fetch_array($result_sp_list)) {
?>

    <tr class="w3-hover-green">
        <td>
            <a href=".?page=standings_chg&amp;id=<?=$item['id']?>"><img src="images/edit16.png" alt="chg"></a>
            <a href=".?page=standings_rem&amp;id=<?=$item['id']?>"><img src="images/delete16.png" alt="rem"></a>
        </td>
        <td><?=$item['page']?></td>
        <td><?=$item['name']?></td>
    </tr>
    <?
    
}
    
mysql_free_result($result_sp_list)
    
?>
</table>
El error lo he solucionado sustituyendo
Código PHP:
return_do(".?page=blocks""activated succesfully modified\n$msg"); 
por
Código PHP:
return_do
Pero tanto el botón No como el botón Yes, desactivan el bloque, ponen valor 0 en la columna active de la base de datos, tabla blocks.
Yo diría que $active_next está vacío siempre, por tanto registra un 0 cuando hace UPDATE blocks SET active='$active_next'.
No está cogiendo el valor del radiobutton, sospecho que porque se ejecuta antes el UPDATE que el radiobutton. Ya que si pongo al principio $active_next = 1 mete un 1 en la base de datos, pero al radiobutton no le hace ni caso.

Última edición por spark21; 15/12/2016 a las 06:48