Eigenes Modul, Kategorie Selector

Gesperrt
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

Eigenes Modul, Kategorie Selector

Beitrag von OSI »

Hi,

ich versuche mich grade daran, ein eigenes Modul hinzubekommen, habe allerdings noch nicht allzuviel mit php getan. Um genau zu sein, ist dass mein erster Gehversuch mit php... :cry:
Es funktioniert eigentlich schon besser als gedacht, nur komme ich an einer Stelle z.Zt. einfach nicht weiter.
Vielleicht kann irgendjemand mit php-Erfahrung hier mal draufgucken .. !?

Eigentlich wollte ich ja versuchen, nicht zu fragen, aber i.M. ... !?

Das Problem scheint zu sein, dass mein Modul in dem mit "+-+-+-+ ..." markierten Bereich nicht wirklich mit dem klar kommt was ich von ihm will. Datenbankabfrage tut, nur, dass das extrahieren des $attributeName nicht zu funktionieren scheint.

Ich habe noch ein paar viele "print"´s drin, um zu schauen wo es denn hakt. Wenn jemand noch einen Tipp hätte, mir zu sagen, wie ich denn das Debug-Level von php mal richtig schön hoch setze, wär das auch klasse, am liebsten so, dass er mir alles erzählt, was er beim Lauf tut.

Überflüssiger oder schwachsinniger Code darf mir gerne mitgeteilt werden ... :wink:

Code: Alles auswählen


<?php

echo 'Bitte wählen Sie eine Kategorie:';

echo '<form name="suche" method="post">';

if ( !is_object($db) ) {
    $db = new DB_Contenido;
}

function selectCategorie ($db, $tableName, $attributeName, $pulldownName, $defaultValue)
    {
      $defaultWithinResultset = FALSE;   
      $catquery = "SELECT DISTINCT {$attributeName} FROM {$tableName}";

print "$catquery <br>";

if (!($resultId = @ ($db->query($catquery))))
      showerror();

print "$resultId <br>";

print "\n<select name=\"{$pulldownName}\">";

/* -+-+-+-+-+-+-+-+-+-+- */

         while ($row = @ ($db->next_record($resultId)))
         { 
            $result = $row[$attributeName];
            print "Row: $row <br>";
            echo ".$db->f(\"{$attributeName}\").";
            print "Result: $result <br>";
            print "AttributeName: $attributeName <br>";

/* -+-+-+-+-+-+-+-+-+-+- */

       if (isset($defaultvalue) && $result == $defaultValue)
          print "\n\t<option selected value=\"{$result}\">{$result}";
       else
          print "\n\t<option value=\"{$result}\">{$result}";
       print "</option>";

         };

echo '</option></select>';

}

selectCategorie($db, "dev_cat", "name", "Catname", "Alle");

echo '<p><input type="submit" value="Wähle Kategorie"></p>';
echo '</form>';

ob_start();

$html = ob_get_contents();

ob_end_clean();

echo $html;

echo '</td>';

?>   

OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

Ergebnis derzeit ...

Beitrag von OSI »

Was derzeit beim Aufruf des Moduls herauskommt ist übrigends folgendes HTML:

Code: Alles auswählen

<td height="320" valign="top" class="text">Bitte wählen Sie eine Kategorie:<form name="suche" method="post">SELECT DISTINCT name FROM dev_cats <br>Resource id #95 <br>
<select name="Catname">Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>

	<option value=""></option>Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>
	<option value=""></option>Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>
	<option value=""></option>Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>
	<option value=""></option>Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>

	<option value=""></option>Row: 1 <br>.("name").Result:  <br>AttributeName: name <br>
	<option value=""></option></option></select><p><input type="submit" value="Wähle Kategorie"></p></form></td>   
</td>
Wie gesagt, er kriegt es anscheinend irgendwie nicht hin, aus $row das geünschte Ding zu ziehen, oderr liege ich falsch ?!

Danke, wenn wer hilft, und Gruß trotzdem ... olli
-- "will code html for food" (cit)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ähm was willst du genau als ergebniss haben den feld namen oder den darin gespeicherten wert pro reihe ?
*** make your own tools (wishlist :: thx)
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

ähm das wird so nicht gehen...

zuerstmal würde ich das @ weglassen, und $db->f ist ein Methodenaufruf...ergo wird der in Anführungszeichen nicht gehen, sondern ausgegeben...


while ($db->next_record($resultId))
{
echo $db->f("namedesfeldes");
}
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

erste erfolge ...

Beitrag von OSI »

Hi, erst mal danke für die Antworten !!

ich bin inzwischen ein paar Schritte weiter ...

