ejercicio php

chanquete
<?php
class coche
{

private $modelo;
private $color;
private $año;
private $puertas;

function __construct($mod)
{

$this->modelo=$mod;
$this->color="";
$this->año=0;
$this->puertas=0;
}

public function setMODELO($mod)
{
$this->modelo=$mod;
}
public function setCOLOR($col)
{
$this->color=$col;
}
public function setAÑO($an)
{
$this->año=$an;
}
public function setPUERTAS($pue)
{
$this->puertas=$pue;
}
public function getMARCA()
{
return $this->marca;
}
public function getMODELO()
{
return $this->modelo;
}
public function getCOLOR()
{
return $this->color;
}
public function getAÑO()
{
return $this->año;
}
public function getPUERTAS()
{
return $this->puertas;
}
public function preciototal()
{
if($this->modelo=="ibiza")
 $precio=12000;
if ($this->modelo=="toledo")
 $precio=15000;

if($this->modelo=="leon")
$precio=16000;

if($this->modelo=="c3")
	$precio=12000;
if($this->modelo=="c4")
	$precio=15000;
if($this->modelo=="c5")
	$precio=18000;


if($this->modelo=="vectra")
$precio=18000;
if($this->modelo=="astra")
$precio=16000;
if($this->modelo=="corsa")
$precio=12000;

if($this->color=="rojo")
	$precio=$precio+$precio*15/100;
	if($this->color=="negro")
		$precio=$precio+$precio*25/100;
	if($this->color=="blanco")
		$precio=$precio-$precio*10/100;
	
if($this->año<2010)
	$precio=$precio-$precio*10/100;

if($this->puertas=3)
	$precio=$precio-$precio*5/100;
else
	$precio=$precio+$precio*25/100;
return $precio;
}
}
?>

Me jode no ver el fallo. Sé que el get y el set de marca me sobran... Pero es que me da error en la variable precio.

<DOCTYPE html>
<head><title>indice</title> <meta charset="utf-8"> </head>
<body>
<form action="index.php" method="post">

<b>SELECCIONE MODELO SEAT<b><br>
<select name="modelo">
	<option></option>
  <option value="ibiza">IBIZA</option>
  <option value="toledo">TOLEDO</option>
  <option value="leon">LEON</option>
</select><br><br>

<b>SELECCIONE MODELO CITROEN<b><br>
<select name="modelo">
	<option></option>
  <option value="c3">C3</option>
  <option value="c4">C4</option>
  <option value="c5">C5</option>
</select><br><br>

<b>SELECCIONE MODELO OPEL<b><br>
<select name="modelo">
	<option></option>
  <option value="vectra">VECTRA</option>
  <option value="astra">ASTRA</option>
  <option value="corsa">CORSA</option>
</select><br><br>

<b>SELECCIONE COLOR<b><br>
<input type="radio" name="color" value="blanco" checked>blanco <br>
<input type="radio" name="color" value="negro">Negro<br>
<input type="radio" name="color" value="rojo">Rojo<br><br>

<b>SELECCIONE AÑO</B> <br>
<input type="radio" name="año" value="antes" checked>Antes de 2010<br>
<input type="radio" name="año" value="despues"> 2010 o después <br><br>

<b>SELECCIONE NÚMERO DE PUERTAS<b><br>
<select name="puertas">
  <option value="tres">TRES</option>
  <option value="cinco">CINCO</option>
</select><br><br>
<input type="submit" value="enviar">

</form>
<?php
require_once("coche.php");
If ($_POST)
{
	$objeto1=new coche ($_REQUEST['modelo']);
	$objeto1->setCOLOR($_POST['color']);
	$objeto1->setAÑO($_POST['año']);
	$objeto1->setPUERTAS($_POST['puertas']);

echo $objeto1->preciototal();
}
?>
</body>
</html>
cabron

Puedes empezar por esto: http://stackoverflow.com/help/mcve

te valdrá para este problema y todos los que tengas en el futuro

LR

#1 El problema lo tienes en que da igual lo que hagas con los 2 primeros select, solo te pilla el de opel.

O cambias el nombre de los campos, o creas un array y luego filtras para ver cual esta vacio y cual no.

Entre otras cosas, cuando tengas problemas asi, lo mas rapido es hacerte un print_r($_REQUEST) o lo que quieras comprobar y listo.

Maldercito
if($this->puertas=3)
        $precio=$precio-$precio*5/100;
else
        $precio=$precio+$precio*25/100;

Esto está mal.

El resultado del if no es un booleano, es una asignación del atributo puertas.

Pon triples iguales para comparar objetos. En PHP (no estoy seguro al 100%), si comparas con dos iguales lo que estás comparando es el tipo de objeto, es decir, si (tipo de objeto) == (tipo de objeto) devuelve un true. Yo me acostumbré a usar siempre el tres iguales.

1 respuesta
MakeaDS

#4 en php == significa que ambas variables son iguales y === que son iguales y además del mismo tipo

Usuarios habituales

  • MakeaDS
  • Maldercito
  • LR
  • cabron
  • chanquete