ugrás a tartalomhoz

születési dátum bevitele adatbázisba

Anonymous · 2006. Júl. 21. (P), 15.02
A kovetkezo adatok szerepelnek a HTML oldalban :

Szuletesi datum:<br />
<select name="month">
<option value="0">January</option>
<option value="1">February</option>
<option value="2">March</option>
<option value="3">April</option>
<option value="4">May</option>
<option value="5">June</option>
<option value="6">July</option>
<option value="7">August</option>
<option value="8">September</option>
<option value="9">October</option>
<option value="10">November</option>
<option value="11">December</option>
</select>
<select name="day">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>

</select><input type="text" name"year" value="YYYY" size="4" /></p><br />
Milyen formában viszem be ezeket az adatokat mySQL adatbázisba, tudnátok egy INSERT példát adni ?

Feltételezem, hogy a felhasználo a következö adatot adja meg születési dátumnak:

February-3-1985
 
1

tényleg?

tiku I tikaszvince · 2006. Júl. 21. (P), 15.29
Nem szoktam kérdésen felhúzni magam, de ez most lecsapta a biztosítékot
  • a. Minek ennyi HTML kódot behányni ide? Ha leírtad volna, hogy "van egy űrlapod, amiben van 2 select (elsőben a hónapot tudod kiválasztani, másodikban a napot, minden opció értéke a sorszáma)" szerintem nagyon sokan megértették volna elsőre!
  • Milyen adatbázis?
  • Milyen mezőben szeretnéd tárolni ezt a dátumot? Ezt az információt honnan szopjuk ki? Ha külön-külön mezőbe, akkor nem értem mi a probléma. Ha 1 db mezőben, akkor lehet DATE, DATETIME, tessék utánnanézni a használt adatbázis dokumentációjában
  • Milyen nyelven írod azt a programot, ami lefuttatja az SQL lekérdezést (amihez ugye még hozzá sem fogtunk)
  • Milyen módszerrel mozgatod az adatokat a felhsználó és a szerver között (POST/GET). Ettől függően, a válaszoldalra próbaképen kitolhatod a kapott adatokat (Pl.: PHP ban: print_r($_POST)/print_r($_GET);
  • Ha ezt már legalább egyszer is megcsináltad volna akkor láthattad volna, hogy a felhasználódtól, nem azt kapod, hogy February-3-1985, hanem a beállított értékeket.
    (pl.: PHP: array('month'=>2, 'day'=>3, 'year'=>1985))

Ha van válasz ezekre a kérdésekre, akkor talán egy soros választ is kaphatsz!

TikuVoltam
2

valasz

Anonymous · 2006. Júl. 21. (P), 15.39
leirtam, hogy mySQL-t hasznalok nezd meg jobban.
POST-al mozgatom az adatokat es PHP queryvel akarom beszurni az adatatokat
egy mezoben.
3

valasz

Anonymous · 2006. Júl. 21. (P), 15.46
Mar ami a tablat illeti, nem mindegy mi a neve? tudtal volna egy peldat adni.
Ha pedig tul hosszu a thread, gondolom azert letezik moderator a forumon, hogy editalja.
Gondolom te mikor kezdo voltal neked minden sikerult egybol :)
5

tesrmészetesen nem

tiku I tikaszvince · 2006. Júl. 21. (P), 15.56
Természetesen nem tudtam mindent, sőt még ma sem tudok mindent.
Viszont ha falba ütközöm veszem a fáradtságot és utána nézek mindennek, mielőtt egy betű segítséget is kérnék. És ha még akkor sem boldogulok, félre teszem egy kis időre (egy-két órára), majd újra próbálkozok.

Ez a probléma (t.i. hogyan tároljunk dátumot MySQL adatbázisban) tipikusan olyan, hogy egy keresővel félórát rászánva atom megoldást találhat, aki akar.

TikuVoltam
4

akkor most mi a probléma?

tiku I tikaszvince · 2006. Júl. 21. (P), 15.47
Mi a típusa annak az egy mezőnek?

Ha *CHAR akkor mi a baj?
Ha DATE/DATETIME akkor http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html

