Внедрение Javascript в php страничку.

Боровиков

Новичок
Всем привет, В общем такая беда, решил на сайт добавить ввозможность ввода даты рождения с помощью Javascript, промучился часа полтора но никак не получилось. Хотя на примере работает, а вот в php не хочет.
Вот собственно код странички куда нужно внедрить код яваскрипта
PHP:
require_once ('incfiles/class_mainpage.php');
$mp = new mainpage();
// Блок новостей
echo $mp->news;
echo '<div class="phdr"><b>Информация</b></div>';
echo '<div class="menu"><a href="str/news.php">Архив новостей</a> (' . $mp->newscount . ')</div>';

$req = mysql_query("SELECT * FROM `gallery` where `type`='ft' ORDER BY RAND() DESC LIMIT 4; ");

while($arr = mysql_fetch_assoc($req)){

if(is_file('gallery/foto/' . $arr['name'] . '')) {
print '<a href="users/profile.php?user=' . $arr['id'] . '"><img src="gallery/temp/' . $arr['name'] . '"  alt="' . $arr['name'] . '" /></a> ';
}else{
print '<a href="users/profile.php?user=' . $arr['id'] . '"><img src="images/nofoto.gif" height="62" width="46" alt="' . $arr['name'] . '" /></a> ';
}
}
А вот собственно и сам код яваскрипта
PHP:
<script src="calendar_en.js"></script>
	<style>
	input {border:1px solid #ABABAB}
	</style>
<form action="">
<input type="text" value="dd-mm-yy" onfocus="this.select();lcs(this)" onclick="event.cancelBubble=true;this.select();lcs(this)">
<input type="text" value="dd-mm-yy" onfocus="this.select();lcs(this)" onclick="event.cancelBubble=true;this.select();lcs(this)">
<input type="submit" value="A test submit button">
</form>
Внизу креплю код файла calendar_en.js
PHP:
function getObj(objID)
{
    if (document.getElementById) {return document.getElementById(objID);}
    else if (document.all) {return document.all[objID];}
    else if (document.layers) {return document.layers[objID];}
}

function checkClick(e) {
	e?evt=e:evt=event;
	CSE=evt.target?evt.target:evt.srcElement;
	if (getObj('fc'))
		if (!isChild(CSE,getObj('fc')))
			getObj('fc').style.display='none';
}

function isChild(s,d) {
	while(s) {
		if (s==d) 
			return true;
		s=s.parentNode;
	}
	return false;
}

function Left(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function Top(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

// Calendar script
var now = new Date;
var sccd=now.getDate();
var sccm=now.getMonth();
var sccy=now.getFullYear();
var ccm=now.getMonth();
var ccy=now.getFullYear();
	 
document.write('<table id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #303030;display:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;" cellpadding=2>');
document.write('<tr style="font:bold 13px Arial"><td style="cursor:pointer;font-size:15px" onclick="csubm()">&laquo;</td><td colspan="5" id="mns" align="center"></td><td align="right" style="cursor:pointer;font-size:15px" onclick="caddm()">&raquo;</td></tr>');
document.write('<tr style="background:#FF9900;font:12px Arial;color:#FFFFFF"><td align=center>S</td><td align=center>M</td><td align=center>T</td><td align=center>W</td><td align=center>T</td><td align=center>F</td><td align=center>S</td></tr>');
for(var kk=1;kk<=6;kk++) {
	document.write('<tr>');
	for(var tt=1;tt<=7;tt++) {
		num=7 * (kk-1) - (-tt);
		document.write('<td id="v' + num + '" style="width:18px;height:18px">&nbsp;</td>');
	}
	document.write('</tr>');
}
document.write('<tr><td colspan="7" align="center" style="cursor:pointer;font:13px Arial;background:#FFC266" onclick="today()">Today: '+addnull(sccd,sccm+1,sccy)+'</td></tr>');
document.write('</table>');

document.all?document.attachEvent('onclick',checkClick):document.addEventListener('click',checkClick,false);




var updobj;
function lcs(ielem) {
	updobj=ielem;
	getObj('fc').style.left=Left(ielem);
	getObj('fc').style.top=Top(ielem)+ielem.offsetHeight;
	getObj('fc').style.display='';
	
	// First check date is valid
	curdt=ielem.value;
	curdtarr=curdt.split('-');
	isdt=true;
	for(var k=0;k<curdtarr.length;k++) {
		if (isNaN(curdtarr[k]))
			isdt=false;
	}
	if (isdt&(curdtarr.length==3)) {
		ccm=curdtarr[1]-1;
		ccy=curdtarr[2];
		prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]);
	}
	
}

function evtTgt(e)
{
	var el;
	if(e.target)el=e.target;
	else if(e.srcElement)el=e.srcElement;
	if(el.nodeType==3)el=el.parentNode; // defeat Safari bug
	return el;
}
function EvtObj(e){if(!e)e=window.event;return e;}
function cs_over(e) {
	evtTgt(EvtObj(e)).style.background='#FFEBCC';
}
function cs_out(e) {
	evtTgt(EvtObj(e)).style.background='#FFFFFF';
}
function cs_click(e) {
	updobj.value=calvalarr[evtTgt(EvtObj(e)).id.substring(1,evtTgt(EvtObj(e)).id.length)];
	getObj('fc').style.display='none';
}

var mn=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var mnn=new Array('31','28','31','30','31','30','31','31','30','31','30','31');
var mnl=new Array('31','29','31','30','31','30','31','31','30','31','30','31');
var calvalarr=new Array(42);

function f_cps(obj) {
	obj.style.background='#FFFFFF';
	obj.style.font='10px Arial';
	obj.style.color='#333333';
	obj.style.textAlign='center';
	obj.style.textDecoration='none';
	obj.style.border='1px solid #606060';
	obj.style.cursor='pointer';
}

function f_cpps(obj) {
	obj.style.background='#C4D3EA';
	obj.style.font='10px Arial';
	obj.style.color='#FF9900';
	obj.style.textAlign='center';
	obj.style.textDecoration='line-through';
	obj.style.border='1px solid #6487AE';
	obj.style.cursor='default';
}

function f_hds(obj) {
	obj.style.background='#FFF799';
	obj.style.font='bold 10px Arial';
	obj.style.color='#333333';
	obj.style.textAlign='center';
	obj.style.border='1px solid #6487AE';
	obj.style.cursor='pointer';
}

// day selected
function prepcalendar(hd,cm,cy) {
	now=new Date();
	sd=now.getDate();
	td=new Date();
	td.setDate(1);
	td.setFullYear(cy);
	td.setMonth(cm);
	cd=td.getDay();
	getObj('mns').innerHTML=mn[cm]+ ' ' + cy;
	marr=((cy%4)==0)?mnl:mnn;
	for(var d=1;d<=42;d++) {
		f_cps(getObj('v'+parseInt(d)));
		if ((d >= (cd -(-1)))&&(d<=cd-(-marr[cm])))
		{
			getObj('v'+parseInt(d)).onmouseover=cs_over;
			getObj('v'+parseInt(d)).onmouseout=cs_out;
			getObj('v'+parseInt(d)).onclick=cs_click;
			
			// if today
			if (sccm == cm && sccd == (d-cd) && sccy == cy)
				getObj('v'+parseInt(d)).style.color='#FF9900';

			getObj('v'+parseInt(d)).innerHTML=d-cd;
				
			calvalarr[d]=addnull(d-cd,cm-(-1),cy);
		}
		else {
			getObj('v'+d).innerHTML='&nbsp;';
			getObj('v'+parseInt(d)).onmouseover=null;
			getObj('v'+parseInt(d)).onmouseout=null;
			getObj('v'+parseInt(d)).onclick=null;
			getObj('v'+parseInt(d)).style.cursor='default';
			}
	}
}

prepcalendar('',ccm,ccy);

function caddm() {
	marr=((ccy%4)==0)?mnl:mnn;
	
	ccm+=1;
	if (ccm>=12) {
		ccm=0;
		ccy++;
	}
	prepcalendar('',ccm,ccy);
}

function csubm() {
	marr=((ccy%4)==0)?mnl:mnn;

	ccm-=1;
	if (ccm<0) {
		ccm=11;
		ccy--;
	}
	prepcalendar('',ccm,ccy);
}

function today() {
	updobj.value=addnull(now.getDate(),now.getMonth()+1,now.getFullYear());
	getObj('fc').style.display='none';
	prepcalendar('',sccm,sccy);
}

function addnull(d,m,y)
{
	var d0='',m0='';
	if (d<10)d0='0';
	if (m<10)m0='0';
	
	return ''+d0+d+'-'+m0+m+'-'+y;
В чем у меня проблемма?
 

Боровиков

Новичок
С этим смог разобраться, просто сделал так
PHP:
echo '<strong>Дата рождения:</strong><br/>';
    echo "<select name='day'><option>День</option>";
    $day = 1;
    while ($day <= 31) {
        echo "<option value='$day'>$day</option>";
        $day++;
    }
    echo "</select>";

    $months = array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля",
        "Августа", "Сентября", "Октября", "Ноября", "Декабря");
    echo "<select name='month'><option>Месяц</option>";
    $x = 0;
    while ($x < sizeof($months)) {
        print "<option value='" . $months[$x] . "'>" . $months[$x] . "</option>";
        $x++;
    }
    echo "</select>";

    echo "<select name='year'>
<option>Год</option>";
    $year = date("Y");
    $endyear = $year - 100;
    while ($year >= $endyear) {
        echo "<option value='$year'>$year</option>";
        $year--;
    }
    echo "</select>";
Теперь возникла другая проблемма, у меня есть база городов, рассортированная по странам, и регионам.
Как можно сделать чтоб при выборе страны шла подгрузка регионов, потом при выборе региона шла подгрузка городов?
Городов в базе около 11 тысяч.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
гуглить "динамический select ajax php", примеров масса. Даже на этом форуме темы были.
 

Боровиков

Новичок
гуглить "динамический select ajax php", примеров масса. Даже на этом форуме темы были.
Спасибо, помгло, но теперь вопрос.
Я смог добится динамическиго вывода стран, регионов и городоав, но как теперь мне зделать так чтоб ид города мог записаться в базу к пользователю?
Я уже все перепробовал, по идеи если выбрать город то в $_POST['sity'] должно внестись значение, например ид. Но этого не просходит. Вот сам файл с полностью настроенным скриптом, но почему то при выборе города в селекте он не записывает ид города в базу.
ссылка
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Что пишет*?* var_dump($_POST) делал?
 

Боровиков

Новичок
так $_POST['sity'] существует или нет? если нет - смотри форму, если да - в чём проблема его "взять"?
Смотри какая ситуация, у меня на сайте есть поле выбора страны, региона, и города.
Когда выбираю страну, то появляется поле с выбором региона, нажимаю на регион, появляется поле выбора города.
Когда я выбираю город, то куда вносятся данные? Просто мне прирегистрации юзера нужно указать город, а его не получается указывать.
Я уже все перепробовал. И значение $_POST['sity'] не откуда брать .
 

KorP

Новичок
Когда я выбираю город, то куда вносятся данные?
когда ты выбираешь город у тебя данные никуда не вносятся, конечно если на Ajax`е не реализован какой-нить инсерт при выборе
поле выбора города
ну так и в чём проблема передавать его в той же форме, что и остальные данные пользователя?
И значение $_POST['sity'] не откуда брать
ну так а форма, с полем "город" тебе тогда на что, если ты оттуда значение вытащить не можешь?
 

Боровиков

Новичок
когда ты выбираешь город у тебя данные никуда не вносятся, конечно если на Ajax`е не реализован какой-нить инсерт при выборе
ну так и в чём проблема передавать его в той же форме, что и остальные данные пользователя?
ну так а форма, с полем "город" тебе тогда на что, если ты оттуда значение вытащить не можешь?
Ты можешь глянуть скрипт? Возможно ны поймешь тогда о чем речь.
 

KorP

Новичок
Боровиков
ну хорошо, ну а <form> то у тебя где? с чего там должно что то передаваться если у тебя кроме селектов ничего нет, даже кнопки? я его в коде вообще не наблюдаю

вообще конечно целиком скрипт давать читать это мне кажется перебор, разворачивать твою базу тупо - лень
ты форму покажи в html и покажи что тебе твой обработчик возвращает (хотя бы print_r($_POST) ну или var_dump)
 

Боровиков

Новичок
Боровиков
ну хорошо, ну а <form> то у тебя где? с чего там должно что то передаваться если у тебя кроме селектов ничего нет, даже кнопки? я его в коде вообще не наблюдаю

вообще конечно целиком скрипт давать читать это мне кажется перебор, разворачивать твою базу тупо - лень
ты форму покажи в html и покажи что тебе твой обработчик возвращает (хотя бы print_r($_POST) ну или var_dump)
PHP:
<?php 

echo '<form action="registration.php" method="post"><div class="menu">';
        echo '<b>Фамилия:</b><br/><input type="text" name="fam" maxlength="30" value="' .
            check($_POST['fam']) . '" /><br />';
        echo '<b>Имя:</b><br/><input type="text" name="imname" maxlength="30" value="' .
            check($_POST['imname']) . '" /><br />';
        echo '<b>Отчество:</b><br/><input type="text" name="otch" maxlength="30" value="' .
            check($_POST['otch']) . '" /><br />';
        echo '<p><b>Пол:</b><br/><select name="sex"><option value="?">-?-</option><option value="m">Муж.</option><option value="zh">Жен.</option></select></p>';
        echo '<strong>Дата рождения:</strong><br/>';
        echo "<select name='day'><option>День</option>";
        $day = 1;
        while ($day <= 31)
        {
            echo "<option value='$day'>$day</option>";
            $day++;
        }
        echo "</select>";
        $months = array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля",
            "Августа", "Сентября", "Октября", "Ноября", "Декабря");
        echo "<select name='month'><option>Месяц</option>";
        $x = 0;
        while ($x < sizeof($months))
        {
            print "<option value='" . $months[$x] . "'>" . $months[$x] . "</option>";
            $x++;
        }
        echo "</select>";
        echo "<select name='year'>
        <option>Год</option>";
        $year = date("Y");
        $endyear = $year - 100;
        while ($year >= $endyear)
        {
            echo "<option value='$year'>$year</option>";
            $year--;
        }
        echo "</select>";
        echo '<br/><strong>Физические Данные:</strong>';
        echo "<br/><select name='rost'><option>Рост</option>";
        $rost = 150;
        while ($rost <= 210)
        {
            echo "<option value='$rost'>$rost</option>";
            $rost++;
        }
        echo "</select>";
        echo "<select name='ves'><option>Вес</option>";
        $ves = 30;
        while ($ves <= 100)
        {
            echo "<option value='$ves'>$ves</option>";
            $ves++;
        }
        echo "</select>";
        echo "<select name='grud'><option>Грудь</option>";
        $grud = 35;
        while ($grud <= 150)
        {
            echo "<option value='$grud'>$grud</option>";
            $grud++;
        }
        echo "</select><br/>";
        echo "<br/><select name='talia'><option>Талия</option>";
        $talia = 25;
        while ($talia <= 100)
        {
            echo "<option value='$talia'>$talia</option>";
            $talia++;
        }
        echo "</select>";
        echo "<select name='bedra'><option>Бедра</option>";
        $bedra = 50;
        while ($bedra <= 150)
        {
            echo "<option value='$bedra'>$bedra</option>";
            $bedra++;
        }
        echo "</select>";
        echo "<select name='obuv'><option>Обувь</option>";
        $obuv = 30;
        while ($obuv <= 45)
        {
            echo "<option value='$obuv'>$obuv</option>";
            $obuv++;
        }
        echo "</select>";
        echo "<select name='odezda'><option>Одежда</option>";
        $odezda = 30;
        while ($odezda <= 70)
        {
            echo "<option value='$odezda'>$odezda</option>";
            $odezda++;
        }
        echo "</select>";
        echo '<br/><strong>Внешность:</strong>';
        echo '<br/><input type="text" name="nacia" maxlength="30" value="Национальность" /><br />';
        echo '<br/><input type="text" name="glaza" maxlength="30" value="Цвет глаз" /><br />';
        echo '<br/><input type="text" name="volos" maxlength="30" value="Цвет волос" /><br />';
        echo '<br/><input type="text" name="sport" maxlength="30" value="Какими видами спорта Вы занимаетесь?" /><br />';
        echo '<strong>Хореографические данные</strong><br />';
        echo '<input type="radio" value="da" name="xor" checked="checked" />Да';
        echo '<input type="radio" value="net" name="xor" checked="checked" />Нет<br />';
        echo '<strong>Вокальные данные</strong><br />';
        echo '<input type="radio" value="da" name="vokal" checked="checked" />Да';
        echo '<input type="radio" value="net" name="vokal" checked="checked" />Нет<br />';
   
