Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando função para PDO

10-01-2017 08:06

Tenho um script que funciona perfeitamente, sendo q este ja fui auxiliado neste fórum, só que agora estou precisando passar para PDO, ja fiz varias pesquisas e ainda não consegui.
A função funciona perfeitamente assim ...

<table> <thead> <tr> <th>Hor</th> <th>Seg</th> <th>Ter</th> <th>Qua</th> <th>Qui</th> <th>Sex</th> <th>Sab</th> </tr> </thead> <?php function Dados($Hora, $Dia) { $idp = $_GET['idp']; $query=mysql_query("SELECT * FROM ho INNER JOIN sala ON sala_id=id_sa WHERE id_pr='$idp' AND dsem='$Dia' AND hor='$Hora' AND tu=1 GROUP BY id_pr"); while($dados=mysql_fetch_array($query)) { extract($dados); return $sala; } } $idp = $_GET['idp']; $query=mysql_query("SELECT * FROM ho WHERE id_pr = '$idp' AND tu=1 GROUP BY hor ORDER BY hor") or die(mysql_error()); while($dados=mysql_fetch_array($query)) { extract($dados); echo "<tbody><tr><td>$hor</td><td>"; echo Dados("$hor", "Seg"); echo "</td><td>"; echo Dados("$hor", "Ter"); echo "</td><td>"; echo Dados("$hor", "Qua"); echo "</td><td>"; echo Dados("$hor", "Qui"); echo "</td><td>"; echo Dados("$hor", "Sex"); echo "</td><td>"; echo Dados("$hor", "Sáb"); echo "</td></tr></tbody>"; } echo "</table>"; ?>

Adaptada no PDO esta assim ...
<?php function Dados($Hora, $Dia) { try { $dbhost = ""; $dbname = ""; $dbuser = ""; $dbpass = ""; $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); } catch ( PDOException $e ) { echo 'Erro ao conectar com o MySQL: ' . $e->getMessage(); } $idp = $_GET['idp']; $sql=$pdo->prepare("SELECT * FROM ho INNER JOIN sala ON sala_id=id_sa WHERE id_pr=:id_pr AND dsem=:dsem AND hor=:hor AND tu=:tu GROUP BY id_pr"); $sql->bindValue(':id_pr', $idp, PDO::PARAM_STR); $sql->bindValue(':dsem', $Dia, PDO::PARAM_STR); $sql->bindValue(':hor', $Hora, PDO::PARAM_STR); $sql->bindValue(':tu',1, PDO::PARAM_STR); $sql->execute(); while($dados = $sql->fetch(PDO::FETCH_ASSOC)) { $dados=extract($dados); return $sala; } } $idp = $_GET['idp']; $sqll=$pdo->prepare("SELECT * FROM ho WHERE id_pr = :id_pr AND tu=:tu GROUP BY hor ORDER BY hor"); $sqll->bindValue(':id_pr', $idp, PDO::PARAM_STR); $sqll->bindValue(':tu',1, PDO::PARAM_STR); $sqll->execute(); while($dados = $sqll->fetch(PDO::FETCH_ASSOC)) { $dados=extract($dados); echo "<tr><td>$hor</td><td>"; echo Dados("$hor", "Seg"); echo "</td><td>"; echo Dados("$hor", "Ter"); echo "</td><td>"; echo Dados("$hor", "Qua"); echo "</td><td>"; echo Dados("$hor", "Qui"); echo "</td><td>"; echo Dados("$hor", "Sex"); echo "</td><td>"; echo Dados("$hor", "Sáb"); echo "</td></tr>"; } ?>

Exemplo do que esta ocorrendo, tenho 6 horários cadastrados , 2 na segunda, 2 no sábado, 1 na quarta e 1 na terça, é mostrado 1 na segunda e 1 na terça, os demais não.

Agradeço toda ajuda possível.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Mudando função para PDO

10-01-2017 10:02

Provavelmente os resultados estão sendo ocultados pelo GROUP

SELECT * FROM ho INNER JOIN sala ON sala_id=id_sa WHERE id_pr=:id_pr AND dsem=:dsem AND hor=:hor AND tu=:tu GROUP BY id_pr

Pelo que observei você agrupa os resultados pelo horário. Isso quer dizer que se tem dois ou mais dias com agendamento no mesmo horário eles serão ocultos.

Faça um teste retirando o group by.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: Mudando função para PDO

10-01-2017 10:13

Não foi, e reparei tb que no modelo antigo tb da o mesmo erro, sendo q ja funcionou antes, talvez pela versão erro meu.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Mudando função para PDO

10-01-2017 10:46

