Crear categorias en un XML

Iniciado por JmGarciaYT, 23 Julio 2019, 20:54 PM

0 Miembros y 1 Visitante están viendo este tema.

JmGarciaYT

Buenas familia

He creado un carrito de compra, donde todo los productos estan en un XML
Código (xml) [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<listings>
<listing>
<title>Art. 1.1 - Uso excesivo del claxon</title>
<description>Utilizar de forma repetida el claxon</description>
<price>250</price>
<carcel>2</carcel>
<images/>
<url>0</url>
</listing>
<listing>
<title>Art. 1.2 - Giro indebido</title>
<description>Hacer un cambio de sentido pisando la linea continua o en zonas no habilitadas</description>
<price>250</price>
<carcel>2</carcel>
<images/>
<url>1</url>
</listing>
<listing>
<title>Art 1.3 - Circular en sentido contrario</title>
<description>Conductor que cons u vehiculo circula o invade el sentido contrario</description>
<price>500</price>
<carcel>2</carcel>
<images/>
<url>2</url>
</listing>
<listing>
<title>Art 1.4 - Estacionar en zonas no habilitadas y obstruir la cinculacion</title>
<description>Abandonar el vehiculo en medio de la calzada o en zonas en la cueles no proceda</description>
<price>250</price>
<carcel>2</carcel>
<images/>
<url>3</url>
</listing>
<listing>
<title>Art 1.5 - Ignorar las señales de transito</title>
<description>Hcaer caso omiso de las señales verticales</description>
<price>250</price>
<carcel>2</carcel>
<images/>
<url>4</url>
</listing>
<listing>
<title>Art 1.6 - Saltarse un semaforo</title>
<description>Saltarse o no realizar los 3 segundos de parada en un semaforo</description>
<price>400</price>
<carcel>2</carcel>
<images/>
<url>5</url>
</listing>
</listings>


Para ver los productos en el index he creado un PHP que visualice el xml
Código (php) [Seleccionar]
<?php
if(!defined('IN_SCRIPT')) die("");
?>

<br/>
<br/>
<div id="resultswrapper">
<h2 class="pull-left no-margin">
<?php
if(isset(
$_REQUEST["keyword_search"]))
{
echo $this->texts["search_results"];
}
else
{
echo $this->texts["our_ads"];
}
?>

</h2>

<div class="clearfix"></div>


<hr class="no-margin"/>
<br/>
<script src="js/results.js"></script>

<div class="clearfix"></div>
<div class="results-container">

<?php
$PageSize intval($this->settings["website"]["results_per_page"]);

if(!isset($_REQUEST["num"]))
{
$num=1;
}
else
{
$num=$_REQUEST["num"];
$this->ms_i($num);
}


$listing_counter = -1;

$listings simplexml_load_file($this->data_file);

$price_from 0;
$price_to 0;
$min_price 0;
$max_price 0;
$iTotResults 0;


if(isset($_REQUEST["amount"])&&trim($_REQUEST["amount"])!="")
{
$_REQUEST["amount"]=preg_replace("/[^\-0-9]/","",$_REQUEST["amount"]);


$amount_items=explode("-",$_REQUEST["amount"]);

if(sizeof($amount_items)==2)
{
$price_from=$amount_items[0];
$price_to=$amount_items[1];
}

}

$script_products="";
$script_products_carcel="";
$script_product_prices="";

foreach ($listings->listing as $listing)
{
$listing_counter++;

$script_products.="products[".$listing_counter."]=\"".trim($listing->title)."\";\n";
$script_products_carcel.="carcel[".$listing_counter."]=\"".trim($listing->carcel)."\";\n";
$script_product_prices.="product_prices[".$listing_counter."]=\"".trim($listing->price)."\";\n";




$current_price floatval($listing->price);


//refine search
if(isset($_REQUEST["only_picture"])&&$_REQUEST["only_picture"]==1)
{
if(trim($listing->images)=="") continue;
}

if(isset($_REQUEST["keyword_search"])&&trim($_REQUEST["keyword_search"])!="")
{
if
(
stripos($listing->title$_REQUEST["keyword_search"])===false
&&
stripos($listing->description$_REQUEST["keyword_search"])===false
)
{
continue;
}
}

if($price_from!=0&&$price_to!=0)
{
if($current_price<$price_from) continue;
if($current_price>$price_to) continue;
}
//end refine search





if($current_price>$max_price$max_price=$current_price;

if($min_price==0)
{
$min_price=$current_price;
}
else
if($min_price>$current_price)
{
$min_price=$current_price;
}


if($iTotResults>=($num-1)*$PageSize&&$iTotResults<$num*$PageSize)
{

$images=explode(",",$listing->images);

if($this->settings["website"]["seo_urls"]==1)
{
$strLink "product-".$this->format_str(strip_tags(stripslashes($listing->title)))."-".$listing_counter.".html";
}
else
{
$strLink "index.php?page=details&id=".$listing_counter;
}
?>


<div class="panel panel-default search-result">
<div class="panel-heading">
<h3 class="panel-title">

<a href="<?php echo $strLink;?>" class="search-result-title"><?php echo $listing->title;?></a>

</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-8 col-xs-12">
<div class="details">

<p class="description">
<?php echo $this->text_words(strip_tags($listing->description),80);?>
</p>

<?php
if(trim($listing->price)!="")
{
?>


<span class="listing-price"><?php echo $this->texts["price"];?>: <strong><?php echo $this->settings["website"]["currency"].number_format(floatval($listing->price), 0);?></strong></span>

<?php
}
?>

<?php
if(trim($listing->carcel)!="")
{
?>


<span class="listing-price"><?php echo $this->texts["carcel"];?>: <strong><?php echo $this->settings[""]["currency"].number_format(floatval($listing->carcel), 0);?> meses</strong></span>

<?php
}
?>


<span class="is_r_featured"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">

</div>
<div class="col-xs-6">
<div class="text-right">
<a class="btn btn-md btn-info" href="javascript:AddToCart(<?php echo $listing_counter;?>)"><?php echo $this->texts["add_to_cart"];?></a>
</div>
</div>
</div>
</div>
</div>
<?php


}

$iTotResults++;
}
?>

</div>
<div class="clearfix"></div>
</div>

<script>
var currency_symbol="<?php echo $this->settings["website"]["currency"];?>";
var currency_code="<?php echo $this->settings["website"]["currency_code"];?>";
var pp_address="<?php echo $this->SimpleEncrypt("123"$this->settings["website"]["admin_email"]);?>";
var products=Array();
<?php echo $script_products;?>
var product_prices=Array();
<?php echo $script_product_prices;?>
</script>

<script>
var min_price=<?php echo $min_price;?>;
var max_price=<?php echo $max_price;?>;
</script>

<?php
$this
->Title($this->texts["our_ads"]);
$this->MetaDescription("");
?>




<div id="loadmoreajaxloader" style="display:none;"><center><img src="images/loading.gif" /></center></div>


<script type="text/javascript">
var page_num=2;
$(window).scroll(function()
{
   if($(window).scrollTop() == $(document).height() - $(window).height())
   {
       $('div#loadmoreajaxloader').show();
       $.ajax({
       url: "load_products.php?num="+page_num+"&view="+current_view,
       success: function(html)
       {
           if(html)
           {
               $("#resultswrapper").append(html);
               $('div#loadmoreajaxloader').hide();
page_num++;
           }else
           {
               $('div#loadmoreajaxloader').html('');
           }
       }
       });
   }
});

$(document).ready(function()
{
InitCart();
});
</script>


No se mucho de PHP, mi preguntas es, se puede agregar algo en el XML como <categoria>1</categoria>
<categoria>2</categoria>
y que en el PHP poner que si la categoria es 1 que muestre ese producto y si es 2 que muestre solo los producto 2?

mchojrin

#1
Se puede hacer lo que buscas con la librería SimpleXML, aunque honestamente, te recomiendo no usar XML como medio de almacenamiento persistente...

Más vale usa una base de datos (MySQL por ejemplo) y usa XML para comunicarte con otros sistemas.
Ayudo a desarrolladores PHP a acceder a puestos mejor remunerados