webForumDet fria alternativet

selectboxar, php och mysql

6 svar · 541 visningar · startad av emton

emtonMedlem sedan juni 200589 inlägg
#1

Jag har några selectboxar med ett antal options i varje. Ser ut så här

<label>
				Maxpris/vecka<br/>
				<select name="price">
					<option value="">-Välj-</option>
					<option value="1000">1000 kr</option>
					<option value="2000">2000 kr</option>
					<option value="3000">3000 kr</option>
					<option value="4000">4000 kr</option>
					<option value="5000">5000 kr</option>
					<option value="6000">6000 kr</option>
					<option value="7000">7000 kr</option>
					<option value="8000">8000 kr</option>
					<option value="9000">9000 kr</option>
					<option value="10000">10000 kr</option>
				</select>
			</label>

När man valt tex 3000 så ska man få ut från databasen alla stugor som kostar mindre eller lika med 3000 kr. Detta ska sen med en array skickas vidare till en resultatsida. Får inte riktigt ihop nedanstående kod som ligger i sidan cabins.php.

class Cabins {public static function getByParams  (array $params) {	
			#om från advanced-search
			if(count($params) == 4){
				$whereStatement = "price_per_week_h  <= " . $params['price'] . " AND beds = " . $params['beds'] . 
					" AND sqm = " . $params['sqm'] . " AND (description LIKE '%" . $params['q'] . "%' OR title LIKE '%" . $params['q'] . "%')"; 
			}
			#om från simple-search
			else{
				$whereStatement = "cabins_id NOT IN (Select cabins_id from reservations where week = " . $params['week'] . ") AND price_per_week_h <= " . $params['price'] . 
					" AND beds = " . $params['beds'] . "";		
			}			
			return self::get(1, 'ASC', 0, 10000000, $whereStatement);
		}}

Här är resultatsidan

<div id="search-results">

	<h2>Sökresultat</h2>

	<ul>
		<?php foreach (Cabins::getByParams($_GET) as $cabin) { ?>
			<li>
				<h3>
					<a href="stuga.php?cabins_id=<?php echo $cabin['cabins_id']; ?>">
						<img src="img/cabins/<?php echo $cabin['cabins_id']; ?>.jpg" alt=""/> 
						<?php echo htmlspecialchars($cabin['title']); ?>
					</a>
				</h3>

				<p><?php echo htmlspecialchars($cabin['description']); ?></p>

				<dl>
					<dt>Pris</dt>
					<dd><?php echo $cabin['price']; ?> SEK</dd>
					<dt>Antal bäddar</dt>
					<dd><?php echo $cabin['num_beds']; ?></dd>
					<dt>Boendeyta</dt>
					<dd><?php echo $cabin['sqm']; ?> kvm</dd>
					<dt>Antal rum</dt>
					<dd><?php echo $cabin['num_rooms']; ?></dd>
				</dl>
			</li>
		<?php } ?>	
	</ul>

</div>

Någon som vill ge en hjälpande hand :)

MickeA.comMedlem sedan feb. 20034 528 inlägg
#2

Du får skicka med t.ex. price <= 3000 som WHERE argument till din sql fråga.

emtonMedlem sedan juni 200589 inlägg
#3

MickeA.com skrev:

Du får skicka med t.ex. price <= 3000 som WHERE argument till din sql fråga.

Fast i så fall byta ut <=3000 till något som läser av vad som är valt, eller?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#4

Du har ju inte visat så mycket kod, t.ex. hur sql frågan ställs mot databasen osv.
Därför är det omöjligt att hjälpa dig mer just nu.

emtonMedlem sedan juni 200589 inlägg
#5

MickeA.com skrev:

Du har ju inte visat så mycket kod, t.ex. hur sql frågan ställs mot databasen osv.
Därför är det omöjligt att hjälpa dig mer just nu.

Har inte satt upp någon fråga till databasen ännu, därav att den inte syns :e.
Är lite osäker på hur och var den ska in.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#6

Ehh, okej.. Hur har du tänkt när du byggt upp klassen Cabins då?

emtonMedlem sedan juni 200589 inlägg
#7

Jag har nu ändrat lite i koden så att det blir lite lättare att förstå hur det är tänkt. Jag vet dock inte hur jag ska förtydliga sql-satsen eftersom att jag har problem med den.
Att det är lite rörigt beror på att det är ett grupparbete i skolan men ingen är särskilt kunnig på området. Därför tänte jag att jag försöker få lite hjälp här. Det brukar alltid finnas bra svar här :)

127 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
125 ms — hämta tråd, inlägg och bilagor (db)