webForumDet fria alternativet

Random

4 svar · 339 visningar · startad av emton

emtonMedlem sedan juni 200589 inlägg
#1

Jag ska få till att ha en rullande ruta som hämtar ut en stuga i taget ur databasen och visar några raders information. Själva rullandet av rutan sker med javascript men hur får jag slumpat in en stuga i taget här.
Har knåpat lite men är inget vidare på detta så om någon känner sig manad att hjälpa vore det jättebra. :)
Här är koden för hur det ser ut och vad som ska in.

<div id="random-cabins">

	<h2></h2>

	<ul>
		<?php foreach (Cabins::getRandom() 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>

				<dl>
					<dt>Antal bäddar</dt>
					<dd><?php# echo $cabin['beds']; ?></dd>
					<dt>Boendeyta</dt>
					<dd><?php# echo $cabin['sqm']; ?> kvm</dd>
					<dt>Antal rum</dt>
					<dd><?php# echo $cabin['rooms']; ?></dd>
				</dl>
			</li>
		<?php } ?>	
	</ul>

</div>

Denna koden ligger i cabins och ska hämta ut data ur databasen.

public static function getRandom () {

		$sql = "SELECT * FROM cabins ORDER BY RAND()LIMIT 6";
			$sql_result = mysql_query($sql) or die ("Query error!");

			while ($row = mysql_fetch_array($sql_result)){
				return array(
					'cabins_id'				=> $row['cabin_id'],
					'title'					=> $row["title"],
					'beds'					=> $row['beds'],
					'sqm'					=> $row['sqm'],
					'rooms'					=> $row['rooms']
				);
				
			}
		}

Vet inte om jag är helt ute och cyklar eller vad jag gör för fel. Som det är nu så kör den bara ut en siffra eller en bokstav för varje stuga och samma siffra eller bokstav i varje del, altså blir det siffra 1 så är det 1 rum, 1 kvm osv.

The_HulkMedlem sedan juni 20031 937 inlägg
#2

i din while-loop så har du return vilket avbryter loopen.
Du får deklarera en variabel innan while-loopen och tilldela den värdena.

public static function getRandom () {

        $sql = "SELECT * FROM cabins ORDER BY RAND()LIMIT 6";
            $sql_result = mysql_query($sql) or die ("Query error!");
            $ret = array();

            while ($row = mysql_fetch_array($sql_result)){
                $ret[] = array(
                    'cabins_id'                => $row['cabin_id'],
                    'title'                    => $row["title"],
                    'beds'                    => $row['beds'],
                    'sqm'                    => $row['sqm'],
                    'rooms'                    => $row['rooms']
                );
                
            }
        }
emtonMedlem sedan juni 200589 inlägg
#3

Tack för hjälp, men tyvärr så funkar det inte. Fick felmeddelandet "Warning: Invalid argument supplied for foreach() ".

The_HulkMedlem sedan juni 20031 937 inlägg
#4

du måste även returnera $ret efter din while-loop.

public static function getRandom () {

        $sql = "SELECT * FROM cabins ORDER BY RAND()LIMIT 6";
            $sql_result = mysql_query($sql) or die ("Query error!");
            $ret = array();

            while ($row = mysql_fetch_array($sql_result)){
                $ret[] = array(
                    'cabins_id'                => $row['cabin_id'],
                    'title'                    => $row["title"],
                    'beds'                    => $row['beds'],
                    'sqm'                    => $row['sqm'],
                    'rooms'                    => $row['rooms']
                );
                
            }
            return $ret;
        }

Blev lurad av din indentering, trodde inte du visade hela funktionen.

emtonMedlem sedan juni 200589 inlägg
#5

Tack, du är veckans pärla!!

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb