ugrás a tartalomhoz

Létezik-e a sor az adatbázisban?

fabian.attila · 2013. Aug. 6. (K), 18.03
Sziasztok!
Sajnos elakadtam egy program készítése közben, ezért kérem a segítségeteket, sajnos Google-val most nem jártam sikerrel.

A helyzet a következő: van egy naptár programom, ami egyesével lépked végig a napokon, és ellenőrzi, hogy az adatbázisban szerepel-e az adott nap. Ha szerepel, akkor mondjuk a szöveg színe változzon meg.

Ahova jutottam, de nem csinál semmit:

$sql_1 = "SELECT * FROM naptar WHERE ev='" . $ev . "' honap='" . $honap . "' nap='" . $nap . "'";
								
if (@mysql_num_rows(mysql_query($sql_1))>=1)
	{
		$foglalt = true;
	}
Sajnos az eredetileg deklarált $foglalt változó értéke marad false-on, de nem kapok semmilyen hibaüzenetet.

Valaki tudna segíteni nekem a megoldásban?
Köszönöm, további szép napot!
 
1

Elnyomod

Poetro · 2013. Aug. 6. (K), 18.08
Mivel elnyomod, így nem is fogsz kapni hibaüzenetet. Meg jó lenne az SQL-t is megjavítani, a találati feltételeket valamivel össze kellene kötni (OR, AND).
2

Hoppá, igen, a parancsot

fabian.attila · 2013. Aug. 6. (K), 18.36
Hoppá, igen, a parancsot valóban jól benéztem, de javítva sem kapok semmit.
Hogy érted, hogy elnyomom?

(Köszi a választ!)

Szerkesztés:
Azt hiszem egyel közelebb jutottam a megoldáshoz, de még mindig nem csinál semmit:

$sql_1 = mysql_query("SELECT foglalt FROM naptar WHERE ev='$ev' AND honap='$honap' AND nap='$nap'");

if(@mysql_num_rows($sql_1)>0)
	{
		$foglalt = true;
	}
3

Hogy érted, hogy elnyomom? A

Poetro · 2013. Aug. 6. (K), 18.41
Hogy érted, hogy elnyomom?

A @ operátorral elnyomod a hibát. Így nem fog megjelenni.
4

A használta nélkül sem kapok

fabian.attila · 2013. Aug. 6. (K), 18.43
A használta nélkül sem kapok semmilyen hibaüzenetet, a fájl lefut elejétől a végégig, de a $foglalt változó értéke nem moccan el false-ról.
5

Kevés az információ

Poetro · 2013. Aug. 6. (K), 18.48
Kevés az információ, hogy tudjuk mi okozhatja, hogy nem kapsz hibaüzenetet, illetve, hogy a $foglalt értéke miért nem változik.
6

