Hi i’m french,
I have two: tables agenda_calendrier and agenda_evenement. An event belongs to a calendar.
$scheduler->render_table(“agenda_evenement”,“id”,“date_deb,date_fin,nom”,“calendrier_id”);
When I try to create an event, I get this error :s :
this.obj.rowsAr is undefined
dhtmlxsc…_debug.js (ligne 1523) if (!this.obj.rowsAr[rowId])\r\n
I use postgresSql. Any idea?
Thanks
Please try to update js file to attached one.
( most probably the issue was caused by the problem in debug version of code )
codebase_scheduler.zip (45.7 KB)
Thank you for this answer, but I have this in log now:
row 1246535792165 marked [inserted,valid]
1246535792165_start_date=2009-7-1 08:45
1246535792165_end_date=2009-7-1 11:40
1246535792165_text=New%20event
1246535792165_id=1246535792165
1246535792165_extra_data=%5Bobject%20Object%5D
1246535792165_!nativeeditor_status=inserted
ids=1246535792165
<?xml
version=‘1.0’ ?>
But I always block on this error which remains very vague. I think that it comes of calendrier_id which is a foreign key.
Thanks
When you creating new event, it will generated insert query only for “date_deb,date_fin,nom” and if you DB has constraints - it may block insert operation without foreign key specified.
You can
a) enabled server side logging and check exact DB response
$scheduler = new schedulerConnector($res);
$scheduler->enable_log(“log.txt”,true);
b) you can use server side events to add extra fields in query
function some_code($action){
$action->add_field(“calendrier_id”,SOME_VALUE);
}
$scheduler->event->attach(“beforeInsert”,“some_code”);
where SOME_VALUE - value which need to be used as foreign key
Here is my code with the modifications, I always have the same error
public function executeEvent(sfWebRequest $request)
{
include (‘connector/scheduler_connector.php’);
$res=pg_connect(“host=localhost port=5432 dbname=w3box user=w3soft password=password”);
$scheduler = new schedulerConnector($res);
$scheduler->enable_log(“log.txt”,true);
$scheduler->render_table(“agenda_evenement”,“id”,“date_deb,date_fin,nom,description,adresse”);
$scheduler->event->attach(“beforeInsert”,“some_code”);
return sfView::NONE;
}
public function some_code($action)
{
$action->add_field(“calendrier_id”,2);
}
I am spirit of integrated the schedule has a framework: Symfony ^^ but it’s not very easy.
Thank you for your answers.
tom
a) You need to change the order of commands
$scheduler->event->attach(“beforeInsert”,“some_code”);
$scheduler->render_table(“agenda_evenement”,“id”,“date_deb,date_fin,nom,description,adresse”);
render_* method must be the last command to the connector ( all commands after that point will be ignored )
b) please be sure that “some_code” function is visible from executeEvent context
c) used syntax is common for simple functions, if you are working with objects , you can use
$scheduler->event->attach(“beforeInsert”,array($class,“some_code”));
Thank you very much I have the display and the update which works but always not the insert :s
I don’t know how to test the class som_code because I call it ajax there.
Thank you for your answers.
tom
What is the content of “log.txt” in case of problematic operation?
>>I don’t know how to test the class som_code because I call it ajax there.
Assuming, that you are using connectors 0.9
Comment next lines in base_connector.php
lines 13-14
ini_set(“output_buffering”,“On”);
ob_start();
line 255
ob_clean();
without them - any error info , generated to php , will be included in server side response. ( which can be checked by firebug-like plugin, or through “response” link in debug version of script )
Hello,
Everything’s working very well ^^ thank you very much.
The insert is working, but i can’t update if i don’t reload the page.
Thanks
tom
The insert is working, but i can’t update if i don’t reload the page.
Is problem occurs only for newly added records? In such case, most possible, that server side doesn’t return correct new ID after insert operation. ( you can use debug js file and check the action@tid in insert response - it must be a new ID )
Such problem must not occur for default insert operation, but if you are using custom SQL or PHP logic for new record adding - you need to provide info about new record as well
function some_other_code($action){
$action->success($id);
}
$scheduler->event->attach(“afterInsert”,array($class,“some_other_code”));
Where $id - id of newly added row.
thanks.
i’d like to make a multi-table request now: here is my database:
agenda_calendrier:
id: ~
user_id: { type: integer, required: true, foreignTable: sf_guard_user, foreignReference: id }
nom: { type: varchar(255), required: true }
description: { type: longvarchar }
type: { type: boolean, required: true, default: 0 }
libelle: { type: varchar(255) }
default_cal: { type: boolean, required: true, default: 0 }
created_at: ~
updated_at: ~
agenda_evenement:
id: ~
calendrier_id: { type: integer, required: true }
id_parent: { type: integer }
nom: { type: varchar(255) }
adresse: { type: varchar(255) }
description: { type: varchar(255) }
date_deb: { type: timestamp, required: true }
date_fin: { type: timestamp, required: true }
Is this possible to display all the events of a user, or the events of some calendars, or just one calendar?
Freedom’s coming after that =)
Instead of render_table method of connector, you can use render_sql
$sched->render_sql("SELECT *, b.id as event_id FROM agenda_calendrier a INNER JOIN agenda_evenement b ON a.id = b.calendrier_id WHERE some rules here ", “event_id”,“date_deb,date_fin,description”)
In such case the code will select dataset based on provided SQL query and output it to client side in correct format.
In case of render_sql usage, component will not be able to create insert|delete|update operations automatically, so you will need to redefine them through sql code or through events.