Update PDO alterando somente um ID

08/12/2016

0

Boa tarde Galera!

Estou com um problema de realizar um UPDATE, esta alterando todas as linhas do banco.
Estou criando um formulário com agendamento de rota de motorista, mais do lado ter uma opção de (CONCLUÍDO) OU (CANCELADO).

1º Aqui e o Formulário chamado agendamentos_rotas.php ( Esta ok)


<form id="agendamentos_listas_rotas" action="agendamentos_add_banco_rotas.php" method="post" >

<table width="100%" border="1" cellspacing="3">

<tr id="linha_1"> <!--agendamentos_listas_rotas.css id=01 -->
<td>Nome</td>
<td>Localidade</td>
<td>Data</td>
<td>Período</td>
<td>Urgência</td>
<td>Status</td>
<td>Ferramentas</td>
</tr>


<tr id="enserir_dados"> <!--agendamentos_listas_rotas.css id=02 -->

<td> <input name="nome" type="text" placeholder="Digite Seu Nome" required> </td>
<td> <input name="localidade" type="text" placeholder="Digite o Local" required> </td>
<td> <input name="data" type="text" placeholder="Digite a Data" maxlength="10" size="10" onKeyPress="return formMascara(event,this,'##/##/####');"> </td>

<td > <!--agendamentos_listas_rotas.css id=03 -->
<select id="enserir_dados_periodo_urgencia" name="periodo" type="periodo" required>
<option value="Manha" selected>MANHA</option>
<option value="Tarde">TARDE</option>
</select></td>

<td > <!--agendamentos_listas_rotas.css id=03 -->
<select id="enserir_dados_periodo_urgencia" name="urgencia" type="urgencia" required>
<option value="Baixa">BAIXA</option>
<option value="Media" selected>MÉDIA</option>
<option value="Alta">ALTA</option>
</select>
</td>

<!--agendamentos_listas_rotas.css id=04 -->
<!-- <td id="enserir_dados_status" name="status" type="status" > Em Atendimento </td> -->
<td><select id="enserir_dados_status" name="status" type="status">
<option value="Em Atendimento">EM ATENDIMENTO</option>
</select>
</td>

<!--agendamentos_listas_rotas.css id=05 -->

<td>
<input name="concluir" type="submit" value="Concluir" >
<input name="limpar" type="reset" value="Limpar" > </td>
</tr>

<!-- Seleção de dados do banco vai colocar a lista do cadastra a baixo do meu formulário -->
<?php include('agendamentos_listar_dados_rotas.php');?>

</table>
</form>

2º inserindo as informações do formulário no Banco inserindo.php. (ESTA ok)

<?php

/*realizando a conexão com banco somente conecta com Banco sem tabela */
include 'conexao_banco.php';

/* indentificação dos POST conforme rh agendamentos */
$recNome = $_POST["nome"];
$recLocalidade = $_POST["localidade"];
$recData = $_POST["data"];
$recPeriodo = $_POST["periodo"];
$recUrg = $_POST["urgencia"];
$recStatus = $_POST["status"];

/* inserindo os valores na tabela do banco */ /* essa regra vai procurar o valor que esta abaixo */
$query = "INSERT INTO rh_agendamentos(nome, localidade, data, periodo, urgencia, status) VALUES (:nome,:localidade,:data,:periodo,:urgencia,:status)";

$stmt = $conn->prepare($query);
$stmt->execute([

':nome'=>$recNome,
':localidade'=>$recLocalidade,
':data'=>$recData,
':periodo'=>$recPeriodo,
':urgencia'=>$recUrg,
':status'=>$recStatus,]);

if ($stmt){
echo ("AGENDAMENTO REALIZADO COM SUCESSO!");

}
?>

3º Listando as informações que foram inserida no banco a baixo do formulário criado agendamentos_listar_rotas.php (tudo ok)

<body id='agendamentos_listar_dados_rotas'>

