Jump to content

reorder query strings depending on variables


SmileyWar

Recommended Posts

Hello there, i`m trying to figure out a way to reorder a query string depending on variables.

 

So the url would have the following query:

/result/index.php?page=Weissenfels+Clack+and+Go&tyre=155_70_12&option1=30_02&option2=43_02&v_t=car&options=2

 

It should depend what page they come from if the page is equal to option2 then option1 is op1 and option2 is op2

 

To make it myself easier i have converted some variables

On every first two digits ie 43 from the 43_02 can have 13 different ending digits, ie _03 or _04 or _05 etc...

 

So i have converted all 43_02 43_03 etc to one variable ie $chain1 or $chain2 which holds in this case 43

 

a 43 is equal to Weissenfels+Clack+and+Go

 

in the index page i have included the following process.

 

At the moment i can only use php coding, unfortunately no mysql atm

 

thank you in advance.

 

<?php


$tyre = $_GET['tyre'];  // finds the tyre size
$op1 = $_GET['option1'];  // finds the first chain size if applicable
$op2 = $_GET['option2'];  // finds the second chain size if applicable
$op3 = $_GET['option3'];  // finds the third chain size if applicable
$op4 = $_GET['option4'];  // finds the fourth chain size if applicable
$op5 = $_GET['option5'];  // finds the fith chain size if applicable
$op6 = $_GET['option6'];  // finds the sixth chain size if applicable
$op7 = $_GET['option7'];  // finds the seventh chain size if applicable
$op8 = $_GET['option8'];  // finds the eighth chain size if applicable
$options = $_GET['options'];
$page = $_GET['page'];
$error = $_GET['info'];
$vehicle_type = $_GET['v_t']; // finds the vehicle type

$b = "Weissenfels+WeissTech+Tecna";
$c = "Weissenfels+Clack+and+Go";


if (($op1 == "30_02") || ($op1 == "30_03"))
{
$chain1 = "m30";
}

elseif (($op2 == "43_02") || ($op2 == "43_03"))
{
$chain2 = "m43";
}	
else echo "error";	

switch ($page)
{
case (($page == $c) && ($chain1 == "m43"));
$option1 = $op1;
$option2 = $op2;
break;
case (($page == $c) && ($chain2 == "m43"));
$option1 = $op2;
$option2 = $op1;
break;
default;
        $option1 = $op1;
	$option2 = $op2;
    break;
}

if ($options=="1") // calculates the possible combination
{

// outputs the results

include 'options_1.php'; // type the amount of possible chains in here ie options_3 options_4 etc

}

elseif ($options=="2")
{
// outputs the results

include 'options_2.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="3")
{
// outputs the results

include 'options_3.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="4")
{
// outputs the results

include 'options_4.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="5")
{
// outputs the results

include 'options_5.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="6")
{
// outputs the results

include 'options_6.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="7")
{
// outputs the results

include 'options_7.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="8")
{
// outputs the results

include 'options_8.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}


else
echo "there is an error on process_action2";


?>

Link to comment
Share on other sites

Your statements above are confusing and have no meaning. You are explaining what you need based upon someone who is working on the project (i.e. it makes sense to you but not to anyone else). Try taking a step back and explaining it to someone as if they are not working on this project.

 

The only thing I can come up with from what you have stated above is that you are probably making it a LOT harder than it needs to be. For example, you have a variable called 'options' which apparently refers to the number of options ('option1', 'option2') that are passed on the query string. That's not necessary. You can determine the options programmatically. You should instead label the options differently. If the numerical index of the options is not important, then just label all the options as 'option[]'. If the numerical index is important than name them as 'option[1]', 'option[2]'.

 

You can then determine the number of options using count($_GET['option'])

Link to comment
Share on other sites

Hello mjdamato,

 

thanks for the reply, after a good nights rest, i have found my error, i was using a wrong statement.

 

the following is what i had to create, unfortunately i still have yet to learn php functions, and only self-learned php a month ago. Next time i`ll try to explain myself much better  ;)

 

Thanks again.

 

<?php

//stage 3 places all chain sizes of one type in one variable.


