Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou fazendo um sistema onde eu listo todos usuarios de uma database, e com um input select faço alterações no campo status de cada usuario.
o problema, é que uma condição criada não funciona já tentei fazer de tudo e nada! :S
<?php
$size = count($_POST['status']);
$i = 0;
while ($i < $size) {
$statusinfo= $_POST['status'][$i];
$id = $_POST['id'][$i];
$query = mysql_query("SELECT * FROM usuarios WHERE `id`='$id' ORDER BY nome");
$fim = mysql_fetch_array($query);
//Variaveis usadas nas querys
$statusold = $fim['status'];
$pagamentold = $fim['pagamento'];
$moedas = $fim['moedas'];
$pontos = $fim['pontos'];
$valor = $fim['valor'];
//Calculos para o sistema de pontos
$calc = $pontos - $valor;
$calc2 = $moedas + $valor;
$calc3 = floor($valor / 2);
if ($statusinfo == 'Aguardando' ) {
$query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento` = '$pagamentold' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
} else if ($statusinfo == 'Aberto' ) {
$query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento` = '$pagamentold' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
} else if ($statusinfo == 'Vazio') {
$query = "UPDATE usuarios SET `status` = '$statusold',`pagamento` = '$pagamentold' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
} else if ($statusinfo == 'Finalizado') {
$query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento`= 'Concluido' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
} else if (($statusinfo == 'Finalizado') AND ($pagamentold === 'Pontos')) {
$query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento` = 'Concluido',`moedas` = '$calc2', `pontos`= '$calc' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
}
echo '<script language="javascript" type="text/javascript">';
echo 'window.alert("Alterações salvas com sucesso!");';
echo 'window.location.href="?pagina=compras";';
echo '</script>';
}
mysql_close();
?>
a condição que não funciona é:
} else if (($statusinfo == 'Finalizado') AND ($pagamentold === 'Pontos')) {
$query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento` = 'Concluido',`moedas` = '$calc2', `pontos`= '$calc' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
}Obrigado desde já! ,Mulambo
Olá, obrigado por responder. :D
TEstei as variaveis, estão todas ok!
Deu um erro aqui, "syntax error, unexpected T_CONSTANT_ENCAPSED_STRING"
o erro é na linha 45,que corresponde a query:
$query .= ($pagamentold == 'Pontos') ? ',moedas= \''.$calc2.'\',pontos= \''.$calc'\'' : null;
Outra coisa, esse código que você me passou tá incluindo o caso de ser 'Finalizado' e 'Pontos'?
Obrigado!
Realmente, faltou um ponto ali.
Tenta agora:
<?php
$query = 'UPDATE `usuarios` SET `status`=';
switch ($statusinfo){
case 'Aguardando':
case 'Aberto':
$query .= '\''.$statusinfo.'\', `pagamento`=\''.$pagamentold.'\' WHERE `id` = '.$id.' LIMIT 1';
break;
case 'Vazio':
$query .= '\''.$statusold.'\', `pagamento`=\''.$pagamentold.'\' WHERE `id` = '.$id.' LIMIT 1';
break;
case 'Finalizado':
$query .= '\''.$statusinfo.'\', `pagamento`=\'Concluido\'';
$query .= ($pagamentold == 'Pontos') ? ',`moedas` = \''.$calc2.'\', `pontos`= \''.$calc.'\'' : null;
$query .= ' WHERE `id` = '.$id.' LIMIT 1';
break;
}
mysql_query($query) or die ("Error in query: $query");
++$i;
?>
Tem sim a verificação de Finalizado e Pontos. O último case do switch verifica se é Finalizado, e se for, naquela linha que estava com problema, ele verifica se o $pagamentoId é Pontos.. Dá uma olhada com atenção nessa linha q você vai entender.
[]`s
Nossa,Obrigado cara!! Deu certo! problema resolvido! :D
Caso sirva pra alguem, tá ai o resultado final:
<?php
$size = count($_POST['status']);
$i = 0;
while ($i < $size) {
$statusinfo= $_POST['status'][$i];
$id = $_POST['id'][$i];
$select = mysql_query("SELECT * FROM usuarios WHERE `id`='$id' ORDER BY nome");
$fim = mysql_fetch_array($select);
//Variaveis usadas nas querys
$statusold = $fim['status'];
$pagamentold = $fim['pagamento'];
$moedas = $fim['moedas'];
$pontos = $fim['pontos'];
$valor = $fim['valor'];
//Calculos para o sistema de pontos
$calc = $pontos - $valor;
$calc2 = $moedas + $valor;
$calc3 = floor($valor / 2);
$query = 'UPDATE `usuarios` SET `status`=';
switch ($statusinfo){
case 'Aguardando':
case 'Aberto':
$query .= '\''.$statusinfo.'\', `pagamento`=\''.$pagamentold.'\' WHERE `id` = '.$id.' LIMIT 1';
break;
case 'Vazio':
$query .= '\''.$statusold.'\', `pagamento`=\''.$pagamentold.'\' WHERE `id` = '.$id.' LIMIT 1';
break;
case 'Finalizado':
$query .= '\''.$statusinfo.'\', `pagamento`=\'Concluido\'';
$query .= ($pagamentold == 'Pontos') ? ',`moedas` = \''.$calc2.'\', `pontos`= \''.$calc.'\'' : null;
$query .= ' WHERE `id` = '.$id.' LIMIT 1';
break;
}
mysql_query($query) or die ("Error in query: $query");
++$i;
echo '<script language="javascript" type="text/javascript">';
echo 'window.alert("Alterações salvas com sucesso!");';
echo 'window.location.href="?pagina=compras";';
echo '</script>';
}
mysql_close();
?>
Att,MulamboTranquilo.
Cara, notei que seu site está hospedado na KH. Tenho revenda lá, se tiver interesse. Posso fazer por um preço melhor, e a qualidade é a mesma. Se quiser manda MP.
Até mais.
Poxa, obrigado pelo convite, mas essa semana eu cancelei minha hospedagem lá!
Obrigado por tudo! :D
Que tal tentar isso? Não testei.
$query = 'UPDATE
usuariosSETstatus=';switch ($statusinfo){
case 'Aguardando':
case 'Aberto':
(Aconselho a dar echo nas variaveis q você está tratando para ver se estão corretas... as vezes o código está certo, mas as variáveis estão incorretas)
Aconselho também a tratar os dados de inputs como numeros inteiros (int) ao invés de strings. Por exemplo: 1 pode ser Aguardando, 2 pode ser Aberto, 3 pode ser Vazio.. e por aí vai.
Espero ter resolvido.. fiz rapidinho sem testar.. qlqr coisa dá um toque.