Eddig hogy próbálkoztál? Mik voltak azok amiket kipróbáltál, és elvéreztek?

TikuVoltam
6

re:

Anonymous · 2006. Júl. 21. (P), 15.59
A mezo :

birthday DATE NOT NULL

Ok amikor beirom:

INSERT into register (birthday) VALUES (????);

A VALUES-nal azokat az ertekeket szeretnem beirni amelyeket a user kivalaszt.

A honapokat peldaul a kovetkezo foeach parancsal hozom letre:

print "\n" . '<select name="year">';
foreach ($year as $key => $value) {
print "\n<option value=\"$key\">$value</option>";
}
print "\n" . '</select>';
7

mit kapsz a felhasználótól?

tiku I tikaszvince · 2006. Júl. 21. (P), 16.28
Az hogy hogyan állítod elő az űrlapot az most nem tartozik ide.
Ismételni fogom önmagam:
Írasd ki a kapott adatokat!
echo '<pre>'.print_r($_POST, true).'</pre>';
Először próbáld meg összerakni a lekérdezést!
Elolvastad amit belinkeltem?
MySQL displays DATE values in 'YYYY-MM-DD' format, but allows you to assign values to DATE columns using either strings or numbers.


Próbálkozz, próbálkozz, próbálkoz...
<ismétlés>
Eddig hogy próbálkoztál? Mik voltak azok amiket kipróbáltál, és elvéreztek?
</ismétlés>
Ez a kérdés arra vonatkozott, hogy mik voltak azok az INSERT változatok amiket kipróbáltál? Milyen formában próbáltad beszúrni azt a dátumot?

TikuVoltam
8

koszonom

Anonymous · 2006. Júl. 21. (P), 17.54
Ok, koszonom azt hiszem mukodni fog !
9

lekerdezes

Anonymous · 2006. Júl. 21. (P), 18.16
Megcsinaltam a lekerdezest a kovetkezo parancsal:
echo '<pre>'.print_r($_POST, true).'</pre>';
Elojon a kovetkezo:

[month] => 2
[day] => 1
[year] => YYYY

Na, most ezeket az ertekeket szeretnem beszurni mysql adatbazisba.
probaltam a kovetkezot:

date($month) es date('n', $month) de nem szurja be a honapot.

Ha tudnal segiteni, hogyan tudom beszurni a kivalasztott ertekeket akkor a problema meg is lenne oldva.

Koszonom es ne haragudj, hogy annyit kerdezlek.
10

mktime

