webForumDet fria alternativet
Logga in / Bli medlem

Random

PHP

4 svar · 339 visningar · startad av emton

Medlem sedan juni 200589 inlägg
Frågan#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.

Medlem sedan juni 20031 837 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']
                );
                
            }
        }
Medlem 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() ".

Medlem sedan juni 20031 837 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.

Medlem sedan juni 200589 inlägg
#5

Tack, du är veckans pärla!!

258 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)