if (($page == $p_m30) && ($op2 == "30_03") || ($op2 == "30_04"))
{
$option1 = $op2;
$option2 = $op1;
$option3 = $op3;
$option4 = $op4;
$option5 = $op5;
$option6 = $op6;
$option7 = $op7;
$option8 = $op8;
}

elseif (($page == $p_m43) && ($op2 == "43_03") || ($op2 == "43_04"))
{
$option1 = $op2;
$option2 = $op1;
$option3 = $op3;
$option4 = $op4;
$option5 = $op5;
$option6 = $op6;
$option7 = $op7;
$option8 = $op8;
}
else {
$option1 = $op1;
$option2 = $op2;
$option3 = $op3;
$option4 = $op4;
$option5 = $op5;
$option6 = $op6;
$option7 = $op7;
$option8 = $op8;
}	
?>

Link to comment
Share on other sites

That code is really inefficient. In all three cases options 3-8 are always associated with $op3 - $op8. So why are you defining them inside the conditionals? And the first two conditions if() and elseif() have the exact same results. So, why do you need the two?

 

I'm positive your code could be much, much simpler and you are making it harder than it should be. If you want to give a better explanation of what you are trying to accomplish and more details around the code I would be happy to help.

Link to comment
Share on other sites

Hello mjdamato, thanks for the reply, i`ll try to explain myself from start to finish.

 

 

I have a basic form with different values which represent tyre sizes.

 

Form

 

<form name="myform" action="process_action1.php" method="POST">
<select name="width" id="option">
<option SELECTED value="">Tyre Width</option>
<option value="6.5">6.5</option>
<option value="7">7</option>
<option value="7.5">7.5</option>
<option value="10">10</option>
//more options available trimmed the coding down for phpfreaks
</select> 
/ 
<select name="profile" id="option">
<option SELECTED value="00">Tyre Profile</option>
<option value="00">none</option>
<option value="9.5">9.5</option>
<option value="10.5">10.5</option>
//more options available trimmed the coding down for phpfreaks
</select>
x 
<select name="rim" id="option">
<option SELECTED value="">Rim Size</option>
<option value="10">10</option>
<option value="12">12</option>
//more options available trimmed the coding down for phpfreaks
</select>
<select name="type" id="option">
<option SELECTED value="">Tyre Type</option>
<option value="">Normal Road Tyres</option>
<option value="MS">Mud & Snow Tyres</option>
</select>
<select name="vehicle_type" id="option2">
<option SELECTED value="empty">Vehicle Type</option>
<option value="car">Car</option>
<option value="suv">4x4 / SUV</option>
<option value="wheels">Motorhome</option>
<option value="wheels">Van</option>
<option value="wheels">Truck / Coach</option>
</select>
<input type="hidden" name="page" value="<?php echo $page?>" />
<input name="continue" type="image" src="continue.png" 
alt="Continue" />
</form>

 

I then give every tyre size a representable value ie a snowchain model and size the model being the first two numbers and the size being the last two digits

I then include the values in a header redirect so that these pages can be bookmarked or forwarded to a friend so i wanted to avoid sessions and have static url`s

 

The first switch has about 20 possible page combinations i have reduced it to make reading the code easier

 

This page has 11000 lines of coding ie a tyre size represent different possible combinations.

 

 

process_action1.php

<?php
$width = $_POST["width"]; 
$profile = $_POST["profile"];  
$rim = $_POST["rim"]; 
$type = $_POST["type"]; 
$vehicle_type = $_POST["vehicle_type"];
$page = $_POST["page"];

switch ($page)
{

case ($page == "Cars+Snow+Chains");
$pcar = "Cars+Snow+Chains";	
break;


case ($page == "Weissenfels+Clack+and+Go");
$pm43 = "Weissenfels+Clack+and+Go";
break;


case ($page == "Weissenfels+WeissTech+Tecna");
$pm30 = "Weissenfels+WeissTech+Tecna";
break;

//more options available trimmed the coding down for phpfreaks

 default;
        echo 'You did not come from the correct page';
    break;	

}

$tyre = $width . "_" . $profile . "_" . $rim . "" . $type; // catches full tyre size