Ich glaube ich habe falsch angefangen ... Erstmal zur Erklärung, kurz und schmerzlos:

3 Tabellen hinzugefügt. (dev jeweils für development)
a) Personen (dev_clients) mit Adressen etc ...
b) Kategorien (dev_cats) mit Kategorien (Malerei, Schauspiel, etc)
c) Verknüpfung zwischen diesen (dev_client_cats) nur mit:
id_client / id_cat was jeweils entspricht der id-Felder der a/b Tabellen.

Ziel ist, sich über ein dynamisches Dropdown Menu (beim Hinzufügen einer Kategorie ist diese automatisch drin) die Kategorie auszuwählen, und sich alle Personen anzeigen zu lassen, die in dieser Kategorie gelistet sind.

Inzwischen klappt das anzeigen der Kategorien im Dropdown Menu

Code: Alles auswählen


print "\n<select name=\"{$pulldownName}\">";

         while ($row = @ mysql_fetch_array($resultId))
         { 
            $result = $row[$attributeName];

            if (isset($defaultvalue) && $result == $defaultValue)
              print "\n\t<option selected value=\"{$result}\">{$result}";
            else
              print "\n\t<option value=\"{$result}\">{$result}";
         print "</option>";

         };

Jetzt werde ich mal versuchen, die Verknüpfungstabelle mit dem ${attributename} anzusprechen, und den ganzen Rotz, der da zurückkommen sollte, in ob_get_contents reinzuschreiben und ... irgendwie, wie weiss ich auch noch nicht genau ... anzeigen zu lassen ...

Oder ist der Weg &§%isse ? :?:

...olli
-- "will code html for food" (cit)
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

Kleine Hilfe ... !?

Beitrag von OSI »

Hi nochmal ...

kann mir grad einer einen Tip geben, wie ich mit einem Button (<form usw..>) eine php-Funktion aufrufe !? Es handelt sich um den Button im oberen Code ..

...olli
-- "will code html for food" (cit)
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

help .. !?

Beitrag von OSI »

Kann mir noch mal ein php-Guru helfen !?

Seit ich dachte, ich hätte mit Hilfe meines Buches und Browsen von php.net usw eine halbwegs vernünftige Sache stehen, funktioniert die Ausgabe im Frontend nicht mehr ...

Er kommt im Browser noch genau bis :

Code: Alles auswählen


<select name="Catname">
	<option value="Malerei">Malerei</option>
	<option value="Musik">Musik</option>

	<option value="Gestaltende Kunst">Gestaltende Kunst</option>
	<option value="Literatur">Literatur</option>
	<option value="Schauspiel">Schauspiel</option>
	<option value="Fotografie">Fotografie</option></option></select><p><input type="submit" value="Wähle Kategorie"></p></form>

Danach kommt gar nix mehr ... !?
Der verursachende Code ist nun folgender:

Code: Alles auswählen


<?php

echo 'Bitte wählen Sie eine Kategorie:';

echo '<form name="suche" method="post">';

if ( !is_object($db) ) {
    $db = new DB_Contenido;
}

function selectCategorie ($db, $tableName, $attributeName, $pulldownName, $defaultValue)
    {
      $defaultWithinResultset = FALSE;   
      $catquery = "SELECT DISTINCT {$attributeName} FROM {$tableName}";

//print "$catquery <br>";

if (!($resultId = @ ($db->query($catquery))))
      showerror();

//print "$resultId <br>";
print "<br>";

print "\n<select name=\"{$pulldownName}\">";

         while ($row = @ mysql_fetch_array($resultId))
         { 
            $result = $row[$attributeName];

            if (isset($defaultvalue) && $result == $defaultValue)
              print "\n\t<option selected value=\"{$result}\">{$result}";
            else
              print "\n\t<option value=\"{$result}\">{$result}";
         print "</option>";

         };

echo '</option></select>';

}

selectCategorie($db, "dev_cats", "name", "Catname", "Alle");

echo '<p><input type="submit" value="Wähle Kategorie"></p>';
echo '</form>';

//
// Ausgabe ... !?
//

if ( !is_object($db2) ) {
    $db2 = new DB_Contenido;
}

