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:
  1. $sql_1 = "SELECT * FROM naptar WHERE ev='" . $ev . "' honap='" . $honap . "' nap='" . $nap . "'";  
  2.                                   
  3. if (@mysql_num_rows(mysql_query($sql_1))>=1)  
  4.     {  
  5.         $foglalt = true;  
  6.     }  
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:
  1. $sql_1 = mysql_query("SELECT foglalt FROM naptar WHERE ev='$ev' AND honap='$honap' AND nap='$nap'");  
  2.   
  3. if(@mysql_num_rows($sql_1)>0)  
  4.     {  
  5.         $foglalt = true;  
  6.     }  
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
  1. for($szam = $ma$szam < $x_honappal_kesobb ; $szam = mktime(0,0,0,date("m",$szam)+1,date("d",$szam),date("Y",$szam)))  
  2.     {  
  3.                       
  4.         $ciklus_ev = date("Y",$szam);  
  5.         $ciklus_honap = date("m",$szam);  
  6.                                   
  7.         $mai_nap = 01;  
  8.         $mai_honap = $ciklus_honap;   
  9.         $mai_ev = $ciklus_ev;  
  10.                           
  11.         $elso_nap = mktime(0,0,0,$mai_honap, 1, $mai_ev);   
  12.   
  13.         $honap_neve = date('F'$elso_nap);  
  14.                           
  15.         $nap_neve = date('D'$elso_nap);   
  16.   
  17.         switch($nap_neve)  
  18.             {  
  19.                 case "Mon"$ures = 0; break;   
  20.                 case "Tue"$ures = 1; break;   
  21.                 case "Wed"$ures = 2; break;   
  22.                 case "Thu"$ures = 3; break;   
  23.                 case "Fri"$ures = 4; break;   
  24.                 case "Sat"$ures = 5; break;   
  25.                 case "Sun"$ures = 6; break;   
  26.             }  
  27.   
  28.         $napszam = cal_days_in_month(0, $mai_honap$mai_ev);  
  29.   
  30.         echo "<table border=1 width=294>";  
  31.         echo "<tr><th colspan=7>$honap_neve $mai_ev</th></tr>";  
  32.         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>";  
  33.   
  34.         $napok_a_heten = 1;  
  35.   
  36.         echo "<tr>";  
  37.   
  38.         while ( $ures > 0 )   
  39.             {  
  40.                 echo "<td></td>";   
  41.                 $ures--;   
  42.                 $napok_a_heten++;  
  43.             }   
  44.                               
  45.         $nap_szama = 1;  
  46.                           
  47.         $csatlakozas = mysql_connect($adatbazis_helye,$adatbazis_felhasznalonev,$adatbazis_jelszo);  
  48.         if (!$csatlakozas)  
  49.             {  
  50.                 die('Sikertelen csatlakozás: ' . mysql_error());  
  51.             }  
  52.   
  53.         mysql_select_db($adatbazis_neve$csatlakozas);  
  54.                           
  55.         while ( $nap_szama <= $napszam )   
  56.             {  
  57.                 $ev = $mai_ev;  
  58.                 $honap = $mai_honap;  
  59.                 $nap = $nap_szama;  
  60.                 $foglalt = false;  
  61.                                   
  62.                 $sql_1 = mysql_query("SELECT foglalt FROM naptar WHERE ev='$ev' AND honap='$honap' AND nap='$nap'");  
  63.                 if(mysql_num_rows($sql_1)>0)  
  64.                     {  
  65.                         $foglalt = true;  
  66.                     }  
  67.   
  68.                 if($foglalt == true)  
  69.                     {  
  70.                         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>";   
  71.                     }  
  72.                     else  
  73.                         {  
  74.                             echo "<td><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=foglalas'>$nap_szama</a></td>";  
  75.                         }  
  76.                                           
  77.                 $nap_szama++;   
  78.                 $napok_a_heten++;  
  79.   
  80.                 if ($napok_a_heten > 7)  
  81.                     {  
  82.                         echo "</tr><tr>";  
  83.                         $napok_a_heten = 1;  
  84.                     }  
  85.                                       
  86.                 $foglalt = false;  
  87.             }  
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?
  1. if($foglalt == true)    
  2. {    
  3.     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>";     
  4. }    
  5. else    
  6. {    
  7.     echo "<td><a href='foglalas.php?ev=$mai_ev&honap=$mai_honap&nap=$nap_szama&akcio=foglalas'>$nap_szama</a></td>";    
  8. }    
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.