/////выбор города
         ?>
    
<?php

        $irb_root = $_SERVER['DOCUMENT_ROOT'] . '/irb_selects';
        include $irb_root . '/select_country.php';


?>

<script type="text/javascript" language="javascript" src="<?php

        echo $irb_path;

?>/ajax.js" ></script>
<script type="text/javascript" language="javascript" >
var irb_path = '<?php

        echo $irb_path;

?>';
</script>
<!-- <select name="country_id"> -->
<?php

        echo country();

?>
<!-- <select name="region_id"> -->
<div id="region" ></div>
<!-- <select name="city_id"> -->
<div id="city" ></div>

<?php
///////конец выбора
        echo '<br/><strong>Номер телефона:</strong><br/><input type="text" name="nomer" maxlength="30" value="' .
            check($_POST['nomer']) . '" /><br />';
        echo '</div>';
        ///////////////////////////////////////////////////
        echo '<div class="gmenu">';
        echo '<b>Логин:</b><br/><input type="text" name="nick" maxlength="15" value="' .
            check($_POST['nick']) . '" /><br />';
        echo '<small>Мин. 2, макс. 15<br />Разрешены буквы Русского и Латинского алфавита,<br />Используется для Авторизации</small>';
        echo '<p><b>Пароль:</b><br/><input type="text" name="password" maxlength="20" /><br/>';
        echo '<small>Мин. 3, макс. 10 символов.<br />Разрешены буквы Латинского алфавита и цифры.</small></p>';
        echo '<b>E-Mail:</b><br/><input type="text" name="mail" maxlength="40" value="' .
            check($_POST['mail']) . '" /><br />';
        echo '<small>введите ваш действующи e-mail<br />Используется для востановления доступа</small>';
        echo '<p><b>Ваше образование:</b> <small>(Обязательно)</small><br/><textarea rows="3" name="obrazov">' .
            check($_POST['obrazov']) . '</textarea></p>';
        echo '<p><b>Увлечения:</b> <small>(Обязательно)</small><br/><textarea rows="3" name="hobbi">' .
            check($_POST['hobbi']) . '</textarea></p>';
        echo '<p><b>Пожелания по оплате:</b><small>(Обязательно)</small><br/><textarea rows="3" name="oplata">' .
            check($_POST['oplata']) . '</textarea></p>';
        echo '<p><b>Профессиональный опыт:</b> <small>(обязательно)</small><br/><textarea rows="3" name="opyt">' .
            check($_POST['opyt']) . '</textarea></p>';
        echo '<p><b>Удобное время для съемок:</b> <small>(Обязательно)</small><br/><textarea rows="3" name="semki">' .
            check($_POST['semki']) . '</textarea></p>';
        echo '<p><b>Дополнительная информация:</b> <small>(Обязательно)</small><br/><textarea rows="3" name="about">' .
            check($_POST['about']) . '</textarea></p>';
        echo '<img src="captcha.php?r=' . rand(1000, 9999) .
            '" alt="Проверочный код"/><br />';
        echo 'Код с картинки:<br/><input type="text" size="5" maxlength="5"  name="kod"/>';
        echo '<input type="submit" name="submit" value="Регистрация"/></div></form>';

