Problem s ukladanim do db
Dobrý den chtěl jsem sporvoznit v admin panelu calendar ale mam problem...nepovede se mi to ulozit do db kod je nasledujici
var calendar = $('#calendar').fullCalendar({
header: h,
editable: true,
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function (date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
copiedEventObject.className = $(this).attr("data-class");
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
$.ajax({
type: "POST",
url: "add_events.php",
data: {},
contentType: "application/json",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
calendarStoredEvents = $.map(msg.d, function (item) {
return {
title: item.EventTitle,
start: item.start,
id: item.EventID,
className: item.EventclassName
};
});
initializeCalendar(calendarStoredEvents);
}
});
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
},
events: "events.php",
Tendle kod jsem se dopsal. ale neuklada do db vi nekdo jak an to prosim?
$.ajax({
type: "POST",
url: "add_events.php",
data: {},
contentType: "application/json",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
calendarStoredEvents = $.map(msg.d, function (item) {
return {
title: item.EventTitle,
start: item.start,
id: item.EventID,
className: item.EventclassName
};
});
initializeCalendar(calendarStoredEvents);
}
});
Co to je admin panel? Součást nějakého tajného redakčního systému?
Adresa add_events.php hlásí 404....
Nemá tam být náhodou localhost?
jj ted jsem to zmenil ma tam bejt
add_event.php
Ano je to redakcni sytstem.
tady je stranka od kad je
fullcalendar
Pošle se vůbec ten request? Pokud ano, jak ho zpracováváš v PHP?
<?php
$title=$_POST['title'];
$start=$_POST['start'];
$end=$_POST['end'];
$allDay="true";
$className="label label-important";
// connexion a la base de données
try {
$bdd = new PDO('mysql:host=localhost;db=bshop', '', '');
} catch(Exception $e) {
exit('Impossible de se connecter a la base de données.');
}
$sql = "INSERT INTO evenement SET title='".$title."', start='".$start."',end='".$end."', allDay='".$allDay."',className='".$className."' ";
$q = $bdd->prepare($sql);
$q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end, ':allDay'=>$allDay, ':className'=>$className));
?>
Do tabulky se nic nezapise
V první řadě se podívej na syntaxi příkazu INSERT. Protože ho píšeš, jako by to byl UPDATE.
Pak tam máš krásný příklad SQL Injection, což je docela nesmyslné, když tam potom používáš prepare a execute.
A ukládáš tam i "end", ale ten v requestu nikde neposíláš.
Ale ten php script mi funguje..to jsem zkousel..kdyz jsme tam dal hodnoty natvrdo...povodne jsem ho mel jinak ale t mi neslo tak jsem to predelal
$sql = "INSERT INTO evenement (title, start, end) VALUES (:title, :start, :end)";
Taky jsem se tě ptal, jestli se ten request vůbec pošle, ale neodpověděl jsi.
Tak si budu muset odpovědět sám. Pošle, ale prázdný:
Omlouvám se mám stoho hlavu kolem. tak nepošle
end mam nastaveny ze je to end=start + den
A kde to máš nastavený? Protože v tom kódu to teda nikde není.
U sebe jsme si to anstavil pred chvili..ted jsem to upravil takle,,to end jsem tam nedal
<?php
$title=$_POST['title'];
$start=$_POST['start'];
$allDay="true";
$className="label label-important";
// connexion a la base de données
try {
Ale bude asi problem v tom ze se tam ty data vubec neodeslou.
Tk ono se to odesílá zapisuje ale já neposílám ty data.
zkusil jsem todle ale stejné nic
data: 'title='+copiedEventObject.title,
To už jsem psal před 2 hodinama, že neposíláš žádná data:
http://pc.poradna.net/q/view/1178379-problem-s-ukl adanim-do-db?page=r1178417#r1178417
data: 'title='+copiedEventObject.title,
ted snazim poslat ale nejde mi to...jsem zacatecnik..dikeju ze semnou mas trpelivost.
Co se konkrétně má poslat, už musíš vědět ty.
Jo to vim....ale to mi nejde,,,ja bych chtel jenom pro zkousku treba neco odelsat..ne promenou ale na tvrdo nazev
data: { title: "pokus"}
ale to taky nejde
Co znamená "nejde"?
Nezapise se do db..neposle se. neodchyti ho ten script na posilani do db...
Tak neodešle nebo nezapíše? Pokud chceš radu, musíš se vyjadřovat přesně.
Neodešle tím pádem ani nezapíše.
Zkoušel jsem to takle
if($_POST['title']=="")
{
$title="nejde";
}
else
{
$title=$_POST['title'];
}
když je $_POST['title'] prazdny do db se zapise nejde. Tak jsem poznal ze se to ani neodešle. Respektive odešle ale prázdný.
Já to asi vzdávám.
Zadny data se neodeslou.
Jaký máš teď aktuální kód pro odesílání? Nevypisuje to nějakou chybu do konzole?
Zadna chyba
<?php
if($_POST['title']=="")
{
$title="nejde";
}
else
{
$title=$_POST['title'];
}
$allDay="true";
$className="label label-important";
var_dump($_POST);
// connexion a la base de données
try {
$bdd = new PDO('mysql:host=localhost;...');
} catch(Exception $e) {
exit('Impossible de se connecter a la base de données.');
}
$sql = "INSERT INTO evenement SET allDay='".$allDay."',className='".$className."',ti tle='".$title."' ";
$q = $bdd->prepare($sql);
$q->execute(array(':allDay'=>$allDay, ':className'=>$className, ':title'=>$title));
?>
Pro odesílání, ne pro zpracování. K čemu mi je vidět kód pro zpracování, když se nic nepošle a tedy ani nic nezpracuje?
var calendar = $('#calendar').fullCalendar({
header: h,
editable: true,
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function (date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
copiedEventObject.className = $(this).attr("data-class");
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
$.ajax({
type: "POST",
url: "add_event.php",
data: {title: "pokus" },
contentType: "application/json",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
calendarStoredEvents = $.map(msg.d, function (item) {
return {
title: item.EventTitle,
start: item.start,
id: item.EventID,
className: item.EventclassName
};
});
initializeCalendar(calendarStoredEvents);
}
});
Zavolá se to jenom v případě, že na ten kalendář provedeš drag&drop. Je to opravdu to, co chceš, aby to dělalo?
Spíš bych si tipnul, že chceš tohle:
http://arshaw.com/fullcalendar/docs/selection/sele ct_callback/
Ja uz nevim nic asi to mazu...a udelam si ten zakladni kalendar ten uz mam...tka moc dik a omlouvam se za cas...