Dúvida muito rápida acerca do POST e do GET

hardmotion

Power Member
PHP:
If (isset ($_POST['barra']) and is_null ($_GET['tipo']))
{ 
$values = $_POST['barra'];
foreach ($values as $a){
$result=mysql_query("DELETE FROM sessao_data_espectaculo WHERE id_data= '".$a."' AND id_espectaculo=1");
}
}

If (isset ($_POST['barra']) and isset ($_GET['tipo']))
{
echo "echo";
}

Porque é que nunca consigo entrar no segundo IF?
 
Não é disso...tanto nao é que no primeiro IF entra sem problema.

E no url tenho: espec_sessoes.php?tipo=sessao por isso o GET está definido...sinceramente nao sei do que poderá ser...mas obrigado pela resposta!
 
pelo que testei agora, quando uma variavel tem o valor null, a função isset retorna falso.
ou seja, nesse código, se entrar no primeiro if não entra no segundo, e vice-versa

EDIT: vi agora o teu post. se tens a certeza que a variavel do GET está definida, então verifica a do POST, podes ter o nome mal escrito em alguma parte ou assim
 
Última edição:
Põe && no primeiro também. Se tens ?tipo=sessao, então is_null($_GET['tipo']) não pode ser true ("sessao" != null).
Se entra no primeiro if (onde 'tipo' é null), não pode entrar no segundo if (onde 'tipo' não pode ser null).
Edit - como o MPalhas disse :P
 
Mais uma vez obrigado pela ajuda. Eu sei que nao pode entrar nos dois IF's lol é logico...e ele entra no 1º se o GET for nulo, por isso o POST está bem escrito. No entanto se o GET for nao nulo, ou seja, se usar o url espec_sessoes.php?tipo=sessao ele nao entra no 1º nem no 2º! E claro que devia entrar no segundo...

Isso é que nao entendo! O problema so pode ser daqui: If (isset ($_POST['barra']) and isset ($_GET['tipo'])).....
 
PHP:
if(isset($_POST['barra']) {
    if(is_null($_GET['tipo'])) {
        $values = $_POST['barra'];
        foreach ($values as $a) {
            $result=mysql_query("DELETE FROM sessao_data_espectaculo WHERE id_data= '".$a."' AND id_espectaculo=1");
        }
    } else {
        echo "echo";
    }

}

Se fizeres assim, não vai dar ao mesmo?
 
Acabei de experimentar da maneira que disseste e.....nao da!! Como é possivel?? Ele continua a nao fazer echo.......Vou postar aqui o codigo todo.
 
PHP:
<?php
require_once('../Connections/config.php'); 
require_once('../Connections/ligabd.php'); 
require_once ('../classes/espectaculo.php');
if(isset($_POST['barra'])) {
    if(is_null($_GET['tipo'])) {
        $values = $_POST['barra'];
        foreach ($values as $a) {
            $result=mysql_query("DELETE FROM sessao_data_espectaculo WHERE id_data= '".$a."' AND id_espectaculo=1");
        }
    } else {
        echo "echo";
    }

}  
//If (isset ($_POST['barra']) and is_null ($_GET['tipo']))

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="espec_sessoes.php">
  <label>
  <select name="barra[]" multiple="multiple" id="select" size="5">
      <?php 
$result=mysql_query("SELECT data.id_data,data.dia_mes_ano FROM data, sessao_data_espectaculo WHERE sessao_data_espectaculo.id_data = data.id_data AND id_espectaculo=1") ;

while ($ROW2=mysql_fetch_array($result)){
echo "<option value=";
echo $ROW2['id_data'];
echo ">";
echo $ROW2['dia_mes_ano'];
echo "</option>";
}
?>
  </select>
  </label>
  <p>
    <label>
//ao carregar aqui funciona bem
    <input  type="submit"  name="Submit" id="button" value="Eliminar" />
    </label>
  </p>
  <p><a href="espec_data.php">adicionar</a> </p>
  <p>
    <label>
//ao clicar aqui devia aparecer o "echo"
    <input name="button2" type="submit" id="button2" onclick="MM_goToURL('parent','espec_sessoes.php?tipo=sessao');return document.MM_returnValue" value="ver sessoes" />
    </label>
  </p>
</form>

</body>
</html>
 
Tens a certeza em como está a ser enviado um POST?
Escreve antes do segundo if
PHP:
echo "<pre>";
print_r($_GET);
echo "<hr>";
print_r($_POST);
echo "</pre>";
e mostra o resultado.
 
Array
(
[tipo] => sessao
)
--------------------------------------------------------------------------------Array
(
)

Realmente o post nao está a ser feito...Mas porque? O botao devia fazer submit na mesma. Será por eu lhe ter posto um onclick?
 
Acho que sim.
Não me lembro bem como é isto no JavaScript, mas muda o onclick para
onclick="document.form1.action='espec_sessoes.php?tipo=sessao'"
Se por acaso isto resultar, também não sei até que ponto é cross-browser.

Acho que o que se passa é que ao clicar nesse botão, ele navega para outra página, em vez de fazer submit do formulário.
 
angelofwisdom és um génio pah! :D resultou finalmente!!

Eu usei o onlick do dreamweaver! ele fez automaticamente....e era isso que tava a inibir o POST...muito obrigado mesmo!
 
Back
Topo