function displayEntries($db2, $query, $CatName)
  {
     if (!($result2 = @ mysql_query ($query, $db2)))
        showerror();
     $rowsFound = @ mysql_num_rows($result2);
     if ($rowsFound > 0)
     {
         print "Entries in $catName<br>";
         print "\n<table>\n<tr>" .
               "\n\t<th>Cat ID</th>" .
               "\n\t<th>Cat Name</th>" .
               "\n\t<th>Name</th>" .
               "\n\t<th>Vorname</th>\n</tr>";
         while ($row = @ mysql_fetch_array($result))
         {
            print "\n<tr>\n\t<td>{$row["id"]}</td>" .
                  "\n\t<td>{$row["name"]}</td>" .
                  "\n\t<td>{$row["nachname"]}</td>" .
                  "\n\t<td>{$row["vorname"]}</td>\n</tr>";
         } 
                  print "\n</table>";
     } 
     print "{$rowsFound} Einträge gefunden<br>";
  }
  $regionName = mysqlclean($_GET, "$CatName", 30, $db2);
  $query = "SELECT id, name, vorname, nachname 
            FROM   dev_cats, dev_con_clients
            WHERE  dev_client_cats.id_cat = dev_cats.id
            AND    dev_client_cats.id_client = dev_con_clients.id";
   if (isset($CatName) && $CatName != "All")
     $query .= " AND dev_cats.name = \"{$CatName}\"";
     $query .= " ORDER BY dev_cats.name";

   // run the query and show the results
   displayCatList($db2, $query, $CatName);

ob_start();

$html = ob_get_contents();

ob_end_clean();

echo $html;

echo '</td>';

?>

:cry: :(

...olli
-- "will code html for food" (cit)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

zum testen hab ich momentan keine zeit, aber steht was im errorlog.txt ?
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Das wird wohl nicht gehen, da ein Modul per se in einem Formular ist (dieses ist vom Anfang der Seite bis zum OK-Icon definiert). Und ein Formular in einem Formular geht m.W. nicht.

Abgesehen davon sieh Dir den Code der Modul-Seite (d.h. wie Du sie im Browser siehst) an. Grundsätzlich muss man bei <form action= den Pfad zu der PHP-Datei angeben, die ausgeführt werden soll. Ein Klick auf einen Button, der mit dem Typ submit definiert ist oder form.<FormName>.submit(); in JavaScript sendet das Formular dann ab.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

errorlog

Beitrag von OSI »

errorlog sagt folgendes:

[11-Mar-2005 08:07:29] PHP Notice: Undefined property: f in xxxxxxxxxxxxxxxx/htdocs/cms/front_content.php(659) : eval()'d code on line 495
[11-Mar-2005 08:07:29] PHP Notice: Undefined property: f in xxxxxxxxxxxxxxxx/htdocs/cms/front_content.php(659) : eval()'d code on line 495
[11-Mar-2005 08:07:29] PHP Notice: Undefined property: f in xxxxxxxxxxxxxxxx/htdocs/cms/front_content.php(659) : eval()'d code on line 495
tent.php(659) : eval()'d code on line 495

@HerrB:

Hm, ich hatte gehofft, die Seite irgendwie so hinzubekommen, dass ich den Button drücken kann (ums mal laienhaft auszudrücken) und die selbe Seite nochmal mit den entsprechenden Ergebnissen der Abfrage geliefert wird ...
Auf eine andere Seite per <form action="front...idart..73> zu verweisen, würde ich eigentlich ungerne, da ich das Modul wenn möglich so flexibel wie möglich halten will, ohne, dass man irgendwo einen Link auf eine bestimmte Katgeorie oder einen Artikel hart reincoden muss.

Wodran ich mich orientiert hatte, war das Modul Volltextsuche. Im Template (und dementsprechend dem Artikel) mit dem Ergebnis der Volltextsuche gibt es ein Feld zum Eintragen des Suchstrings, der dann auch wieder auf eben dieser Seite angezeigt wird. Hm, wobei glaube ich, hier allerdings auch wieder per form action auf die eigene idart verwiesen wird ...

Hm, zur Zeit bin ich etwas ratlos, hat jemand einen Vorschlag wie ich vogehen könnte ?

...olli
-- "will code html for food" (cit)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Es ist relativ einfach: Du befindest Dich ja in einem Form. Darin kannst Du hidden-Felder definieren, die Daten oder die nächste Aktion festlegen können.

D.h. Du musst kein zusätzliches Formular basteln; es genügt mit hidden-feldern zu arbeiten. Ein schönes Beispiel findest Du in den Modulen zur Newsletter-Überarbeitung für V4.5: hier

(Das zu erklären wäre hier zu viel).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

ok

Beitrag von OSI »

das werd ich mir mal anschauen ..

Danke, ...olli

---

argl ... Mir wurde grade bei der Lektüre nochmal bewusst, was für ein bloody bastard ich bez. php bin ... :D

Hast Du vielleicht einen klitzkleinen Tip für mich wo so cs ich gucken muss ?

...olli
-- "will code html for food" (cit)
Gesperrt