?>
Это ввода данных в анкету.
 

Боровиков

Новичок
ну так и какие данныетвой registration.php получает то?
так не вижу никакого криминала, всё поидее должно работать норм

пс имхо код просто ужасен
Насчет кода то согласен. Только учусь.
В этом самом коде
PHP:
<?php

        $irb_root = $_SERVER['DOCUMENT_ROOT'] . '/irb_selects';
        include $irb_root . '/select_country.php';


?>

<script type="text/javascript" language="javascript" src="<?php

        echo $irb_path;

?>/ajax.js" ></script>
<script type="text/javascript" language="javascript" >
var irb_path = '<?php

        echo $irb_path;

?>';
</script>
<!-- <select name="country_id"> -->
<?php

        echo country();

?>
<!-- <select name="region_id"> -->
<div id="region" ></div>
<!-- <select name="city_id"> -->
<div id="city" ></div>
мне нужно взять данные города который выбрали, данные региона я могу взять, ну а вот данные города нихрена не получается.
 

KorP

Новичок
а вот данные города нихрена не получается.
print_r($_POST);
переменная город вообще существует? или она просто пустая? так как ты отвечаешь на вопросы - ответ сможешь найти только сам, не думаю что кому то будет интересным раскапывать чьи то скрипты
 
Сверху