Dėkoju - pabandysiu.

Like naudoju todėl, kad sąskaitos, bei mokėjimai įvedami naudojant pilną datą pvz.: 2012.12.12

O atrinkti reikia tik mėnesį.

Pamiršau paminėti, kad užklausa turi gražinti ir tuos klientus, kurie praėjusį mėnesį nepadarė nei vienos įmokos.

Sveiki,

Turime mokėjimų sistemos DB, kurią sudaro 3 lentelės:

Klientai (kaupiama informacija apie klientus)

Sąskaitos (išrašomos sąskaitos kiekvieną mėnesį)

Mokėjimai (importuojami banko išrašai)

Reikia vienoje lentelėje atvaizduoti laukus:

Mokėtojo kodas, Vardas, Pavardė, Abonentinis mokestis, įmokos už praėjusį mėnesį SUMOJE, praeito mėnesio sąskaitos suma.

Darom užklausą:

 $menesiukas=date("Y-m", strtotime("-1 month") );   
                                        
        $sql="SELECT klientai.mok_kod, klientai.vard , klientai.pav ,
                  klientai.ab_mok,SUM(mokejimai.suma) AS sumoketa, saskaitos.suma
                  FROM klientai 
                  JOIN saskaitos ON klientai.mok_kod = saskaitos.mok_kod
                  JOIN mokejimai ON klientai.mok_kod = mokejimai.mok_kod
                  WHERE saskaitos.data LIKE '$menesiukas%' 
                  GROUP BY klientai.mok_kod
                  ORDER BY klientai.mok_kod
                  
";

Gražina visą teisingą informaciją išskyrus apmokėjimus už praėjusį mėnesį sumoje.

Tai yra tikriausiai todėl, kad nenurodytas įmokų mėnesis užklausoje, tačiau jeigu padarome taip:

 $menesiukas=date("Y-m", strtotime("-1 month") );   
                                        
        $sql="SELECT klientai.mok_kod, klientai.vard , klientai.pav ,
                  klientai.ab_mok,SUM(mokejimai.suma) AS sumoketa, saskaitos.suma
                  FROM klientai 
                  JOIN saskaitos ON klientai.mok_kod = saskaitos.mok_kod
                  JOIN mokejimai ON klientai.mok_kod = mokejimai.mok_kod
                  WHERE saskaitos.data LIKE '$menesiukas%' 
                  AND mokejimai.data LIKE '$menesiukas%'   
                  GROUP BY klientai.mok_kod
                  ORDER BY klientai.mok_kod
                  
";

Negauname norimo rezultato.

Kaip pakoreguoti užklausą, kad šalia kitų laukų būtų gautą įmokų už praėjusį mėnesį su kiekvienu klientu.


Iš anksto dėkoju už pagalbą.

Nezinau kaip teisingai sudelioti.
Jeigu naudoju operatoriu AND tarp kiekvienos dienos, paduodant tuscia reiksme uzklausos rezultatas = o

Sveiki,

Turiu lentele:
0b_nr
mar_nr
ob_pav
ob_g
ob_m
sl_nuo
p
a
t
k
pt
s
se
i

Su lenteles iterpimu viskas tvarkoje.

Taciau kuriant filtra ir darant uzklausa iskyla didele problema.
Visu pirma marsrutas turi buti atrenkamas pagal mar_nr lauka.
Viskas kaip ir tvarkoje, naudoju uzklausa:
$uzklausa = "SELECT  * FROM objektai where  mar_nr = '$kriterijus2' ";

Isveda teisingus duomenis.

Taciau man to neuztenka.

Lenteles laukai: p,a,t,k,pt,s,se,i atitinka savaites dienas, kuriomis lankomas objektas.

jeigu reiktu atrinkti pagal viena diena, problemos kaip ir nebutu panaudojus AND, bet mano atveju filtre kartais zymima viena diena (naudojant checbox) kartais trys ar keturios.
Pazymejus kelis checbox'us uzklausos teingumas issikreipia, nes paduodamos tusios reiksmes i uzklausa.
Realiai lenteleje tuscios reiksmes galimos.

Kaip susukti uzklausa, kad parinkus viena arba daugiau dienu duomenys butu atrenkami teisingai ?

Is anskto dekoju uz pagalba.

6

(6 replies, posted in PHP)

minde wrote:

Gali naudoti, bet nerekomenduojama. Naudojant reikia apskliausti atgalinėmis kabutėmis. šita informacija laisvai prieinama dokumentacijoje.

Dekoju, kad uzvedei ant kelio.
Pakeitus laukus is skaiciu i raides problema issisprende.

Sekmes

7

(6 replies, posted in PHP)

minde wrote:

Taip, kam tau tas klaidos numeris, jeigu nežinai ką su juo daryt. Pilną klaidos pranešimą gausi per mysql_error() funkciją.