Faz um exporte da sua tabela para eu testar aqui.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: Mudando função para PDO

10-01-2017 11:17

preciso que apareça o id_sa que é a sala, conforme o dia e horário.

CREATE TABLE IF NOT EXISTS `ho` ( `id_h` int(11) NOT NULL AUTO_INCREMENT, `id_c` int(11) NOT NULL, `id_pr` int(11) DEFAULT NULL, `id_m` int(11) DEFAULT NULL, `id_sa` int(11) DEFAULT NULL, `dsem` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, `hor` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, `tu` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, PRIMARY KEY (`id_h`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ; -- -- Extraindo dados da tabela `ho` -- INSERT INTO `ho` (`id_h`, `id_c`, `id_pr`, `id_m`, `id_sa`, `dsem`, `hor`, `tu`) VALUES (1, 1, 19, 1, 3, 'Seg', '3', '1'), (2, 2, 10, 9, 3, 'Seg', '2', '1'), (3, 2, 5, 1, 2, 'Seg', '5', '1'), (4, 1, 8, 5, 3, 'Qua', '2', '1'), (6, 1, 7, 10, 1, 'Seg', '1', '1'), (7, 1, 19, 1, 1, 'Ter', '4', '1'), (8, 1, 19, 1, 1, 'Qua', '1', '3'), (9, 1, 5, 6, 1, 'Qui', '1', '1'), (10, 1, 11, 14, 1, 'Sex', '1', '1'), (11, 1, 4, 7, 3, 'Seg', '1', '1'), (12, 1, 19, 1, 1, 'Sab', '2', '1'), (13, 1, 19, 1, 2, 'Seg', '1', '2'), (14, 1, 19, 1, 5, 'Sab', '1', '1');

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Mudando função para PDO

10-01-2017 11:52

Pelo que entendi você tem uma tabela com os dias, Segunda, Terça, etc. E precisa puxar os horários de um usuário específico e jogar na tabela, correto?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: Mudando função para PDO

10-01-2017 12:18

exatamente
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Mudando função para PDO  #resolvido

10-01-2017 12:32

Deixou uma falha nessa linha

echo Dados("$hor", "Sáb");

Colocou acento. Sendo que no bd está Sab sem acento.

Veja se é isso que precisa.

<?php define("SERVIDOR", "localhost"); define("USUARIO", ""); define("SENHA", ""); define("BANCODEDADOS", ""); $db = new PDO('mysql:host=localhost;dbname='.BANCODEDADOS, USUARIO, SENHA); function Dados($Hora, $Dia) { $idp = $_GET['idp']; $db = new PDO('mysql:host=localhost;dbname='.BANCODEDADOS, USUARIO, SENHA); $sql2 = $db->prepare("SELECT id_pr, dsem, hor, tu, id_sa FROM ho WHERE id_pr=:id_pr AND dsem=:dsem AND hor=:hor AND tu=:tu"); $sql2->bindValue(':id_pr', $idp, PDO::PARAM_INT); $sql2->bindValue(':dsem', $Dia, PDO::PARAM_STR); $sql2->bindValue(':hor', $Hora, PDO::PARAM_INT); $sql2->bindValue(':tu', '1', PDO::PARAM_INT); $sql2->execute(); $v = ""; foreach ($sql2 as $d){ $v = $d['id_sa']; } return $v; $sql2 = null; } $idp = $_GET['idp']; $sqll = $db->prepare("SELECT id_pr, tu, hor FROM ho WHERE id_pr=:id_pr AND tu=:tu GROUP BY hor ORDER BY hor"); $sqll->bindValue(':id_pr', $idp, PDO::PARAM_INT); $sqll->bindValue(':tu',1, PDO::PARAM_INT); $sqll->execute(); ?> <table> <thead> <tr> <th>Hor</th> <th>Seg</th> <th>Ter</th> <th>Qua</th> <th>Qui</th> <th>Sex</th> <th>Sab</th> </tr> </thead> <?php foreach ($sqll as $d){ //echo "{$d['hor']}<br />"; $hor = $d['hor']; echo "<tr><td>$hor</td><td>"; echo Dados("$hor", "Seg"); echo "</td><td>"; echo Dados("$hor", "Ter"); echo "</td><td>"; echo Dados("$hor", "Qua"); echo "</td><td>"; echo Dados("$hor", "Qui"); echo "</td><td>"; echo Dados("$hor", "Sex"); echo "</td><td>"; echo Dados("$hor", "Sab"); echo "</td></tr>"; } ?> </table> <?php $sqll = null; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: Mudando função para PDO

10-01-2017 13:37

perfeito, muito obrigado.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado