Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Sylvio Neto

PHP consulta php usando sql

Recommended Posts

Estou com esse problema bem básico porém não estou conseguindo resolver.

 

Tenho duas tabelas. Usuários e Conjuge; O ID do conjuge é o mesmo do usuário;

 estou fazendo essa consulta:
 

$conjuge = "SELECT `nome`, `sobrenome` FROM `conjuge` INNER JOIN `usuarios` ON `conjuge.id` = `usuarios.id`";

 

quero poder acessar a pagina e aparecer as informações somente do conjuge dele e nao da primeira cadastrada na tabela, que no caso nem é a conjuge dele.

 

 

Tabelas: 

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nome` varchar(15) NOT NULL,
  `sobrenome` varchar(20) NOT NULL,
  `cpf` int(11) NOT NULL
  PRIMARY KEY (`id`),
  UNIQUE KEY `cpf` (`cpf`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `conjuge` (
  `char_id` int(11) unsigned NOT NULL auto_increment,
  `id` int(11) unsigned NOT NULL default '0',
  `tipo` int(10) unsigned NOT NULL default '0',
  `nome` varchar(20) NOT NULL DEFAULT '',
  `sobrenome` varchar(30) NOT NULL,
  `cpf` varchar(11) NOT NULL,
  `rg` varchar(9) NOT NULL,
  PRIMARY KEY  (`char_id`),
  UNIQUE KEY `name_key` (`nome`),
  KEY `account_id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=150000;

 

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@BOA IMAGEM Olá  seja bem vindo em nosso Clube do Hardware.

 

Bem, a primeira coisa que vejo é que você está usando o inner join. Nesse caso, você precisa que suas tabelas sejam do tipo innoDB  ali onde diz: ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 e   ENGINE=MyISAM AUTO_INCREMENT=150000

 

Não precisa estipular um valor inicial do auto increment e nem setar um valor de auto incremento na outra tabela.

Basta marcar o campo ID como auto incrementado ao criar a tabela.

 

Fora isso,  está faltando a clasula de WHERE  para especificar de qual ID você quer trazer os dados.

 

SELECT conjuge.nome, 
       conjuge.sobrenome 
FROM conjuge 
INNER JOIN usuarios ON usuarios.id = conjuge.id
WHERE usuarios.id = $usuario_id;

Onde o $usuario_id é o valor ID do registro do usuário.

 

Para ficar mais claro:

Se o que você quer fazer é  listar o nome de usuários e um link com o detalhes desse usuário com o seu devido cônjuge,

Primeiro você faz um SQL para puxar o nome e o ID do usuário. 

No link você informa por GET o valor ID.  Esse valor é passado para o arquivo php que vai carregar os dados e mostrar em tela.

 

Exemplo:

Listar os nomes com o link

$consultaUsuario = mysqli_query($conexao, "SELECT nome, ID FROM usuarios");

while($usuarios = mysqli_fetch_object($consultaUsuarios)):
     echo "
            <a href='verDetalhes.php?id=$usuarios->id' $usuarios->nome </a> <br/>
            ";
endwhile;

 

Arquivo verDetalhes.php

$usuario_id = $_GET["id"];

include "conexao.php";