for($szam = $ma; $szam <

fabian.attila · 2013. Aug. 6. (K), 19.02

for($szam = $ma; $szam < $x_honappal_kesobb ; $szam = mktime(0,0,0,date("m",$szam)+1,date("d",$szam),date("Y",$szam)))
	{
					
		$ciklus_ev = date("Y",$szam);
		$ciklus_honap = date("m",$szam);
								
		$mai_nap = 01;
		$mai_honap = $ciklus_honap; 
		$mai_ev = $ciklus_ev;
						
		$elso_nap = mktime(0,0,0,$mai_honap, 1, $mai_ev); 

		$honap_neve = date('F', $elso_nap);
						
		$nap_neve = date('D', $elso_nap); 

		switch($nap_neve)
			{
				case "Mon": $ures = 0; break; 
				case "Tue": $ures = 1; break; 
				case "Wed": $ures = 2; break; 
				case "Thu": $ures = 3; break; 
				case "Fri": $ures = 4; break; 
				case "Sat": $ures = 5; break; 
				case "Sun": $ures = 6; break; 
			}

		$napszam = cal_days_in_month(0, $mai_honap, $mai_ev);

		echo "<table border=1 width=294>";
		echo "<tr><th colspan=7>$honap_neve $mai_ev</th></tr>";
		echo "<tr><td width=42>H</td><td width=42>K</td><td width=42>SZ</td><td width=42>CS</td><td width=42>P</td><td width=42>SZ</td><td width=42>V</td></tr>";

		$napok_a_heten = 1;

		echo "<tr>";

		while ( $ures > 0 ) 
			{
				echo "<td></td>"; 
				$ures--; 
				$napok_a_heten++;
			} 
							
		$nap_szama = 1;
						
		$csatlakozas = mysql_connect($adatbazis_helye,$adatbazis_felhasznalonev,$adatbazis_jelszo);
		if (!$csatlakozas)
			{
				die('Sikertelen csatlakozás: ' . mysql_error());
			}

		mysql_select_db($adatbazis_neve, $csatlakozas);
						
		while ( $nap_szama <= $napszam ) 
			{
				$ev = $mai_ev;
				$honap = $mai_honap;
				$nap = $nap_szama;
				$foglalt = false;
								
				$sql_1 = mysql_query("SELECT foglalt FROM naptar WHERE ev='$ev' AND honap='$honap' AND nap='$nap'");
				if(mysql_num_rows($sql_1)>0)
					{
						$foglalt = true;
					}

				if($foglalt == true)
					{
						echo "<td><div id='foglalt'><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=torles'>$nap_szama</a></div></td>"; 
					}
					else
						{
							echo "<td><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=foglalas'>$nap_szama</a></td>";
						}
										
				$nap_szama++; 
				$napok_a_heten++;

				if ($napok_a_heten > 7)
					{
						echo "</tr><tr>";
						$napok_a_heten = 1;
					}
									
				$foglalt = false;
			}
Az első (for) ciklus szépen lepörög annyiszor, amennyiszer én azt szeretném.
Az adatbázis csatlakozási adatokat a cikluson kívül kapja meg változókból.

A program lényege: egy ciklus alatt a program egy hónapot dolgoz fel, a cikluson belüli első ciklus alatt a napokat számolja ki, aholis a program ellenőrzi az adatbázisban, hogy szerepel-e az éppen kiíratásra kerülő nap, ha szerepel, akkor bekerül egy DIV tag, amivel módosítani lehet az adott cellát (piros háttere lesz).

A program lefutásának eredményeképpen a táblázat gyönyörűen kirajzolódik, minden dátum jól jelenik meg, de az adatbázisban szereplő napokat nem veszi figyelembe a program.
8

A program lényege: egy ciklus

janez · 2013. Aug. 8. (Cs), 01.47
A program lényege: egy ciklus alatt a program egy hónapot dolgoz fel, a cikluson belüli első ciklus alatt a napokat számolja ki, aholis a program ellenőrzi az adatbázisban, hogy szerepel-e az éppen kiíratásra kerülő nap, ha szerepel, akkor bekerül egy DIV tag, amivel módosítani lehet az adott cellát (piros háttere lesz).


Nem akarok benne logikai hibákat keresni, de hova raktad a $foglalt változó értékére vonatkozó hiba kereső kódot? Azaz jó helyen nézted-e, hogy változik az értéke! Pl.: 67. sorban ellenőrizted?

if($foglalt == true)  
{  
    echo "<td><div id='foglalt'><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=torles'>$nap_szama</a></div></td>";   
}  
else  
{  
    echo "<td><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=foglalas'>$nap_szama</a></td>";  
}  
Ugyanis nem feltétlen ott a hiba, a színezésed, ha jól látom html ID alapján valósítottad meg ami elve hibás megoldás, ugyan is ID-ből csak egy létezhet. Erre épülő megoldások eleve kérdéses eredményt adhatnak. Javaslom cseréld le egy class-ra, mert szerintem a színező megoldásod a hibás.