Kitą vertus iš karto matosi, kad stulpelių pavadininams naudoji skaičius...

Klausimas:

Ar galima naudoti stulpeliu vardams naudoti skaicius ?

As juos naudojus nes man taip patogiau.

Jeigu iterpimui naudoju phpmyadmin arba mysql konsolę - viskas ok.

8

(6 replies, posted in PHP)

Zinau kokia funkcija iskviecia klaida.

rezultatas:

Klaida u?klausoje: INSERT INTO objektai (ob_nr, mar_nr, ob_pav, ob_g, ob_m, sl_nuo,1, 2, 3, 4, 5, 6, 7, i) VALUES ('PB2233','M1', 'Kazkas kazkur kazkada', 'Pievu 15-4', 'Kaunas', '15:00','1', '','','','','6','7','8'). You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1, 2, 3, 4, 5, 6, 7, i) VALUES ('PB2233','M1', 'Kazkas kazkur kazkada', 'Pievu' at line 1

9

(6 replies, posted in PHP)

Sveiki.

Kankinuosi visą dieną ir niekaip neišlukštenu problemos.

Esme tokia:

Yra forma:

echo "<form name=lll action=";echo $_SERVER['PHP_SELF'];echo " method=post>

<b>Objekto Nr.:&nbsp</b><input type=text name=ob_nr size=10><br><br>

<b>Maršruto Nr.:</b>&nbsp<select size=1 name=mar_nr>
  <option value=M1>M1</option>
   <option value=M2>M2</option>
    <option value=M3>M3</option>
     <option value=M4>M4</option>
</select><br><br>

<b>Objekto pavadinimas:&nbsp</b><input type=text name=ob_pav size=45><br><br>
<b>Objekto gatvė:&nbsp</b><input type=text name=ob_g size=30><br><br>
<b>Objekto miestas:&nbsp</b><input type=text name=ob_m><br><br>
<b>Laikas:&nbsp</b><input type=text name=laikas size=10><br><br>
<b>Savaitės dienos</b>:<br><br>
<b>Pirmadienis:&nbsp</b><input type=checkbox name=p value=1>&nbsp;&nbsp;
<b>Antradienis:&nbsp</b><input type=checkbox name=a value=2>&nbsp;&nbsp;
<b>Trečiadienis:&nbsp</b><input type=checkbox name=t value=3 >&nbsp;&nbsp;
<b>Ketirtadienis:&nbsp</b><input type=checkbox name=k value=4><br><br>
<b>Penktadienis:&nbsp</b><input type=checkbox name=pt value=5 > &nbsp;&nbsp;
<b>šeštadienis:&nbsp</b><input type=checkbox name=s value=6> &nbsp;&nbsp;
<b>Sekmadienis:&nbsp</b><input type=checkbox name=se value=7 >&nbsp;&nbsp;
<b>Iškvietimas:&nbsp</b><input type=checkbox name=isk value=8 >&nbsp;&nbsp;
<input type=submit name = Submit value=Patvirtinti
</form>";


ir yra uzklausa:

$ob_nr=$_POST['ob_nr'];
$mar_nr=$_POST['mar_nr'];
$ob_pav=$_POST['ob_pav'];
$ob_g=$_POST['ob_g'];
$ob_m=$_POST['ob_m'];
$laikas=$_POST['laikas'];
$p=$_POST['p'];
$a=$_POST['a'];
$t=$_POST['t'];
$k=$_POST['k'];
$pt=$_POST['pt'];
$s=$_POST['s'];
$se=$_POST['se'];
$isk=$_POST['isk'];


$uzklausa = "INSERT INTO objektai (ob_nr, mar_nr, ob_pav, ob_g, ob_m, sl_nuo,1, 2, 3, 4, 5, 6, 7, i)  VALUES ('$ob_nr','$mar_nr',
'$ob_pav', '$ob_g', '$ob_m', '$laikas','$p', '$a','$t','$k','$pt','$s','$se','$isk')";


Jeigu nenaudoju checkbox, duomenys įterpiami korektiškai, tačiau su checkbox gaunu užklausos klaidą.

Atspausdinus užkalusą viskas atrodo tvarkingai (mano nuomone) :

INSERT INTO objektai (ob_nr, mar_nr, ob_pav, ob_g, ob_m, sl_nuo,1, 2, 3, 4, 5, 6, 7, i) VALUES ('PB2233','M1', 'Kazkas kazkur kazkada', 'Pievu 15-4', 'Kaunas', '15:00','1', '2','3','4','5','6','7','8')

$rezultatas = mysql_query($uzklausa) or die ("Klaida u?klausoje: $uzklausa. ".mysql_errno());

Isbandziau n budu, ir niekaip.


Gal turite minčių padėsenčių iššspręsti mano problemą.


Dekoju