<?php

include 'conexao_banco.php';
$sql = 'SELECT * FROM rh_agendamentos';

foreach ($conn->query($sql) as $row) {
echo "<tr>"."<td>".$row['nome'] ."</td>";
echo "<td>".$row['localidade']."</td>";
echo "<td>".$row['data']."</td>";
echo "<td>".$row['periodo']."</td>";
echo "<td>".$row['urgencia']."</td>";
echo "<td>".$row['status']."</td>"

?>
<!-- agendamentos_listar_rotas.php id=02 tambem recebeu regras do agendamentos_listar_dados_rotas.php id=01 */ -->
<td>


<input name="botao" type="button" onclick="javascript: location.href='?pagina=agendamentos_status_concluido';" value="CONCLUIDO" >
<input name="botao" type="button" onClick="window.open('agendamentos_status_cancelado.php')" value="CANCELADO">



</td>



<?php
"</tr>"; }
?>

</body>

4º Local do PIPINO o PROBLEMA. aqui e UPDATE onde eu quero alteras o STATUS do meu banco de EM ATENDIMENTO para CONCLUÍDO e outro BOTÃO como CANCELADO.
OBSERVAÇÕES: Quando eu realizo o cadastro ele já vai para o banco como EM ATENDIMENTO, quando o nosso motorista finalizar a corrida e CLICO no botão ao lado onde eu digo que foi CONCLUÍDO, muda o STATUS de EM ATENDIMENTO para CONCLUÍDO.
a função e realizada mais alteras todos para CONCLUÍDO não altera somente no local onde eu aperto para alterar.

<?php

// conectando ao Banco
$conn=new PDO('mysql:host=localhost;dbname=portal', 'admin', 'teste');

// REALIZANDO A ALTERAÇÃO

$sql = "UPDATE rh_agendamentos SET status='concluido' WHERE id=id";


if ($conn->query($sql) == TRUE) {
// APOS ALTERAÇÃO DOS DADOS REALIZA O REFRESH ATUALIZANDO A PAGINA
echo "<META HTTP-EQUIV='REFRESH' CONTENT='0; URL=http://portal.com/?pagina=agendamentos_rotas'>";
}
?>


TAMBÉM TENTEI ASSIM

<?php
// conectando ao Banco
$pdo=new PDO('mysql:host=localhost;dbname=portal', 'admin', 'teste');

try{
$id = ($_GET["id"]);
$sql = $pdo->prepare("UPDATE FROM rh_agendamentos SET status='cancelado' WHERE id = $id");
$sql->execute();
var_dump($id);

echo $sql->rowCount();

}catch (PDOException $e){
echo 'Error: '. $e->getMessage();

} ?>


esse da uma erro na linha do $id = ($_GET["id"]);
Jucieudo

Jucieudo

Responder

Posts

09/12/2016

Alex William


esse da uma erro na linha do $id = ($_GET["id"]);


O metodo GET não precisa estar entre parenteses.

$id = $_GET[''id''];


use com o GET e mande no botão o id do registro que você quer alterar, dessa forma:

<input name="botao" type="button" onclick="javascript: location.href="?pagina=agendamentos_status_concluido.php&id=idDoRegistro" value="CONCLUIDO" > 
<input name="botao" type="button" onClick="window.open(''agendamentos_status_cancelado.php?id=idDoRegistro'')" value="CANCELADO"> 


Assim, quando voce der o GET no id ele deve achar o valor e atribuir na variavel.

P.S.: Quando postar código no fórum, por favor use a tag de código, ficou bem dificil entender seu codigo com ele digitado todo em texto :D
Responder

09/12/2016

Alex William


esse da uma erro na linha do $id = ($_GET["id"]);


O metodo GET não precisa estar entre parenteses.

$id = $_GET[''id''];


use com o GET e mande no botão o id do registro que você quer alterar, dessa forma:

