Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Php/mysql/angular js

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794

    Php/mysql/angular js

    Salve a tutti,

    Non so se sono nella sezione giusta. Ho questo codice in php che deve passare un array (Json) a una paina html dove poi uso codice di angularjs per visualizzare i dati recuperati da una tabella Mysql.
    Mi restituisce un array vuoto.

    Qualcuno può aiutarmi?

    Grazie mille

    codice:
    include 'conf/connect.php';
    		$idutente = $_SESSION['idutente'];
    		$giorno =  date('d');
    		$mese = date('m');
    		$anno = date('Y');
    		$data = $anno."-".$mese."-".$giorno;
    		$idcategoria="";
    		$sel_eventi = "select * from eventi where fecha_evento>='$data' order by caducidad_evento desc";
    		if ($_GET[filtro])
    			{
    				$filtro = $_GET[filtro];
    				$sel_eventi = "select * from eventi where fecha_evento>='$data' and titulo like '%$filtro%' order by caducidad_evento desc";
    			}
    		$ris_eventi = mysql_query($sel_eventi);
    		$num_eventi = Mysql_num_rows($ris_eventi);
    		if ($num_eventi>0)
    		{
    			$data = array();
    
    
    			while ($row_evento = mysql_fetch_array($ris_eventi))
    			{ 
    				$data[] = $row_evento;
    			}
    			echo json_encode($data);
    		}
    		
    		
    			}

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sei sicuro che la query che esegui recuperi effettivamente degli eventi?
    Verificalo, per esempio fatti restituire la stringa contenente la query e poi eseguila a mano sul DB, vedi cosa recupera.

    Comunque io toglierei il controllo if($num_eventi > 0)
    tanto comunque devi inizializzare l'array $data (e non lo fai, così se non trova eventi lo script muore senza fare niente, invece dovrebbe sempre restituire qualcosa, anche l'array vuoto, oppure un messaggio "non ho trovato niente") e se non vengono trovati eventi resta vuoto perché non si entra nel while.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Sei sicuro che la query che esegui recuperi effettivamente degli eventi?
    Verificalo, per esempio fatti restituire la stringa contenente la query e poi eseguila a mano sul DB, vedi cosa recupera.

    Comunque io toglierei il controllo if($num_eventi > 0)
    tanto comunque devi inizializzare l'array $data (e non lo fai, così se non trova eventi lo script muore senza fare niente, invece dovrebbe sempre restituire qualcosa, anche l'array vuoto, oppure un messaggio "non ho trovato niente") e se non vengono trovati eventi resta vuoto perché non si entra nel while.
    Grazie mille per la risposta. La query funziona e restituisce valori della tabella che interrogo.
    Metto anche il codice angularjs:

    var menu = angular.module('BlankApp', []);
    menu.controller('greetingController', function($scope, $http) {
    $scope.mostraMenu = false;
    $scope.funcMenu = function()
    {
    $scope.mostraMenu = true;

    $http.get('eventi.php?filtro='+$scope.busqueda).su ccess(function(data) {
    $scope.eventi = data; ----> mi restituisce data="";


    });
    }
    });
    <body>
    <div style="text-align: center; position: relative; float: left; width: 100%;" ng-controller="greetingController" data-ng-init="init()">
    <input id="busqueda" type="text" placeholder="Busca Meet: Ej. Concierto Coldplay o Barbacoa en terraza" ng-model="busqueda" class="txt_field" ng-change="funcMenu()">
    <div ng-show="busqueda.length > 0" id="resultado">
    <div ng-repeat="evento in eventi" style="color: black">
    {{ evento.id }}
    </div>
    </div>
    </div>
    </body>
    Ultima modifica di ylio82; 13-08-2016 a 19:50

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    logga cosa riceve il PHP in GET, il risultato della query e cosa restituisci (ti conviene in un file di testo di appoggio)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da clasku Visualizza il messaggio
    logga cosa riceve il PHP in GET, il risultato della query e cosa restituisci (ti conviene in un file di testo di appoggio)

    Ragazzi, i dati vengono passati correttamente con il GET, la query funziona, il problema è l'output di json_encode($data). Mi restituisce valore vuoto. Se ad esempio cambio e metto

    $data[]= $row_evento[id];

    il valore restituito è l'id correttamente.

    Ho problemi nella restituzione dell'array.

    Grazie mille.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Metti una riga di log per ogni iterazione nel while così vedi i dati e salvaci anche anche il valore di $data e di json_encode

    Una volta che sei sicuro che PHP salva i dati corretti ad ogni chiamata via angularjs, ti potrai concentrare sull'altro lato

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Metti una riga di log per ogni iterazione nel while così vedi i dati e salvaci anche anche il valore di $data e di json_encode

    Una volta che sei sicuro che PHP salva i dati corretti ad ogni chiamata via angularjs, ti potrai concentrare sull'altro lato
    Ho effettuato una prova assegnando:
    $data[] = '{"id":"1", "titulo" : "ciao"}';
    $json=json_encode($data);
    echo $json;
    Per vedere cosa succede e il risultato in Angularjs è:
    data = ["{"id":"1", "titulo" : "ciao"}"]

    poi quando vado nel div a richiamare:
    <div ng-repeat="evento in eventi" style="color: black">
    Evento: {{ evento.id }}
    </div>
    evento.id è vuoto....

    Grazie mille

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    non che mi ricordi bene come funziona angularjs, ma mi sa che in questo pezzo di codice devi aggiungere una cosa

    codice:
    $scope.funcMenu = function() 
    {
        $scope.mostraMenu = true;
    
        $scope.eventi = []; // inizializza una nuova variabile
    
        $http.get('eventi.php?filtro='+$scope.busqueda).su ccess(function(data) {
            $scope.eventi = data; ----> mi restituisce data="";
    
    });
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da clasku Visualizza il messaggio
    non che mi ricordi bene come funziona angularjs, ma mi sa che in questo pezzo di codice devi aggiungere una cosa

    codice:
    $scope.funcMenu = function() 
    {
        $scope.mostraMenu = true;
    
        $scope.eventi = []; // inizializza una nuova variabile
    
        $http.get('eventi.php?filtro='+$scope.busqueda).su ccess(function(data) {
            $scope.eventi = data; ----> mi restituisce data="";
    
    });
    }
    Ragazzi ho risolto dopo un goirno e mezzo di sbattimento.

    Ho usato questo codice nella pagina php:

    $data = array();
    while ($row_evento = mysql_fetch_array($ris_eventi))
    {
    $id = $row_evento[id];
    $titulo = $row_evento[titulo];
    $moderador = $row_evento[fecha_evento];
    $tipo = $row_evento[tipo];
    $categoria = $row_evento[idcategoria];
    $sel_categoria = "select * from categorie where id=$idcat";
    $ris_categoria = mysql_query($sel_categoria);
    $row_categoria = mysql_fetch_array($ris_categoria);
    $categ = $row_categoria[categoria];

    $data[] = array( "id" => $row_evento[id], "titulo" => $row_evento[titulo], "tipo" => $row_evento[tipo], "categoria" => $categ );
    }



    echo json_encode(array('data' => $data));
    Mentre nell'html ho cambiato mettendo questo:

    $http({method: 'GET', url: 'eventi.php?filtro='+$scope.busqueda}).success(fun ction(data) {


    $scope.eventi = data.data; ----> mancava un .data
    });
    Grazie mille a tutti.

    Un saluto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.