webForumDet fria alternativet

if funktion för antal poster

PHP

14 svar · 1 038 visningar · startad av TomasA

Medlem sedan feb. 2003173 inlägg
Frågan#1

Jag skall ha en if - else funktion gällande antalet poster i tabellen.
Hur skall då if villkoret se ut? Har testat med
<?php
if ($i <= 4)
{ ?>
<?php
}else{ print " Boka även in följande: "
?>
<?php
} ?>

Funktionen skall vara att om det är 4 poster eller mindre i urvalet skall inget printas,
men om det är mer skall raden "Boka ..." skrivas ut.
Denna funkar inte.
Jag har fem poster men ändå skrivs inte raden ut.

Medlem sedan aug. 20039 340 inlägg
#2

Kanske:

<?php
if (mysql_num_rows($result) <= 4)
{
	?>
	<?php
}else{
	print " Boka även in följande: "
	?>
	<?php

}
?>
Medlem sedan juni 200032 967 inlägg
#3

Flyttas från SQL.

Medlem sedan feb. 2003173 inlägg
#4

Bra, den fungerar nu, men så ville jag lägga till en skrivning,
när ingen post ingår i urvalet.

Jag testar med följande:

	<?php
			if (mysql_num_rows($result) == 0) 
			{	?>
			Inget planerat.
			<?php
			}else{  
			?>	
			<?php
			}	?>

Det som följer sen funkar bra men när ingen post finns i resultatet
kommer INTE texten "Inget planerat." med. :q

Testade också

			<?php
			if (mysql_num_rows($result) == 0) 
			{	?>
			Inget planerat.
			<?php
			}else{  
			?>	
			<?php
			}	?>

med samma resultat - ingen test när post saknades i utvalet.

Medlem sedan aug. 20039 340 inlägg
#5

Dina två exmpel är identiska så när som på ett tabb-tecken i början av citatet.

Så, om du prövar följande...

			<?php
			if (mysql_num_rows($result) == 0) 
			{	?>
			Inget planerat.
			<?php
			}else{  
			?>	
			Potatismos!
			<?php
			}	?>

...så skrivs inget ut, varken "Inget planerat" eller "Potatismos". Förstår jag saken rätt då?

Medlem sedan feb. 2003173 inlägg
#6

Om post finns i "$resultat" kommer Potatismos ut,
men inget om post saknas i resultatet ( inte ens p-krydda ;) )

Medlem sedan aug. 20039 340 inlägg
#7

Prova...

			<?php
			echo mysql_num_rows($result);
			if (mysql_num_rows($result) == 0) 
			{	?>
			Inget planerat.
			<?php
			}else{  
			?>	
			Potatismos!
			<?php
			}	?>

...och se vad som skrivs ut om det saknas resultat.

Medlem sedan feb. 2003173 inlägg
#8

Saknas post i resultatet kommer det ingenting.
Finns post kommer siffra för antalet poster typ 1
Sen "Potatismos"

Jag förstår inte varför inte texten inte kommer ut när poster saknas.
Skall jag hålla texten inom någon typ av echo kod?

Medlem sedan juni 20031 837 inlägg
#9

Kan du kopiera in din exakta kod (förutom användarnamn och lösenord)?
Då kan vi utesluta att det missat något i koden.

Medlem sedan feb. 2003173 inlägg
#10

Här kommer den lite utökad.

	<?php
	{	?>
	<?php	
	$i = 0;
	while ($myrow = mysql_fetch_assoc($result) AND $i <= 4) 			{	
	$event = $myrow["event"];
	$var = $myrow["var"];
	$dag = $myrow["dag"];
	$eventdag = $myrow["eventdag"];			
	$tid = $myrow["tid"];
	$om = $myrow["om"];
	?>
 
            <?php 

            if (mysql_num_rows($result) == 0)  
            {  	echo  "Inget planerat." ;
			}else{   
            ?>     
	<?php
	}	?>
	<div class="dag"><?php print $eventdag;?>&nbsp; kl: <?php print $tid;?></div>
	<div class="rubb"><?php print $event;?></div>
	<div class="teas"> Var: <?php print $var;?><br>
	<?php
		if ($myrow["om"] == "" )
		{	?>
			
	<?php
	}else{  
	?>
	<a href="kalenda.php?go=en_artikel&kalendid=<?php print $myrow["kalendid"];?>"><b>Läs mer här.</a>
	
	<?php
	}	?>
				
	<?php
	$i++;
	}	?>

OK
Allt funkar perfekt när urvalet innehåller poster,
men när urvalet är tomt kommer INTE den text
jag vill skall komma fra "Inget planerat."
:OO -
Som fler kanske ser är jag självlärd och har säkert en del
fel och onödigheter i koden men någonstans måste man ju börja.
:r

Medlem sedan juni 200032 967 inlägg
#11

Du gör själva utskriften inne i while-loopen - och while-loopen kommer du ju inte in i om du inte har något resultat. Flytta ut den ovanför.

I övrigt har du väldigt mycket onödiga <?php och ?>-taggar. De påverkar inte koden nämnvärt - förutom att den blir lite svårare att läsa.

Medlem sedan juni 200032 967 inlägg
#12

Det skulle kunna se ut något sånt här med flyttad kontroll och bortrensade php-taggar:

<?php
    {       
    $i = 0;
    if (mysql_num_rows($result) == 0)  
         echo  "Inget planerat." ;

    while ($myrow = mysql_fetch_assoc($result) AND $i <= 4)             {    
    $event = $myrow["event"];
    $var = $myrow["var"];
    $dag = $myrow["dag"];
    $eventdag = $myrow["eventdag"];            
    $tid = $myrow["tid"];
    $om = $myrow["om"];
    ?>
    <div class="dag"><?php print $eventdag;?>&nbsp; kl: <?php print $tid;?></div>
    <div class="rubb"><?php print $event;?></div>
    <div class="teas"> Var: <?php print $var;?><br>
    <?php
        if ($myrow["om"] == "" )
        { 
            
    }else{  
    ?>
    <a href="kalenda.php?go=en_artikel&kalendid=<?php print $myrow["kalendid"];?>"><b>Läs mer här.</a>
    <?php
    }  
    $i++;
    }    ?>

Egentligen kan jag inte php - men det borde framgå vad jag menar i alla fall. :)

Medlem sedan juni 20031 837 inlägg
#13

Om du bara vill hämta ut 5 rader så är det bättre att begränsa det i SQL-fråga, det kan du göra med

SELECT * FROM minTabell LIMIT 5
Medlem sedan feb. 2003173 inlägg
#14

Stort tack. Nu funkar det kanon.
Nu förstår jag lite bättre och håller
på att rensa kod i fler filer.
Mycket hjälp fick jan när jag jämförde @nders kod med min.
Härligt!
Tack. :bire

Medlem sedan juni 200032 967 inlägg
#15

Nice, kul att hjälpa till även när det gäller språk jag själv inte riktigt hanterar. :)

Mvh

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