Foros del Web » Programando para Internet » PHP »

Warning: Invalid argument supplied for foreach()

Estas en el tema de Warning: Invalid argument supplied for foreach() en el foro de PHP en Foros del Web. Estoy realizando un web service SOAP y me marca un Warning: Warning: Invalid argument supplied for foreach() in C:\wamp\www\tareas\SOAP_Cliente.php on line 13 SOAP_Cliente.php Código PHP: ...
  #1 (permalink)  
Antiguo 12/04/2016, 16:37
 
Fecha de Ingreso: marzo-2016
Mensajes: 9
Antigüedad: 8 años, 1 mes
Puntos: 0
Pregunta Warning: Invalid argument supplied for foreach()

Estoy realizando un web service SOAP y me marca un Warning:

Warning: Invalid argument supplied for foreach() in C:\wamp\www\tareas\SOAP_Cliente.php on line 13

SOAP_Cliente.php
Código PHP:
<?php

require_once "nusoap.php"//INCLUIMOS LA LIBRERIA NUSOAP

//error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR);
$client = new nusoap_client("http://localhost/tareas/SOAP_Server.php?wsdl");
$municipios $client -> call("obtenerMunicipio", array("parametro"=>1));
$municipios json_decode($municipios);

echo 
"<ul>";
foreach (
$municipios as $municipio) {
    echo 
"<li>".$municipio->mpio_clave." ".$municipio->edo_id." ".$municipio->mpio_descripcion." "."</li>";
}
echo 
"</ul>";

SOAP_Server.php
Código PHP:
<?php
require_once "nusoap.php"

$server = new soap_server;
$server->configureWSDL('obtenerMunicipio''urn:obtenerMunicipio');

if (!isset(
$HTTP_RAW_POST_DATA)){
    
$HTTP_RAW_POST_DATA file_get_contents("php://input");
}

function 
obtenerMunicipio($parametro){
    
$cn mysqli_connect("localhost","root","","directorio2");
    
$municipio $cn->query("SELECT mpio_clave, edo_id,mpio_descripcion FROM municipio WHERE edo_id =".$parametro);
    
$ArrMunicipios = [];
    while (
$municipios mysqli_fetch_array($municipio,MYSQLI_ASSOC)){
            
$ArrMunicipios[] = $municipios;
    }
    return 
json_encode($ArrMunicipios);
}


$server -> register("obtenerMunicipio", array("parametro"=>"xsd:int"),
                                        array(
"return" => "xsd:string"),
                                        
"urn:obtenerMunicipio",
                                        
"urn:obtenerMunicipio#obtenerMunicipio",
                                        
"rpc",
                                        
"enconde",
                                        
"Obtener los mpios"
                    
);
$server->service($HTTP_RAW_POST_DATA);

?>
  #2 (permalink)  
Antiguo 12/04/2016, 17:00
 
Fecha de Ingreso: enero-2015
Mensajes: 205
Antigüedad: 9 años, 3 meses
Puntos: 18
Respuesta: Warning: Invalid argument supplied for foreach()

Prueba con :
Código PHP:
Ver original
  1. if( is_array( $municipios ) && count( $municipios ) > 0 ) {
  2.  
  3. foreach ($municipios as $municipio) {
  #3 (permalink)  
Antiguo 12/04/2016, 17:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Warning: Invalid argument supplied for foreach()

Pues lo obvio es que no estás pasando un array, lo que no podemos adivinar es si eso es completamente cierto.

¿Por qué no depuras con var_dump() tus variables antes de usarlas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 12/04/2016, 17:08
 
Fecha de Ingreso: marzo-2016
Mensajes: 9
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Warning: Invalid argument supplied for foreach()

Gracias se quito el warning, pero no me regresa ningun valor, solo la pantalla en blanco.
  #5 (permalink)  
Antiguo 12/04/2016, 17:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Warning: Invalid argument supplied for foreach()

Cita:
Iniciado por HernanFrancco Ver Mensaje
Gracias se quito el warning, pero no me regresa ningun valor, solo la pantalla en blanco.
Repito ¿por qué no depuras tus variables antes de usarlas?

Está mal que asumas que el código va a devolver algo siempre, ese es tu principal error, jamás debes asumir algo.

Debes controlar cada detalle, ir validando cada paso y reportar si algo sale mal.

No esperes a que el código te diga "hey, aquí estoy mal" si no haces nada para depurar lo que haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 12/04/2016, 17:40
 
Fecha de Ingreso: marzo-2016
Mensajes: 9
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Warning: Invalid argument supplied for foreach()

Gracias por responder.

No estoy muy familiarizado con php y relicé un var_dump para ver el contenido del array. Y un echo para la function:

Código PHP:
$server = new soap_server;
$server->configureWSDL('obtenerMunicipio''urn:obtenerMunicipio');

if (!isset(
$HTTP_RAW_POST_DATA)){
    
$HTTP_RAW_POST_DATA file_get_contents("php://input");
}

function 
obtenerMunicipio(){
    
$cn mysqli_connect("localhost","root","","directorio2");
    
$municipio $cn->query("SELECT mpio_clave, edo_id,mpio_descripcion FROM municipio");
    
$ArrMunicipios = [];
    while (
$municipios mysqli_fetch_array($municipio,MYSQLI_ASSOC)){
            
$ArrMunicipios[] = $municipios;
    }
    
var_dump ($ArrMunicipios);
    return 
json_encode($ArrMunicipios);
}


echo 
obtenerMunicipio(); 
El resultado con var_dum, me muestra los datos almacenados en el arreglo, pero el echo obtenerMunicipio, no me arroja los datos. Me podrías ayudar

Última edición por HernanFrancco; 12/04/2016 a las 17:46

Etiquetas: invalid, mysql, select, sql, warning
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:39.