jbtibor · 2006. Júl. 21. (P), 20.40
A date az aktuális dátumot adja vissza, a MySQL-be pedig soha nem fog beszúrni semmit (lásd http://php.net/date).

Neked a mktime kell (a date oldaláról egyből odajuthattál volna), az csinál számokból datetime típust. A paraméterezése annyira egyértelmű, hogy nehéz eltéveszteni.
http://hu2.php.net/manual/en/function.mktime.php

Egyébként arra sem lenne szükséged, max. ellenőrzéshez (hogy ne írjanak be érvénytelen dátumot), hiszen a MySQL elfogadja a
"YYYY-MM-DD" formátumot (ld. tiku # 15.47).
11

fraszt mktime

Anonymous · 2006. Júl. 21. (P), 21.03
Irta szerencsetlen hogy date tipusu a mezo

$datum = $_POST['year']."-".$_POST['month']."-".$_POST['day'];
$query = sprintf( "INSERT into register (birthday) VALUES ('%')", mysql_real_escape_string( $datum));
az elso sor osszefuzi a kulon valtozokban adott datumot egy stringge,
a masodik sorban pedig megcsinalja a query stringet, a mysql_real... az az sql injection elleni védelem miatt van benne (olvass utana ha nemtod mi az). A mysql datum formatuma yyyy-mm-dd de meg fogja enni az altalald hasznalt yyyy-m-d -t is.
Amugy illene ellenorizni hogy a $datum string valodi datumot tartalmaz-e, mielott beirod adatbazisba, de ez mar rad van bizva.

Erdemes lenne kicsit visszavenni ezekbol a mostanaban terjedo agressziv kommentekbol. Ha a kerdezo tenyleg annyira iritalo egyszeruen nem kell neki valaszolni :/
12

ld: első mondatom

tiku I tikaszvince · 2006. Júl. 21. (P), 21.23
Nem szoktam kérdésen felhúzni magam, de ez most lecsapta a biztosítékot


Akármerre utánnanézhetsz: nem szoktam agreszivan reagálni, és ha nagyon gáz a kérdés inkább elkerülöm a témát. Lehet hogy ma nagyon rosz napom volt, vagy ma kivételesen is sok volt az űberláma kérdés, de amikor megláttam ezt a topiknyitót eldurrant az agyam. Ezért utólag elnézést kérek.

Szerintem (és itt a weblaboron sokan mások is így gondolják) ez a fórum nem arra szolgál, hogy olyanoknak oldjunk meg teljesen alapvető feladatokat, akik még arra sem veszik a fáradtságot, hogy utánna nézzenek a probléma megoldásának, de még arra is lusták, hogy a beidézett dokumentációt elolvassák.

Az általad megírt kódot, akár hiszed, akár nem, elsőre le tudtam volna írni. DE ha ilyen alapvető kérdést látok, szándékosan nem vágom rá a választ. Sokkal inkább célravezetőnek tartom inkább a rávezetést. A tapasztalat az, hogy többet tanul az ember a megoldáshoz vezető útból (az út mellett felmerülő problémákból) mint a kész megoldásból. És ha anonim kérdezőt sikerül így végigvezetni a megoldáshoz, hátha legközelebb megpróbálja az első lépéseket egyedül megtenni...

TikuVoltam
14

Mi van?

jbtibor · 2006. Júl. 21. (P), 21.45
Ezt miért nekem írod? És mi értelme van megismételni amit már írtam?

Egyébként ha a mktime nem arra való, hogy év, hónap és napból dátumot csináljon, akkor mire?

"Erdemes lenne kicsit visszavenni ezekbol a mostanaban terjedo agressziv kommentekbol."
Máris kezdheted.
16

khm...

Anonymous · 2006. Júl. 22. (Szo), 22.32
mktime -- Egy időpont Unix időbélyegét állítja elő
és
yyyy-mm-dd != yyyy-m-d
a tobbi nem neked szolt csak altalanosan.
13

értelmezzük a részeredményeket!

tiku I tikaszvince · 2006. Júl. 21. (P), 21.36
a [month], [day], stb... eredményt tudod értelmezni?
A felhasználó ezeket az adatokat küldte neked.

Érted már, hogy a MySQL milyen formátumban várja a dátumot? a dokumentáció szerint YYYY-MM-DD formátumban. Lefordítom: 4 számjegy (év) kötőjel 2 számjegy (ez a hónap) kötőjel 2 számjegy (nap). tehát ha a February-3-1985 dátumot 1985-02-03 formátumban kell megadni.

Ha ennyi információból nem tudod összerakni akkor nem tudok többet segítni...

TikuVoltam
15

Koszonom

Anonymous · 2006. Júl. 21. (P), 22.13
Kiprobaltam a kovetkezo pelat hasznalva:

$datum = $_POST['year']."-".$_POST['month']."-".$_POST['day'];
$query = sprintf( "INSERT into register (birthday) VALUES ('%')", mysql_real_escape_string( $datum));
Mukodik !
Elnezest kerek ha kicsit sokat kerdeztem, utana neztem volna de sietnem kell, az urlap kesz kell legyen hetfore.

Ha ki szeretnem olvasni a beirt datumot mit kene csinalni ?

Peldaul ezt:
1985-02-03

valami ilyesmit ? :

$query = mysql_query("SELECT birthday FROM register WHERE username='".$_SESSION['username']."'");
$fetch = mysql_fetch_array($query);
Remelem nem hibaztam semmit, mert fejbol irtam, de gondolom a lenyeget ertitek.

Amiutan megkapom a sort mysq_fetch_array segitsegevel, fel kene bontani darabokra ?
Peldaul a honapot es a napot ugyanilyen <select> menuben szeretnem megjeleniteni de azokal az ertekekel amik adatbazisban vannak.

Koszonom !