Tallennusvaiheessa kaatuu tämä homma. Mistähän voisi johtua
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 'SET tehtava='5€, tyonid=13, tunnus=134' at line 1
Warning: mysql_fetch_assoc(): .....
$k = "SELECT tunnus, tyonid, tehtava FROM $this->taulu WHERE tunnus LIKE '%{$edellinenViikko}{$haettavanViikonVuosi}' AND tyyppi = $this->tyyppi";
$t = mysql_query($k);
if(!$t){
return;
}
while($tulos = mysql_fetch_assoc($t))
{
if(!empty($tulos['tehtava'])){
$ensimmainenArvo = $tulos['tunnus'][0];
$k = sprintf("INSERT INTO SET
tehtava='%s,
tyonid=%d,
tunnus=%d,
tyyppi=%d",
htmlspecialchars($tulos['tehtava']),
intval($tulos['tyonid']),
intval($ensimmainenArvo.$tamanhetkinenViikko.$haettavanViikonVuosi),
1);
}
if(!($t = mysql_query($k))){
echo mysql_error();
}
}Olettaisin ainakin, että $this->taulu ja $this->tyyppi pitäisi olla {} sisällä.
Jos ei auta niin kokeile tulostaa $k arvo ja kerro miltä se näyttää.
$k:n arvo =
SELECT tunnus, tyonid, tehtava FROM viikkoraha WHERE tunnus LIKE '%512007' AND tyyppi = 1
seuraava kohta tunnus antaa taas arvoksi
$tulos['tunnus'] arvo on = 5€ 5€ 2€ 2€ 3€ 10€ työraha 10€ työraha
Tallennuksessa vain menee heti sitten pieleen.
Virhe on alla olevalla rivillä, pitää olla '%s',
tehtava='%s,
Se näkyi virheilmoituksessakin.
Ja htmlspecialchars on väärä funktio käytettäväksi tietokantaan menevän merkkijonon käsittelyyn. Oikea on mysql_real_escape_string.
Oho, olisi pitänyt lukea tarkemmin. Anteeksi että annoin huonon vastauksen. Näköjään tosiaan -> on ok ilman kaarisulkeitakin. Sinänsä mielestäni huonosti dokumentoitu tuo milloin kaarisulkeet on pakollisia ja milloin ei. Dokumentaatiosta löytyy kyllä esimerkkejä, mutta ei mielestäni mitään tyhjentävää kuvausta simple syntaksin rajoitteista.
Hyvä huomio = mysql_real_escape_string...
Aihe on jo aika vanha, joten et voi enää vastata siihen.