Jump to content

Mandar registos de base de dados para um ficheiro json


filipe3632
 Share

Recommended Posts

Bom dia

Eu estou a fazer uma pagina web onde tenho um chat. Eu tenho uma base de dados onde tenho os utilizadores e fazendo login com estes entro no chat como sendo utilizador respectivo.

No entanto a lista dos utilizadores do chat está num ficheiro .json que mostro abaixo

{
   "1": ["Filipe","http://localhost/talkify/assets/elvis.jpg","http://html5-ninja.com"],
   "2": ["Filipe2","http://localhost/talkify/assets/elvis.jpg","http://html5-ninja.com"]
}

Neste momento para eu conseguir ter uma lista maior eu edito o meu ficheiro.json, criando uma nova linha com o respectivo id e o respectivo username. O que eu queria era que cada vez que eu insira um utilizador novo na base de dados este ficheiro .json fosse actualizado de forma automática.

Alguém me pode ajudar?

Cumprimentos,

Filipe Moreira

Edited by filipe3632

Peace, Love & Empathy by: Kurt Cobain

Link to comment
Share on other sites

<?php
// só para exemplo de dados vindos da base de dados
$recordset = array();
$recordset[] = array("name" => "ping", "image" => "pong", "link" => "pang");
$recordset[] = array("name" => "bing", "image" => "bong", "link" => "bang");

// contruir o JSON
$array = array();
$i = 1;
foreach ($recordset as $record)
   $array[$i++] = array($record["name"], $record["image"], $record["link"]);
$json = json_encode($array);

echo $json; // <----- magia !!!
?>
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Com isso queres dizer isto? Estou certo?

$recordset = array();
 $recordset[] = array("user_id" => 'usr_id', "user_name" => 'usr_name');

 $array = array();
 $i = 1;
 foreach ($recordset as $record)
 $array[$i++] = array($record["user_id"], $record["user_name"]);
 $json = json_encode($array);
  echo $json;

Peace, Love & Empathy by: Kurt Cobain

Link to comment
Share on other sites

Com isso queres dizer isto? Estou certo?

$recordset = array();
 $recordset[] = array("user_id" => 'usr_id', "user_name" => 'usr_name');

 $array = array();
 $i = 1;
 foreach ($recordset as $record)
    $array[$i++] = array($record["user_id"], $record["user_name"]);
 $json = json_encode($array);
  echo $json;

ao menos testaste ou tentaste adaptar ao teu código de ligação à base de dados ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Bom dia

Eu estou a fazer uma pagina web onde tenho um chat. Eu tenho uma base de dados onde tenho os utilizadores e fazendo login com estes entro no chat como sendo utilizador respectivo.

No entanto a lista dos utilizadores do chat está num ficheiro .json que mostro abaixo

{
"1": ["Filipe","http://localhost/talkify/assets/elvis.jpg","http://html5-ninja.com"],
"2": ["Filipe2","http://localhost/talkify/assets/elvis.jpg","http://html5-ninja.com"]
}

Neste momento para eu conseguir ter uma lista maior eu edito o meu ficheiro.json, criando uma nova linha com o respectivo id e o respectivo username. O que eu queria era que cada vez que eu insira um utilizador novo na base de dados este ficheiro .json fosse actualizado de forma automática.

Alguém me pode ajudar?

Cumprimentos,

Filipe Moreira

Se as alterações não são muito frequentes até faz sentido gerares um ficheiro estático com a lista dos utilizadores...

Tens que ter alguma coisa que funcione como trigger... um exemplo usando uma API REST:

<?php

// ao inserir na base de dados
r('/api/insert', function() {
// insert na base de dados
tr('data.change', $data); // trigger para atualizar o ficheiro
});

// ao atualizar a base de dados
r('/api/update', function() {
// update na base de dados
tr('data.change', $data); // trigger para atualizar o fiheiro
});

// criar evento
e('data.change', function($data) {
file_put_contents('/caminho/ficheiro.json', json_encode($data));
});

Edited by taviroquai
Link to comment
Share on other sites

Boas

Obrigado 🙂

<?php

// ao inserir na base de dados

r('/api/insert', function() {

// insert na base de dados

tr('data.change', $data); // trigger para atualizar o ficheiro

});

// ao atualizar a base de dados

r('/api/update', function() {

// update na base de dados

tr('data.change', $data); // trigger para atualizar o fiheiro

});

// criar evento

e('data.change', function($data) {

file_put_contents('/caminho/ficheiro.json', json_encode($data));

});

na function eu tenho de trocar pelas minhas funções que uso para fazer as respectivas coisas?

Eu uso uma libraria onde tem as funções para a base de dados...

Por exemplo, a minha libraria User, podem ver abaixo

<?php
   //error_reporting(-1);
   require_once("Mysql.php");
   require_once("funcoes.php");
   class User {
    public $usrId = '';
    public $usrName= '';
    public $usrMail= '';
    public $usrPassword= ''; 

    function __construct($id=null)
    {
	    $this->createObj($id);
    }
    function createObj($id=null){
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $rows = $objMysql->query("select * from user where usr_id='".cl($id)."'");
	    while($row = $objMysql->fetch_array($rows)){
		    $this->usrId = $row['usr_id'];  
		    $this->usrName= $row['usr_name']; 
		    $this->usrMail= $row['usr_mail']; 
		    $this->usrPassword= $row['usr_password'];
	    }   
    }
    // ao inserir na base de dados
    r('/api/insert', function() {
		    // insert na base de dados
    function insert(){
	    $inserir="insert into user(usr_name,usr_mail,usr_password) values ( ";
	    $inserir.=" ,'".$this->usrName."'";
	    $inserir.=" ,'".$this->usrMail."'";
	    $inserir.=", '".$this->usrPassword."')";
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $executarInserir = $objMysql->query($inserir);
	    return $objMysql->lastInsertedId();
    }
		    tr('data.change', $data); // trigger para atualizar o ficheiro
    });

    function update(){
	    $update="update user ";
	    $update.=" set usr_name='".$this->usrName."'";
	    $update.=" set usr_mail='".$this->usrMail."'";
	    $update.=" set usr_password='".$this->usrPassword."'";
	    $update.=" where  user_id='".$this->usrId."'";
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $executarUpdate = $objMysql->query($update);
    }
	 function delete(){
	    $delete="delete from user ";  
	    $delete.=" where  user_id='".$this->usrId."'";
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $objMysql->query($delete);
    }

    public static function isUserValid($email,$password){
	    $isValid=FALSE;
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $query="select * from user where usr_mail='".cl($email)."' and usr_password='".cl($password)."' ";
	    $rows = $objMysql->query($query);
	    while($row = $objMysql->fetch_array($rows)){
		   $isValid=TRUE;
	    }   
	    return $isValid;

    }
    public static function getUser($email,$password){
	    $id=null;
	    $objMysql=new Mysql();
	    $objMysql->connect();
	    $query="select * from user where usr_mail='".cl($email)."' and usr_password='".cl($password)."' ";
	    $rows = $objMysql->query($query);
	    while($row = $objMysql->fetch_array($rows)){
		   $id=$row['usr_id'];
	    }   
	    return new User($id);

    }
    public static function getUserList($email,$password){
	    $id=null;
	    $objMysql=new Mysql();
	    $objMysql->connect();		  
	    $query="select * from user";
	    $rows = $objMysql->query($query);
	    while($row = $objMysql->fetch_array($rows)){
		   $id=$row['usr_id'];
	    }   
	    //return new User("id" => 'usr_id', "name" => 'usr_name', "link" => "pang");
    }

   }

?>

Peace, Love & Empathy by: Kurt Cobain

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.