<input name="botao" type="button" onclick="javascript: location.href="?pagina=agendamentos_status_concluido.php&id=idDoRegistro" value="CONCLUIDO" > 
<input name="botao" type="button" onClick="window.open(''agendamentos_status_cancelado.php?id=idDoRegistro'')" value="CANCELADO"> 


Assim, quando voce der o GET no id ele deve achar o valor e atribuir na variavel.

P.S.: Quando postar código no fórum, por favor use a tag de código, ficou bem dificil entender seu codigo com ele digitado todo em texto :D


deu bug nas aspas, arrumando o codigo fica assim:

$id = $_GET['id'];

<input name="botao" type="button" onclick="javascript: location.href='?pagina=agendamentos_status_concluido.php&id=idDoRegistro'" value="CONCLUIDO" > 
<input name="botao" type="button" onClick="window.open('agendamentos_status_cancelado.php?id=idDoRegistro')" value="CANCELADO"> 


pronto, assim o código esta com as aspas corretas, eu suponho.
Responder

09/12/2016

Jucieudo

Desculpa colega não manjo muito, também sou novo no conhecimento..
Responder

09/12/2016

Jucieudo

<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8"/>
<style href="portallunelli/css"; type="text/css"></style>
<title>Principal</title>
</head>
<!--COMANDO PHP ONDE APONTA TODAS AS REGRAS CSS-->
<?php 
include 'css.php';
?>
	<!-- agendamentos_listar_rotas.php id=01 */	-->
	<body id='agendamentos_listar_dados_rotas'>

		<?php

		include 'conexao_banco.php';
			$sql = 'SELECT * FROM rh_agendamentos';
			
			foreach ($conn->query($sql) as $row) {			
				echo "<tr>"."<td>".$row['nome'] ."</td>";
				echo "<td>".$row['localidade']."</td>";
				echo "<td>".$row['data']."</td>";
				echo "<td>".$row['periodo']."</td>";
				echo "<td>".$row['urgencia']."</td>";
				echo "<td>".$row['status']."</td>"
				
				
		?>
					<!-- agendamentos_listar_rotas.php id=02 tambem recebeu regras do agendamentos_listar_dados_rotas.php id=01 */	-->
			<td>
				
				
				 
			
				<input name="botao" type="button" onclick="javascript: location.href='?pagina=agendamentos_status_cancelado.php&id=idDoRegistro'" value="CANCELADO" > 
			

			</td>
						 
			
		
		<?php
		"</tr>";	}
		?>

	</body>
</html>
Responder

09/12/2016

Jucieudo

cancelando.php
<?php

// conectando ao Banco

$pdo=new PDO('mysql:host=localhost;dbname=portal', 'admin', 'Teste');

try{
	
$id = $_GET['id'];
$sql = $pdo->prepare("UPDATE FROM rh_agendamentos SET status='cancelado' WHERE id = $id");
$sql->execute();
var_dump($id);
echo $sql->rowCount();
}catch (PDOException $e){
echo 'Error: '. $e->getMessage();
} 
?>
Responder

09/12/2016

Jucieudo

Não esta realizando a troca no banco e na URL fica assim
portal.com/?pagina=agendamentos_status_cancelado.php&id=idDoRegistro

Desculpa pela falta de conhecimento..

mim ajuda colega


So outra coisa eu chamo essa pagina para que na URL ele jogue para pagina que eu quero exemplo pasta homem

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8"/>
<title>Chamando Pagina</title>
</head>

<body>

<?php 
	
	$pagina = "home.php";
	if(isset($_GET['pagina']))
	$pagina = $_GET['pagina'];

	switch($pagina) {


	
	/* RH AGENDAMENTO DE ROTA*/	
	case 'agendamentos_status_cancelado.php&id=idDoRegistro';
	include "agendamentos_status_cancelado.php";
	break;
	
	
}

?>

</body>

</html>
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar