REXPoll für Redaxo 4.3.1

Wie verwendet man Module oder Aktion und passt diese an.

REXPoll für Redaxo 4.3.1

Beitragvon Rumi » 10. Jan 2012, 18:07

Hallo

ich versuche REXPoll für 4.3.1 anzupassen. Leider weiss ich kaum was über die internen Befehle von Redaxo, und auch nicht viel über objektorientiertes Programmieren. PHP kann ich aber einigermassen.

Ich bin recht weit gekommen, aber nun kommt ständig die Fehlermeldung "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 'LIMIT 2' at line 1" wenn ich was speichern oder übernehmen will. Auch sind die Buttons "Speichern" etc. dann nicht mehr sichtbar. Die URL wechselt zu index.php, statt die GET-Variablen anzuzeigen, und es wird nichts in die DB geschrieben. Offenbar wird beim versuchten Speichern die Variable $fID nicht übergeben, und ich verstehe nicht warum. Unten der (gekürzte) Code, meine Änderungen sind gekennzeichnet.

Seltsam ist dass alles funktioniert wenn ich $fID beispielsweise gleich 9 setze, UND $fID ist immer korrekt im Programm (ich kann $fID per echo aufrufen, und die Variable wird korrekt angezeigt - siehe Code). Aber irgendwie funktionierts doch nicht richtig.

Um Hilfe wäre ich sehr dankbar.

Hier ein Ausschnitt des Codes:
Code: Alles auswählen
<?php

//------------------------------> Parameter

$Basedir = dirname(__FILE__);
$field_id = rex_request('field_id', 'int');

//------------------------------> Eintragsliste
if ($func == '')
{
   $list = new rex_list('SELECT * FROM '.$REX['ADDON']['dbpref']['rexpoll'].'rexpoll');
   
   $imgHeader = '<a href="'. $list->getUrl(array('func' => 'add')) .'"><img src="media/metainfo_plus.gif" alt="add" title="add" /></a>';
   $list->addColumn(   $imgHeader,
                  '<img src="media/metainfo.gif" alt="field" title="field" />',
                  0,
                  array('<th class="rex-icon">###VALUE###</th>',
                        '<td class="rex-icon">###VALUE###</td>')
               );               
   $list->setColumnParams   (   $imgHeader,
                        array('func' => 'edit', 'fID' => '###fID###')
                     );
   $list->setColumnLabel('fID', "ID");
   $list->setColumnLayout   (   'fID',
                        array('<th class="rex-icon">###VALUE###</th>','<td class="rex-icon">###VALUE###</td>')
                     );
   $list->setColumnLabel('fNAME', "Fragen");
   $list->setColumnParams('fNAME', array('func' => 'edit', 'fID' => '###fID###'));
   $list->setColumnLabel('fFIELDS', "Antworten");
   $list->show();
}
//------------------------------> Formular
elseif ($func == 'edit' || $func == 'add')
{   


// ******* NEU BEGINN ********

   if ($func == 'edit') $fID = $_GET['fID'];
   if ($func == 'add') $fID = intVal($fID);
//   echo (int)$fID; // GIBT $fID IMMER KORREKT AUS
//   $fID = 9; // DAMIT FUNKTIONIERT ALLES BESTENS - ES WERDEN ABER NATÜRLICH IMMER NUR DIE DATEN VON ID 9 ANGEZEIGT

// ******* NEU ENDE ********


$form = new rex_form($REX['ADDON']['dbpref']['rexpoll']."rexpoll","REXpoll","fID=".$fID,"post",false);

   $field = &$form->addTextField('fNAME');
    $field->setLabel("Frage");
   
   $field = &$form->addTextAreaField('fFIELDS');
   $field->setLabel("Antworten");
   
   if($func == 'edit')
    {   $form->addParam('fID', $fID);
    }
   $form->show();   
}
?>
Rumi
 
Beiträge: 42
Registriert: 20. Aug 2010, 00:35

Re: REXPoll für Redaxo 4.3.1

Beitragvon Hirbod » 11. Jan 2012, 03:51

Hi Rumi,

das Script verwendet eine veraltete rex_list / rex_form Funktion. Diese ist mittlerweile anders gelöst. Da musst du schon etwas mehr anpassen. Sieht aus als würde das alte AddOn noch auf dem addon_framework basieren, dies ist mit neueren Redaxoversionen jedoch nicht kompatibel.

http://www.redaxo.org/de/doku/tutorials ... -rex_form/

Da findest du alles was notwendig ist.

LG
Hirbod
Hirbod
 
Beiträge: 369
Registriert: 15. Jan 2008, 13:46

Re: REXPoll für Redaxo 4.3.1

Beitragvon Rumi » 11. Jan 2012, 10:27

Hirbod hat geschrieben:Hi Rumi,

das Script verwendet eine veraltete rex_list / rex_form Funktion. Diese ist mittlerweile anders gelöst. Da musst du schon etwas mehr anpassen. Sieht aus als würde das alte AddOn noch auf dem addon_framework basieren, dies ist mit neueren Redaxoversionen jedoch nicht kompatibel.

http://www.redaxo.org/de/doku/tutorials ... -rex_form/

Da findest du alles was notwendig ist.

LG
Hirbod


Danke, ich mach mich dran!
Rumi
 
Beiträge: 42
Registriert: 20. Aug 2010, 00:35

Re: REXPoll für Redaxo 4.3.1

Beitragvon Rumi » 15. Jan 2012, 12:49

Also, ich bin schon etwas weiter - es kommt nun keine mySQL Fehlermeldung mehr. Neuer Eintrag funktioniert inzwischen einwandfrei.

Was aber nun seltsam ist: Wenn ich im Edit-Modus was ändere wird nicht der bestehende Eintrag geändert, sondern der ganze Eintrag als neuer Eintrag in die DB geschrieben, so als wäre ich im Add-Modus gewesen.

Der Code sieht inzwischen so aus (den Code für die Resultat-Anzeige habe ich weggelassen):

Code: Alles auswählen
<?php

//------------------------------> Parameter
if(!isset($prefix))
{
  //trigger_error('Fehler: Prefix nicht definiert!', E_USER_ERROR);
  //exit();
}


$Basedir = dirname(__FILE__);
$field_id = rex_request('field_id', 'int');

//------------------------------> Eintragsliste
if ($func == '')
{
$list = rex_list::factory('SELECT * FROM '.$REX['ADDON']['dbpref']['rexpoll'].'rexpoll');
   
   $imgHeader = '<a href="'. $list->getUrl(array('func' => 'add')) .'"><img src="media/metainfo_plus.gif" alt="add" title="add" /></a>';
   $list->addColumn(   $imgHeader,
                  '<img src="media/metainfo.gif" alt="field" title="field" />',
                  0,
                  array('<th class="rex-icon">###VALUE###</th>',
                        '<td class="rex-icon">###VALUE###</td>')
               );               
   $list->setColumnParams   (   $imgHeader,
                        array('func' => 'edit', 'fID' => '###fID###')
                     );
   $list->setColumnLabel('fID', "ID");
   $list->setColumnLayout   (   'fID',
                        array('<th class="rex-icon">###VALUE###</th>','<td class="rex-icon">###VALUE###</td>')
                     );
   $list->setColumnLabel('fNAME', "Fragen");
   $list->setColumnParams('fNAME', array('func' => 'edit', 'fID' => '###fID###'));
   $list->setColumnLabel('fFIELDS', "Antworten");
   $list->show();
}


elseif ($func == 'edit' || $func == 'add')
{   
   if ($func == 'edit') $fID = $_GET['fID'];
   $fID = intVal($fID);
//   echo (int)$fID; // GIBT $fID KORREKT AUS
//   $fID = 9; // DAMIT FUNKTIONIERT ALLES - ES WERDEN ABER NATUERLICH IMMER NUR DIE DATEN VON ID 9 ANGEZEIGT

$form = rex_form::factory($REX['ADDON']['dbpref']['rexpoll']."rexpoll","REXpoll","fID=".$fID,"post",false);

   $field = &$form->addTextField('fNAME');
    $field->setLabel("Frage");
   
   $field = &$form->addTextAreaField('fFIELDS');
   $field->setLabel("Antworten");
   
   if($func == 'edit')
    {   $form->addParam('fID', $fID);
    }
   $form->show();   
}

?>


In der URL erscheint nach dem ungewollten Neueintrag fID=0, warum auch immer.

Wiederum funktioniert alles einwandfrei wenn ich $fID eigens definiere ($fID = 9;). Diese fID erscheint dann auch korrekt in der URL.

Ich hab den Eindruck das Problem liegt bei

if($func == 'edit')
{ $form->addParam('fID', $fID);
}

aber ich kriegs nicht besser hin.

Ich bin sehr dankbar um jede Hilfe!

Liebe Grüsse
Rumi
Rumi
 
Beiträge: 42
Registriert: 20. Aug 2010, 00:35

Re: REXPoll für Redaxo 4.3.1

Beitragvon Rumi » 20. Jan 2012, 14:04

Bin leider noch immer nicht weiter gekommen und daher nach wie vor froh um jede Hilfe!
Rumi
 
Beiträge: 42
Registriert: 20. Aug 2010, 00:35

Re: REXPoll für Redaxo 4.3.1

Beitragvon Cheffchen » 20. Jan 2012, 16:26

Hallo,

ich hatte zwar gerade ein eigen Umfrage gebaut aber REXPoll hatt ich auch mal vor jahren im einsatzt,
Ich würde es mir ja mal mit meinen bescheidenen wissen anschauen aber leider finde ich das ADDON nirgens mehr :O)

Cheffchen
Benutzeravatar
Cheffchen
 
Beiträge: 1128
Registriert: 3. Mär 2009, 12:51
Wohnort: Berlin

Re: REXPoll für Redaxo 4.3.1

Beitragvon Rumi » 21. Jan 2012, 11:34

Cheffchen hat geschrieben:Hallo,

ich hatte zwar gerade ein eigen Umfrage gebaut aber REXPoll hatt ich auch mal vor jahren im einsatzt,
Ich würde es mir ja mal mit meinen bescheidenen wissen anschauen aber leider finde ich das ADDON nirgens mehr :O)

Cheffchen


Danke für Deine Bereitschaft, und vor allem Danke für die Mitteilung dass Du das AddOn nirgends finden konntest! Auf der Suche nach ihm hat mich Google nämlich zu diesem Thread geführt:

addons-f30/rexpoll-fur-4-2-1-t12641.html

Und die darin aufgeführte Zeile

$fID = rex_request('fID', 'int');

anstelle meines $_GET-Eintrags scheint die Sache erledigt zu haben.

Ich werde das für 4.3.1 umgebaute RexPoll AddOn hier hochladen sobald ich sicher bin dass es richtig funktioniert.

Danke Euch allen für die Hilfe (auch und gerade in der Form "würde ja gerne" :-))!
Rumi
Rumi
 
Beiträge: 42
Registriert: 20. Aug 2010, 00:35


Zurück zu Module/Aktionen [R4]

Wer ist online?

Mitglieder in diesem Forum: Dr.No! und 2 Gäste