$consulta = mysqli_query($conexao, "SELECT conjuge.nome, 
                                           conjuge.sobrenome 
                                    FROM conjuge 
                                    INNER JOIN usuarios ON usuarios.id = conjuge.id
                                    WHERE usuarios.id = $usuario_id;");

while($conjuge = mysqli_fetch_object($consulta)):
     echo " Nome: $conjuge->nome <br/>
            SobreNome: $conjuge->sobrenome";   
endwhile

Basicamente é isso. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Muito Obrigado :) agradeço a ajuda.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Estou com esse problema porém não estou conseguindo resolver. (acontece que esta mostrando cônjuge que não é do titular)

     

    Tenho duas tabelas. users e Conjuge; O ID do conjuge é o mesmo do usuário;

     

    Tabelas:

    CREATE TABLE `users` (
      `id` int(11) UNSIGNED NOT NULL,
      `username` varchar(255) NOT NULL DEFAULT '',
      `nome` varchar(255) NOT NULL,
      `sobrenome` varchar(255) NOT NULL,
      `email` varchar(255) NOT NULL DEFAULT '',
      `password` varchar(255) NOT NULL DEFAULT '',
      `avatar` varchar(255) DEFAULT 'default.jpg',
      `created_at` datetime NOT NULL,
      `updated_at` datetime DEFAULT NULL,
      `is_admin` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
      `is_confirmed` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
      `is_deleted` tinyint(1) UNSIGNED NOT NULL DEFAULT '0'
    ) ENGINE=innoDB DEFAULT CHARSET=latin1;
    
    CREATE TABLE `conjuge` (
      `id` int(11) UNSIGNED NOT NULL,
      `nome` varchar(30) NOT NULL DEFAULT '',
      `sobrenome` varchar(255) NOT NULL DEFAULT '',
      `nascimento` date DEFAULT NULL,
      `cpf` varchar(255) NOT NULL DEFAULT '',
      `rg` varchar(255) NOT NULL DEFAULT '',
      `sex` enum('M','F','U') NOT NULL DEFAULT 'U'
    ) ENGINE=innoDB DEFAULT CHARSET=latin1;

     

     

    Model:

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class User_model extends CI_Model {
    
    	public function __construct() {
    		parent::__construct();
    		$this->load->database();
    	}
    	
    	public function create_user($nome, $sobrenome, $username, $email, $password) {
    		
    		$data = array(
    			'nome'	=> $nome,
    			'sobrenome'	=>	$sobrenome,
    			'username'   => $username,
    			'email'      => $email,
    			'password'   => $this->hash_password($password),
    			'created_at' => date('j-m-Y H:i:s'),
    		);
    		return $this->db->insert('users', $data);
    		
    	}
    	
    	public function resolve_user_login($username, $password) {
    		
    		$this->db->select('password');
    		$this->db->from('users');
    		$this->db->where('username', $username);
    		$hash = $this->db->get()->row('password');
    		
    		return $this->verify_password_hash($password, $hash);
    		
    	}
    	
    	public function get_user_id_from_username($username) {
    		$this->db->select('id');
    		$this->db->from('users');
    		$this->db->where('username', $username);
    
    		return $this->db->get()->row('id');
    		
    	}
    	
    	public function get_user($user_id) {
    		
    		$this->db->from('users');
    		$this->db->where('id', $user_id);
    		return $this->db->get()->row();
    		
    	}
    	
    	private function hash_password($password) {
    		
    		return password_hash($password, PASSWORD_BCRYPT);
    		
    	}
    	
    	private function verify_password_hash($password, $hash) {
    		
    		return password_verify($password, $hash);
    		
    	}
    
    	public function get_conjuge(){
    		$this->db->select('conjuge.id, conjuge.nome, conjuge.sobrenome, conjuge.nascimento, conjuge.cpf, conjuge.rg');
    		$this->db->from('conjuge');
    		$this->db->join('users', 'conjuge.id = users.id', 'inner');
    		$this->db->where('users.id');
            $query = $this->db->get();
            return $query->result();
    	}
    
    }

     

    controllers:

    	public function conjuge(){
    		$data['conjuge']	=	$this->user_model->get_conjuge();
    		$this->load->view('conjuge', $data);
    	}

    views

    						<?php if($conjuge): ?>
                                <div class="ibox-content">
                                <?php foreach ($conjuge as $row): ?>
                                    <form method="get" class="form-horizontal">
                                        <div class="form-group"><label class="col-sm-2 control-label">Nome</label>
                                            <div class="col-lg-10"><input type="text" disabled="" placeholder="<?php echo strtoupper($row->nome); ?>" class="form-control"></div>
                                        </div>
                                        <div class="hr-line-dashed"></div>
                                        <div class="form-group"><label class="col-sm-2 control-label">Sobrenome</label>
                                            <div class="col-lg-10"><input type="text" disabled="" placeholder="<?php echo strtoupper($row->sobrenome); ?>" class="form-control"></div>
                                        </div>
                                        <div class="hr-line-dashed"></div>
                                        <div class="form-group"><label class="col-sm-2 control-label">CPF</label>
                                            <div class="col-lg-10"><input type="text" disabled="" placeholder="<?php echo $row->cpf; ?>" class="form-control"></div>
                                        </div>
                                        <div class="hr-line-dashed"></div>
                                        <div class="form-group"><label class="col-sm-2 control-label">RG</label>
                                            <div class="col-lg-10"><input type="text" disabled="" placeholder="<?php echo $row->rg; ?>" class="form-control"></div>
                                        </div>
                                        <div class="hr-line-dashed"></div>
                                        <div class="form-group"><label class="col-sm-2 control-label">Data de Nascimento</label>
                                            <div class="col-lg-10"><input type="text" disabled="" placeholder="<?php echo date("d/m/Y", strtotime($row->nascimento)); ?>" class="form-control">
                                            <span class="help-block">dd/mm/yyyy</span>
                                            </div>
                                        </div>
                                    </form>
                                <?php endforeach; ?> 
                                </div>
                            <?php else: ?>
                                <div class="ibox-content">
                                    <form method="get" class="form-horizontal">
                                        <div class="form-group">
                                            <div class="col-sm-4 col-sm-offset-2">
                                                <span class="help-block">Você não possui cônjuge cadastrado</span>
                                                <button class="btn btn-primary" type="submit">Adicionar</button>
                                                <?php //$this->load->view('cadastrar'); ?>
                                            </div>
                                        </div>
                                    </form>
                                </div>
                            <?php endif; ?>

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×