switch($tyre . "_" . $vehicle_type . "" . $page)
{

case ($tyre . '_empty' . $page); //
	header('Location: /snowchains/result/retry.php?error=v_t');  

    break;
//--------------------CASE BREAKER-------------------------
case ('145_00_10_car' . $pcar); //
case ('145_00_10_car' . $pm30); //
case ('145_00_10_car' . $pm43); //	
	header('Location: /snowchains/result/index.php?page='. $page .'&tyre='. $tyre .'&option1=30_01&option2=43_01&v_t='. $vehicle_type .'&options=2');  

    break;
// IF ABOVE IN CASE BREAKER FAILS THIS WILL EXECUTE
case ('145_00_10_car' . $page); //

	header('Location: /snowchains/result/index.php?info=yes&page='. $page .'&tyre='. $tyre .'&option1=30_01&option2=43_01&v_t='. $vehicle_type .'&options=2');  

    break;	
//--------------------CASE BREAKER-------------------------	
case ('195_60_14_car' . $pcar); //
case ('195_60_14_car' . $pwsk); //
case ('195_60_14_car' . $pp); //
case ('195_60_14_car' . $pm30); //
case ('195_60_14_car' . $pm43); //
case ('195_60_14_car' . $pm44); //
case ('195_60_14_car' . $pck7); //
case ('195_60_14_car' . $pf); //
case ('195_60_14_car' . $pk); //	
	header('Location: /snowchains/result/index.php?page='. $page .'&tyre='. $tyre .'&option1=p60&option2=76&option3=30_06&option4=43_06&option5=44_06&option6=ck7_060&option7=f10&option8=k11&v_t='. $vehicle_type .'&options=8');  

break;
// IF ABOVE IN CASE BREAKER FAILS THIS WILL EXECUTE
case ('195_60_14_car' . $page); //

	header('Location: /snowchains/result/index.php?info=yes&page='. $page .'&tyre='. $tyre .'&option1=p60&option2=76&option3=30_06&option4=43_06&option5=44_06&option6=ck7_060&option7=f10&option8=k11&v_t='. $vehicle_type .'&options=8');  

    break;
//--------------------CASE BREAKER-------------------------

//more options available trimmed the coding down for phpfreaks

 

Then on the index page i include process_action2.php in the index file

 

<?php

//stage 1

$tyre = $_GET['tyre'];  // finds the tyre size
$op1 = $_GET['option1'];  // finds the first chain size if applicable
$op2 = $_GET['option2'];  // finds the second chain size if applicable
$op3 = $_GET['option3'];  // finds the third chain size if applicable
$op4 = $_GET['option4'];  // finds the fourth chain size if applicable
$op5 = $_GET['option5'];  // finds the fith chain size if applicable
$op6 = $_GET['option6'];  // finds the sixth chain size if applicable
$op7 = $_GET['option7'];  // finds the seventh chain size if applicable
$op8 = $_GET['option8'];  // finds the eighth chain size if applicable
$options = $_GET['options'];
$page = $_GET['page'];
$error = $_GET['info'];
$vehicle_type = $_GET['v_t']; // finds the vehicle type
?>
<?php
//stage 2

$p_wsk = "Weissenfels WeissSock Snowsock";
$p_wsk_suv = "Weissenfels WeissSock Snowsock SUV and 4x4 and Vans";
$p_p = "Weissenfels Power Everest";
$p_m30 = "Weissenfels WeissTech Tecna";
$p_m43 = "Weissenfels Clack and Go";
$p_m44 = "Weissenfels Clack and Go Pro Tech";
$p_ck7 = "Thule CK7";
$p_q = "Weissenfels Quattro";
$p_q_suv = "Weissenfels Quattro SUV and 4x4 and Vans";
$p_k = "Thule K-Summit";
$p_k_xl = "Thule K-Summit XL";
$p_k_xxl = "Thule K-Summit XXL";
$p_px = "Weissenfels Power-X Everest 4x4 and Vans";
$p_rtr = "Weissenfels Rex-TR";
$p_rts = "Weissenfels SUV Clack and Go";
?>

 

Underneath the same file ie process_action2.php

 

Which reorders the options depending on the page and on the chain type (first two digits) and chain size (last two digits)

At the moment i have written 6000 lines of coding which reorders these options.

I did try to the following but could not get it to work for some reason.

 

<?php

if (($op2 == "30_01") || ($op2 == "30_01a") || ($op2 == "30_02") || ($op2 == "30_03") | ) //and this has 10 more options

{ $m30 = $op2}

elseif (($op3 == "30_01") || ($op2 == "30_01a") || ($op2 == "30_02") || ($op2 == "30_03") | ) //and this has 10 more options

{ $m30 = $op3}

?>

 

with the above code then i can simplify the below code which will be

 

if (($page == $p_m30) && ($op2 == $m30))

{

$option1 = $op2;

$option2 = $op1;

$option3 = $op3;

$option4 = $op4;

$option5 = $op5;

$option6 = $op6;

$option7 = $op7;

$option8 = $op8;

}

 

But for some reason i can not get my head around is that the code above will not work with all the tyre and chain sizes, i think it has to do if a variable has an empty value it thinks $op2 is equal to  $m30

 

 

if (($page == $p_m30) && ($op2 == "30_01"))
{
$option1 = $op2;
$option2 = $op1;
$option3 = $op3;
$option4 = $op4;
$option5 = $op5;
$option6 = $op6;
$option7 = $op7;
$option8 = $op8;
}
elseif (($page == $p_m30) && ($op2 == "30_01a"))
{
$option1 = $op2;
$option2 = $op1;
$option3 = $op3;
$option4 = $op4;
$option5 = $op5;
$option6 = $op6;
$option7 = $op7;
$option8 = $op8;
}

<?php	
if ($options=="1") // calculates the possible combination
{

// outputs the results

include 'options_1.php'; // type the amount of possible chains in here ie options_3 options_4 etc

}

elseif ($options=="2")
{
// outputs the results

include 'options_2.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

elseif ($options=="3")
{
// outputs the results

include 'options_3.php'; // type the amount of possible chains in here ie options_3 options_4 etc
}

//more options available trimmed the coding down for phpfreaks


else
echo "there is an error on process_action2";


?>

 

In the options_3 include i have the following code which displays the first stage of the information.

 

<div>
  <h3>Snow Chains options for tyre size 
<?php 
$tyre_replace1 = preg_replace("/_/"," / ",$tyre,1);  
$tyre_replace2 = preg_replace("/_/"," x ",$tyre_replace1,1);  
$tyre_replace3 = preg_replace("/ \/ 00/","",$tyre_replace2,1);  
echo $tyre_replace3 ;
?></h3></div>
<div id="liquid1" class="liquid">
<span class="previous"></span>
<div class="wrapper">
     <ul class="ui-tabs-nav" id="featured">
        <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-1"><a href="#fragment-1">
            <img src="
            
<?php include($_SERVER['DOCUMENT_ROOT'] ."snowchains/result/options_operators/img_operator_option1.php"); #OPERATOR INCLUDE ?>

            " alt="" />
            <br />
            <span>
£ <?php include($_SERVER['DOCUMENT_ROOT'] ."snowchains/result/options_operators/price_operator_option1.php"); #OPERATOR INCLUDE ?><br />                      
<?php include($_SERVER['DOCUMENT_ROOT'] ."snowchains/result/options_operators/txt_operator_option1.php"); #OPERATOR INCLUDE ?>
            
            </span></a></li>
            

        
      </ul>
</div>
<span class="next"></span>
</div>
<?php
$page_stringreplace = str_replace("+"," ",$page);
?>
<?php
if ($error == "yes")
{
echo '<div class="error-message"><img src="error.gif"/>';	
echo ' Unfortunatly the selected tyre size is not available in ';
echo $page_stringreplace;
echo ', we do have the following chains available</div>';
}
else
echo "";
?>
<!-- First Content -->
    <div id="fragment-1" class="ui-tabs-panel" style="">
<?php include($_SERVER['DOCUMENT_ROOT'] ."snowchains/result/options_operators/inc_operator_option1.php"); #OPERATOR INCLUDE ?>
    </div>

 

Here are the seperate include files which displays the img, price, txt and inc operator_option files

 

img

<?php 


		if (($option1 == "p30") || ($option1 == "p40") || ($option1 == "p50") || ($option1 == "p60") || ($option1 == "p70") || ($option1 == "p80") || ($option1 == "p90") || ($option1 == "p100")) // checks what is there
		{
		// outputs the results
		echo "images/power_small.jpg";
		}

		elseif (($option1 == "69") || ($option1 == "71") || ($option1 == "73") || ($option1 == "74") || ($option1 == "76") || ($option1 == "77") || ($option1 == "79") || ($option1 == "80") || ($option1 == "81") || ($option1 == "83") || ($option1 == "85") || ($option1 == "87") || ($option1 == "93")) // checks what is there
		{
		// outputs the results
		echo "images/weisssock_small.jpg";
		}

		//more options available trimmed the coding down for phpfreaks
		// outputs the results
		echo "images/rts_small.jpg";
		}




		else
		{echo "images/error.jpg";}


		?>

 

 

price operator

<?php 


if ($option1 == "p30") {	echo $price_new_p30;}
elseif ($option1 == "p40") {	echo $price_new_p40;}
elseif ($option1 == "p50") {	echo $price_new_p50;}
elseif ($option1 == "p60") {	echo $price_new_p60;}
elseif ($option1 == "p70") {	echo $price_new_p70;}
elseif ($option1 == "p80") {	echo $price_new_p80;}
elseif ($option1 == "p90") {	echo $price_new_p90;}
elseif ($option1 == "p100") {	echo $price_new_p100;}

elseif ($option1 == "69") {	echo $price_new_wsk69;}
elseif ($option1 == "71") {	echo $price_new_wsk71;}
elseif ($option1 == "73") {	echo $price_new_wsk73;}
elseif ($option1 == "74") {	echo $price_new_wsk74;}
elseif ($option1 == "76") {	echo $price_new_wsk76;}
elseif ($option1 == "77") {	echo $price_new_wsk77;}
elseif ($option1 == "79") {	echo $price_new_wsk79;}
elseif ($option1 == "80") {	echo $price_new_wsk80;}
elseif ($option1 == "81") {	echo $price_new_wsk81;}
elseif ($option1 == "83") {	echo $price_new_wsk83;}
elseif ($option1 == "85") {	echo $price_new_wsk85;}
elseif ($option1 == "87") {	echo $price_new_wsk87;}
elseif ($option1 == "93") {	echo $price_new_wsk93;}

//more options available trimmed the coding down for phpfreaks




		else
		{echo "an error happend on inc_operator_option";}


		?>

 

txt operator

<?php 


		if (($option1 == "p30") || ($option1 == "p40") || ($option1 == "p50") || ($option1 == "p60") || ($option1 == "p70") || ($option1 == "p80") || ($option1 == "p90") || ($option1 == "p100")) // checks what is there
		{
		// outputs the results
		echo "Weissenfels<br />Everest";
		}

		elseif (($option1 == "69") || ($option1 == "71") || ($option1 == "73") || ($option1 == "74") || ($option1 == "76") || ($option1 == "77") || ($option1 == "79") || ($option1 == "80") || ($option1 == "81") || ($option1 == "83") || ($option1 == "85") || ($option1 == "87") || ($option1 == "93")) // checks what is there
		{
		// outputs the results
		echo "Weissenfels<br />WeissSock";
		}

		//more options available trimmed the coding down for phpfreaks
{
		// outputs the results
		echo "Weissenfels<br />Clack and Go SUV";
		}




		else
		{echo "images/error.jpg";}


		?>

 

inc operator

 

<?php 


if ($option1 == "p30") {	include "products/p30.php"	;}
elseif ($option1 == "p40") {	include "products/p40.php"	;}
elseif ($option1 == "p50") {	include "products/p50.php"	;}
elseif ($option1 == "p60") {	include "products/p60.php"	;}
elseif ($option1 == "p70") {	include "products/p70.php"	;}
elseif ($option1 == "p80") {	include "products/p80.php"	;}
elseif ($option1 == "p90") {	include "products/p90.php"	;}
elseif ($option1 == "p100") {	include "products/p100.php"	;}

elseif ($option1 == "69") {	include "products/wsk69.php"	;}
elseif ($option1 == "71") {	include "products/wsk71.php"	;}
elseif ($option1 == "73") {	include "products/wsk73.php"	;}
elseif ($option1 == "74") {	include "products/wsk74.php"	;}
elseif ($option1 == "76") {	include "products/wsk76.php"	;}
elseif ($option1 == "77") {	include "products/wsk77.php"	;}
elseif ($option1 == "79") {	include "products/wsk79.php"	;}
elseif ($option1 == "80") {	include "products/wsk80.php"	;}
elseif ($option1 == "81") {	include "products/wsk81.php"	;}
elseif ($option1 == "83") {	include "products/wsk83.php"	;}
elseif ($option1 == "85") {	include "products/wsk85.php"	;}
elseif ($option1 == "87") {	include "products/wsk87.php"	;}
elseif ($option1 == "93") {	include "products/wsk93.php"	;}

//more options available trimmed the coding down for phpfreaks




		else
		{echo "an error happend on inc_operator_option";}


		?>

 

 

Hopefully this makes sense, again i`m very new to coding, so some actions might seem controversial or that i have created more work, but this is how i was able to create it with basic knowledge.

 

Thank you again!

Link to comment
Share on other sites

You have files with 1,000 and 6,000 lines of code?! You definitely need to learn how to use a database. I once took a postscript program someone wrote similar to what you are doing and reduced it to less than 5% of it's original size. I could probably do the same with your file. I could offer suggestions to considerably reduce your code bloat in it's current format, but it is really the wrong process to begin with. Your "logic" should not be so dependent on the data. Think about the effort needed when you need to add/remove products. Ugh! I'd hat to try and parse through thousands of lines of code just to find/create all those if() statements.

 

But, I will give you some advice:

 

First off, don't give your variables names like $option1. What does that mean? Give your variables meaningful names so that you, or anyone else, can determine what the value represents and, preferable, the type of value (text, number, array, etc.). E.g. $tyreSize.

 

Second, instead of using a bunch of ifelse() statemetns, you should be using a switch() statement - or another process entirely. Let's take the last code block and the third code blocks for an example. In both of those you have a series of if/ifelse statements to define price and operator files. Why are you separating them? Why not:

if($option1 == "p30")
{
    echo $price_new_p30;
    include "products/p30.php";
    //Other parameters for this option
}
elseif($option1 == "p40")
{
    echo $price_new_p30;
    include "products/p40.php";
    //Other parameters for this option
}

 

Ok, but as I stated previously all those if/else statemetns are redundant. One possible solution would be to use data arrays.

//Define an array for all the properties for each option$tyreOptions = array(
    'p30' => array(
        'price' => 45.95,
        'product_page' => 'products/p30.php'
    ),
    'p30' => array(
        'price' => 52.95,
        'product_page' => 'products/p40.php'
    )
    //Etc for all other products. Include all details for the options
)

//Then, check if option is in defined list. If so, get the properties and react
if(in_array($option1, $tyreOptions))
{
    $options = $tyreOptions[$option1];
    echo $options['price'];
    include($options['product_page']);
    //Etc for other actions based on the selected option
}
else
{
    //Option does not exist, provide error handling
}

 

Using that type of flow, the "logic" on your page is not dependent upon the data. In fact, you could put the data array into a separate file. That way when you need to add/remove products you only need to modify that file. But, the above is just a workaround to the solution you should be using - a database.

Link to comment
Share on other sites

Hello mjdamato,

 

 

I`m just starting to learn about mysql, i now know how to retrieve the information back to the website. Could you recommend a book that teaches you the statements that are required to for example reorder the results depending on variables from which page they come and the following products by price.

 

I thank you for your explanation an have jump started learning about mysql, i think the hardest part is the statement algorithms..

 

There is always room for more information :D

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

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.