Ir ao conteúdo
  • Cadastre-se

PHP consulta php usando sql


Posts recomendados

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;

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

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; ?>

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!