Runtop: $_POST Array vergleichen mit Array und Array erweitern

Hallo Expertenforum,

irgendwie stehe ich seit tagen vollkommen auf dem Schlauch und ich bitte euch mir unter die Arme zu greifen.

Es geht um ein Kontaktformular (Affenformular) wobei ein Script alle Formularelemente prüft ob diese erlaubt sind sowie bei nicht ausgewählten Checkboxen diese bei Auswahl prüft und bei bedarf das Array erweitert.

Hoffe dass ich mich richtig ausgedrückt habe ansonsten zur Verdeutlichung siehe nachfolgend aufgeführte Anwendung:

1. Pflicht Array prüft übermitteltes $_POST Array auf POST Variablen.

Dieses habe ich schon mit Hilfe von Tom vom Berg soweit geschafft (siehe Code):

$_expected['postlistepflicht']=array('vorname',
                               'nachname',
                               'strasse',
                               'hausnummer',
                               'plz',
                               'ort',
                               'land',
                               'telefon',
                               'fax',
                               'email',
                               'email-bestaetigung',
                               'zwei',0,1,2,3,4,5,6,7,8,9,10,
                               'betreff',
                               'nachricht');

$_expected['allposts']=array_keys($_POST);

foreach($_POST as $elementpost)
     {

if (is_array($elementpost))

$_expected['allposts']=array_merge($_expected['allposts'],array_keys($elementpost));

}
    $_expectedDif['postlistepflicht']=array_diff($_expected['allposts'],$_expected['postlistepflicht']);
       $_expectedDif['allposts']=array_diff($_expected['postlistepflicht'],$_expected['allposts']);

if (count($_expectedDif['postlistepflicht'])>0 OR count($_expectedDif['allposts'])>0)
     {
      echo "1 stimmt nicht";
      print_r($_expectedDif['postlistepflicht']);
     }

Wenn jetzt eine oder mehrere Checkboxen angeklickt wurden, die im Pflichtarray nicht aufgeführt sind, dann müssen diese ja auch geprüft werden sowie im Pflichtarray ergänzt werden.

2. Ergänzungsarray

$_expected['postlisteergaenzung']=array('checkboxeins',
                               'checkboxzwei',
                               'checkboxdrei',
                               'checkboxvier');

Hier hänge ich seit tagen fest und weiß nicht mehr weiter wie und womit ich anfangen soll. Für eventuelle Codeschnipsel wäre ich natürlich dankbar aber bitte versteht mich nicht falsch, ich möchte nicht abschreiben sondern verstehen wie ich jetzt verfahren soll.

Danke und Gruß,

Runtop

  1. Hi!

    Hier hänge ich seit tagen fest und weiß nicht mehr weiter wie und womit ich anfangen soll.

    Was genau meinst Du mit "festhängen"?

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. Hallo Peter Pan,

      ich meinte mit Festhängen, das ich nicht weiß was ich als nächstes Programmieren muss!

      Als erstes werden POST Variablen mit dem Pflichtarray verglichen.
      Da aber Checkboxen nur einen Wert übermitteln wenn diese ausgewählt wurden, kann ich diese nicht in das Pflichtarray mit aufnehmen da ja direkt false (Falsch) ausgegeben würde.

      Bei einer eventuellen Auswahl der Checkbox gibt die erste Prüfung auch false aus wenn diese Checkbox nicht mit drinsteht. Also brauche ich ein zweites Array wo die ganzen Checkboxen oder Radiobuttons drinstehen.

      Hier muss ich jetzt prüfen ob die übergebene Checkbox etc. im zweiten Array verfügbar ist. Wenn ja dann sollte das erste Array erweitert werden mit genau dieser Checkbox.

      Gruß,

      Runtop

      1. Hi!

        Da aber Checkboxen nur einen Wert übermitteln wenn diese ausgewählt wurden,

        Das ist richtig.

        kann ich diese nicht in das Pflichtarray mit aufnehmen da ja direkt false (Falsch) ausgegeben würde.

        Wie hast Du das denn geprüft?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. Wie hast Du das denn geprüft?

          off:PP

          Hallo Peter Pan,

          so habe ich es geprüft:

          $_expected['postlistepflicht']=array('vorname',
                                         'nachname',
                                         'strasse',
                                         'hausnummer',
                                         'plz',
                                         'ort',
                                         'land',
                                         'telefon',
                                         'fax',
                                         'email',
                                         'email-bestaetigung',
                                         'lala',0,1,2,3,4,5,6,7,8,9,10,
                                         'betreff',
                                         'nachricht',
                                         'checkboxeins',
                                         'checkboxzwei',
                                         'checkboxdrei');

          $_expected['allposts']=array_keys($_POST);

          foreach($_POST as $elementpost)
               {

          if (is_array($elementpost))

          $_expected['allposts']=array_merge($_expected['allposts'],array_keys($elementpost));

          }
              $_expectedDif['postlistepflicht']=array_diff($_expected['allposts'],$_expected['postlistepflicht']);
                 $_expectedDif['allposts']=array_diff($_expected['postlistepflicht'],$_expected['allposts']);

          if (count($_expectedDif['postlistepflicht'])>0 OR count($_expectedDif['allposts'])>0)
               {
                echo "1 stimmt nicht";
                print_r($_expectedDif['postlistepflicht']);
               }
               else
               {
                echo "1 stimmt";
               }

          Gruß,

          Runtop

  2. Hello Runtop,

    im Moment bist Du wohl eher Creeptop? :-))

    Ich hatte ja versprochen, swelber auch noch weiter über die Sache nachzudenken.
    Aber bislang komme ich immer wieder auf diese kleine Funktion:

    <?php   ### linearize_array.php ###

    $_testarr = array();

    $_testarr['vorname'][0] = 'Hans';
        $_testarr['vorname'][1] = 'Klaus';
        $_testarr['vorname'][2] = 'Peter';
        $_testarr['name']       = 'Mustermann';
        $_testarr['plz']        = '37444';
        $_testarr['interessen']['privat'][0] = 'lesen';
        $_testarr['interessen']['privat'][1] = 'Fußball';
        $_testarr['interessen']['beruflich'] = 'PHP';

    #------------------------------------------------------------------------------
        function linearize($_source, &$_target, $path='')
        {
            if (is_array($_source))
            {
                foreach($_source  as $key => $val)
                {
                    linearize($val, &$_target, $path.'.'.$key);
                }
            }
            else
            {
                $_target[] = ltrim($path,'.');
            }
        }
    #------------------------------------------------------------------------------

    linearize($_testarr, $_target);

    echo "<pre>\r\n";
        echo htmlspecialchars(print_r($_target,1))."\r\n";
        echo "</pre>\r\n";

    ?>

    Wende die mal auf dein $_POST-Array an.
    Du solltest dann sehen, wie man der Sache zu Leibe rücken kann.

    Dein Expexcted-Array sollte dann einen Eintrag für jedes erwarte Element haben.
    Die sind nun natürlich in ihren Namen etwas beschränkt. Einen Punkt sollte der nicht enthalten.

    Dann kannst Du im "Abhaken-Zweig" des Expected-Arrays alle Namen der Parameter abhaken, die übertragen worden sind.

    Nun musst Du nur noch diejenigen finden, die nicht abgehakt wurden, aber Default-Felder sind. Dann erzeugst Du diese einfach zusätzlich im Datenbereich des $_POST-Array (da kommt noch eine kleine Funktion) und setzt den Default ein.

    Die Sache, mit der ich mich noch beschäftigen wollte, sind absolut dynamisch erzeugte Post-Parameter(-Arrays). Die kann es ja geben, wenn man im Client JavaScript einsetzt.

    Da will man ja nicht für jeden Parameter einen Eintrag in der linearisierten Liste haben, wenn die Defaults sowieso identisch sind, sondern nur den erlaubten Bereich (von 0 bis 115, von 'A' bis 'Z' oder was auch immer).

    Aber das muss Dich ja für Dein Problem erstmal nicht stören.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom vom Berg,

      vielen dank für die schnelle Hilfe aber das muss ich mir erst einmal in ruhe genauer anschauen und versuchen umzusetzen. Momentan fühle ich mich ein wenig überfordert da ich noch keinen für mich verständlichen Zusammenhang in den Variablen und Funktionen gefunden habe. Werde mich morgen bei dir noch mal melden und dich darüber aufklären ob was funktioniert hat und ob ich alles verstanden habe.

      Ach ja, mir ist aufgefallen das du was mit Javascript machen möchtest. Läuft man da nicht die Gefahr, wenn ein User Active Scripting deaktiviert hat, das dann gar nichts mehr funktioniert? Vielleicht verstehe ich aber hier auch nur was falsch!

      Gruß,

      Runtop

      1. Hello Runtop,

        Momentan fühle ich mich ein wenig überfordert da ich noch keinen für mich verständlichen Zusammenhang in den Variablen und Funktionen gefunden habe. Werde mich morgen bei dir noch mal melden und dich darüber aufklären ob was funktioniert hat und ob ich alles verstanden habe.

        Mach langsam. :-)

        Hier noch die Funktion, um aus dem Array_Path_String wieder ein Deep-Array zumachen.

        #------------------------------------------------------------------------------
            function make_deep_array($array_pathstr, $value=NULL, $sep='.')
            {
                $_arr = array();
                $arraystr = trim($array_pathstr, $sep);
                $_ref =& $_arr;

        while (strlen($array_pathstr) > 0)
                {
                    $path = strtok($array_pathstr, $sep);
                    $array_pathstr = substr($array_pathstr,strlen($path)+1);
                    $_ref[$path] = NULL;
                    $_ref =& $_ref[$path];
                }

        $_ref = $value;

        return $_arr;
            }
        #------------------------------------------------------------------------------

        $_deep_array = make_deep_array('mitglieder.gruppenleiter.abteilung.schwimmen', 'hansi');

        echo "<pre>\r\n";
            echo htmlspecialchars(print_r($_path,1))."\r\n";
            echo "</pre>\r\n";

        Nun müsstest Du zurecht kommen, auch wenn in Deinem Daten-Subarray des $_POST-Array tiefe Strukturen vorkommen, wie z.B. Checkbox-Gruppen.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          *hups*  Fehler entdeckt

          Hier noch die Funktion, um aus dem Array_Path_String wieder ein Deep-Array zumachen.

          #------------------------------------------------------------------------------
              function make_deep_array($array_pathstr, $value=NULL, $sep='.')
              {
                  $_arr = array();

          $array_pathstr = trim($array_pathstr, $sep);

          $_ref =& $_arr;

          while (strlen($array_pathstr) > 0)
                  {
                      $path = strtok($array_pathstr, $sep);
                      $array_pathstr = substr($array_pathstr,strlen($path)+1);
                      $_ref[$path] = NULL;
                      $_ref =& $_ref[$path];
                  }

          $_ref = $value;

          return $_arr;
              }
          #------------------------------------------------------------------------------

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hello Tom,

            beim ersten Script von dir, 29. Mai 2009, 18:11 Uhr, gibt Error Reporting folgende  Warnmeldung aus: Warning: Call-time pass-by-reference has been deprecated in ……

            Da die Webseite auf keinen eigenen Server liegt sondern bei Strato (verwendete PHP Version 5.2.9) gibt es hier wohl Probleme mit der ausgeschalteten allow_call_time_pass_reference!

            Im Übrigen komme ich mit dem Script nicht zurecht da es (für mich) sehr unübersichtlich wirkt. Halte mich bitte nicht für Blöd aber ich muss es irgendwie nachvollziehen können wie alles zusammenläuft, wenn auch mehr Code dafür gebraucht wird.

            Mit diesem Code hätte ich weniger Probleme:

            Pflichtarray vergleichen mit POST Übergabe:

            $_expected['postlistepflicht']=array('vorname',
                                           'nachname',
                                           'strasse',
                                           'hausnummer',
                                           'plz',
                                           'ort',
                                           'land',
                                           'telefon',
                                           'fax',
                                           'email',
                                           'email-bestaetigung',
                                           'lala',0,1,2,3,4,5,6,7,8,9,10,
                                           'betreff',
                                           'nachricht');

            $_expected['allposts']=array_keys($_POST);

            foreach($_POST as $elementpost)
                 {

            if (is_array($elementpost))

            $_expected['allposts']=array_merge($_expected['allposts'],array_keys($elementpost));

            }
                $_expectedDif['postlistepflicht']=array_diff($_expected['allposts'],$_expected['postlistepflicht']);
                   $_expectedDif['allposts']=array_diff($_expected['postlistepflicht'],$_expected['allposts']);

            if (count($_expectedDif['postlistepflicht'])>0 OR count($_expectedDif['allposts'])>0)
                 {
                  echo "1 stimmt nicht";
                  print_r($_expectedDif['postlistepflicht']);
                 }
                 else
                 {
                  echo "1 stimmt";
                 }

            Das funktioniert schon mal einwandfrei, sobald aber eine Checkbox angeklickt wurde dann gibt er natürlich false aus.

            So wie ich dich verstanden habe muss ich jetzt ein weiteres Array (Ergänzungsarray) erstellen. Ich packe diese mal in die erste if count Ausgabe echo "1 stimmt nicht";

            ………

            if (count($_expectedDif['postlistepflicht'])>0 OR count($_expectedDif['allposts'])>0)
                 {
                  echo "1 stimmt nicht";

            print_r($_expectedDif['postlistepflicht']);

            $_expected['postlisteergaenzung']=array(‘PHPSESSID’,
                                           'checkboxeins',
                                           'checkboxzwei',
                                           'checkboxdrei',
                                           'checkboxvier',
                                           'radiobuttoneins');

            }
                 else
                 {
                  echo "1 stimmt";
                 }

            In der Ausgabe print_r($_expectedDif['postlistepflicht'] steht ja drin was mit dem POST Array nicht übereinstimmt. Der oder die ausgewählten Checkboxen sollen jetzt im Ergänzungsarray geprüft werden ob diese verfügbar sind.

            Nur weiß ich nicht wie ich das anstellen soll!

            Wäre nett wenn du mir Schritt für Schritt helfen könntest.

            Danke und Grüße,

            Runtop

            1. Hello,

              Im Übrigen komme ich mit dem Script nicht zurecht da es (für mich) sehr unübersichtlich wirkt. Halte mich bitte nicht für Blöd aber ich muss es irgendwie nachvollziehen können wie alles zusammenläuft, wenn auch mehr Code dafür gebraucht wird.

              Das Problem ist, dass Deine Begehrlichkeiten auch von Mal zu Mal rapide wachsen.
              Aber das ist normal.

              Am Anfang wolltest Du nur einfache Postparameter auf Existenz prüfen. Wenn ich mich recht entsinne, hast Du sie dafür gezählt. Dann hast Du eingesehen, dass einem da ja beliebige Parameter untergejubelt werden können, was natürlich nicht sein darf. Du hast also die Namen überprüft. Das ist war schon ein Fortschritt. Da war dann aber öfter ein Name darunter, der nicht erwartet wurde (PHPSESSID).

              Und nun fing das Trilemma an. Es sollten keine unerwarteten Namen auftauchen aber auch alle erwarteten vorhanden sein. Dumm nur, dass die erwarteten nicht immer kommen, sondern im Falle von Session-ID und Radio/Check/Select-Elementen nur übermittelt werden, wenn es notwendig erscheint.

              Und nun kam die strenge Prüfung auf den Plan.

              Aber einen lesbaren Plan hast Du bisher noch nicht gezeichnet.
              Ich hatte Dir einige Kriterien genannt, nach denen geprüft werden müsste, wenn man es so streng handhaben will (wogegen im Prinzip nichts einzuwenden ist). Die kann man aber nur entweder alle berücksichtigen oder die Prüfung ist nicht möglich.

              Nun kamst Du noch mit Arrays als mögliche Parameter. Ich habe Dir eine Funktion gepostet, mit der auch Deep-Array-Parameter auf Existenz bzw. Erlaubtsein geprüft werden können und eine Funktion, mit der man aus einer "Expected-Liste" die notwendigen, aber nicht geposteten Parameter ergänzen kann und mit ihrem Default belegen kann.

              Was jetzt erstmal fehlt, ist ein Plan (wie so oft).

              Also bitte schreibe nochmal alle Parameter auf, die kommen dürfen, egal, ob sie jedes mal übermitelt werden, odr nicht, und zwar in der "Punktnotation" (Liest sich am leichtesten).

              • Dann schreib in einer Spalte dahinter, ob sie optional oder mandatory sind   (M)

              • Dann schreib in einer weiteren Spalte dahinter, ob sie, wenn sie leer sind,
                  oder nicht übermittelt wurden (aber eben nicht required sind), angelegt und
                  mit einem Default aufgefüllt werden müssen                                   (C)

              • und in einer weiteren Spalte den Default                                     (D)

              #---

              • außerdem könnte auch noch eine Typprüfung stattfinden
                  die würde bei HTML und PHP dann feststelln müssen, ob der übermittelte
                  String feherfrei in den geforderten Zieltyp umwandelbar ist                  (T)

              • Eine zusätzliche Format-Prüfung wäre denkbar (auch min. und max. Länge)      (F)

              • Danach wäre ein Range-Check noch zweckmäßig (erlaubte Werte)                 (R)

              #---

              • es folt dann das Escaping für die Weiterverarbeitzng

              Alle Prüfungen hängen in einem Regelwerk voneinander ab.

              Erst wenn Du dich entschieden hast, welche Prüfungen in genau dieser Reihenfolge du furchführen willst (die ersten drei sind mandatorisch, wenn man sinnvoll prüfen will) und Deine Liste fertig hast, können wir effektiv weiterarbeiten.

              Das Ziel ist aber nicht mehr fern.

              Die Liste der erwarteten (Post-)Parameter kann später auch ausgebaut werden zu einer kompletten Formatbeschreibung eines Views und der dahinterliegenden Datenbindung. Das bedeutet, dass Du in Zukunft nur noch diese Liste erstellen müsstest und daraus automatisch die Tabellen für die DB und etliche Zeilen PHP für den Contoller sowie das HTML für den Browser erzeugen könntest.

              Die sind dann sicherlich noch überarbeitungswürdig, aber man erspart sich eine Menge Arbeit und hat Übersicht.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hello Tom,

                vielen dank das du mir hilfst und entschuldige dass ich mich jetzt erst melde, Arcor macht seit einigen tagen Probleme mit meiner Internetverbindung und die wurde mir bis heute 18 Uhr komplett gekappt!

                Am Anfang wolltest Du nur einfache Postparameter auf Existenz prüfen. Wenn ich mich recht entsinne, hast Du sie dafür gezählt. Dann hast Du eingesehen, dass einem da ja beliebige Parameter untergejubelt werden können, was natürlich nicht sein darf. Du hast also die Namen überprüft. Das ist war schon ein Fortschritt. Da war dann aber öfter ein Name darunter, der nicht erwartet wurde (PHPSESSID).

                Das ist nicht ganz richtig, im Beitrag vom 21. Mai 2009, 17:25 Uhr habe ich angedeutet, wenn ich das Formular beim ersten mal öffne, teils befülle und dann absende dann gibt das Script als echo folgendes aus: POST Zähler stimmt nicht und POST Parameter stimmen  nicht mit Array überein. Hierfür wurde als Prüfung einmal das zählen der übermittelten POST Variablen getätigt und als Zusatz ein Vergleichsarray der POST Variablen angewendet.
                Ein Vergleichsarray (stark gekürzt im Beitrag veröffentlicht) existierte also hier bereits und das hat die unerwartete PHPSESSID als false abgewehrt.

                Und nun fing das Trilemma an. Es sollten keine unerwarteten Namen auftauchen aber auch alle erwarteten vorhanden sein. Dumm nur, dass die erwarteten nicht immer kommen, sondern im Falle von Session-ID und Radio/Check/Select-Elementen nur übermittelt werden, wenn es notwendig erscheint.

                Genau, hier muss ich anmerken das ich wirklich nicht die Session-ID erwartet habe da die Programmierung der session_start() viel später kam als die Prüfung der POST Variablen.
                Ich konnte nicht ahnen das PHP als erstes ein Hiddenfield erstellt und beim zweiten öffnen wieder gelöscht hat. Wie man so schön sagt, Unwissenheit schützt vor Strafe nicht. :-))
                Die Radio/Check-Elemente habe ich schon erwartet. Dieses Problem habe ich dann mit Hiddenfields umgangen und mit einem zusätzlichen Array (Wert Übermittlungs- sowie Vergleichsprüfung) dem POST gegenübergestellt. Wenn der Wert nicht stimmte dann wurde das Script abgebrochen.

                Was jetzt erstmal fehlt, ist ein Plan (wie so oft).

                Also bitte schreibe nochmal alle Parameter auf, die kommen dürfen, egal, ob sie jedes mal übermitelt werden, oder nicht, und zwar in der "Punktnotation" (Liest sich am leichtesten).

                Ist das so richtig, oder meinst Du es anders?

                (Parameter)               (M)       (C)      (D)        (R)
                ---------------------------------------------------------------------------
                 1. popiloll             (mandatory)(       )(       )(Senden)
                 2. ynnuf                (mandatory)(       )(       )(rewop)
                 3. tiz                  (mandatory)(       )(       )(keinen festen Wert)
                 4. diw                  (mandatory)(       )(       )(keinen festen Wert)
                 5. firminw              (mandatory)(       )(       )(keinen festen Wert)
                 6. straiw               (mandatory)(       )(       )(keinen festen Wert)
                 7. pliw                 (mandatory)(       )(       )(keinen festen Wert)
                 8. oriw                 (mandatory)(       )(       )(keinen festen Wert)
                 9. laiw                 (mandatory)(       )(       )(keinen festen Wert)
                10. vorname              (mandatory)(       )(       )(muss leer bleiben)
                11. nachname             (mandatory)(       )(       )(muss leer bleiben)
                12. strasse              (mandatory)(       )(       )(muss leer bleiben)
                13. plz                  (mandatory)(       )(       )(muss leer bleiben)
                14. ort                  (mandatory)(       )(       )(muss leer bleiben)
                15. land                 (mandatory)(       )(       )(muss leer bleiben)
                16. telefon              (mandatory)(       )(       )(muss leer bleiben)
                17. fax                  (mandatory)(       )(       )(muss leer bleiben)
                18. email                (mandatory)(       )(       )(muss leer bleiben)
                19. email-bestaetigung   (mandatory)(       )(       )(muss leer bleiben)
                20. betreff              (mandatory)(       )(       )(muss leer bleiben)
                21. nachricht            (mandatory)(       )(       )(muss leer bleiben)
                22. efeld                (mandatory)(       )(       )(muss leer bleiben)
                23. capa                 (mandatory)(       )(       )(muss leer bleiben)
                24. lala[0] bis lala[30] (mandatory)(       )(       )(hängt von Eingabe des Users ab)´

                (Parameter)               (M)       (C)      (D)        (R)
                ---------------------------------------------------------------------------
                25. PHPSESSID            (optional) (       )(       )(wird immer erneuert)
                26. agar                 (optional) (       )(       )(keinen festen Wert)
                27. ecod                 (optional) (       )(       )(keinen festen Wert)
                28. kontaktper           (optional) (       )(       )(E-Mail,Fax,Telefon und Post)
                29. checkboxeins         (optional) (       )(       )(9 bis 12 Uhr)
                30. checkboxzwei         (optional) (       )(       )(12 bis 15 Uhr)
                31. checkboxdrei         (optional) (       )(       )(15 bis 18 Uhr)
                32. checkboxvier         (optional) (       )(       )(18 bis 20 Uhr)
                33. dtauswahl            (optional) (       )(       )(Ja und Nein)

                Was ich nicht verstehe ist C und D (mit Default aufgefüllt werden müssen).
                Habe mal dazu gegoogelt aber aufschlussreich war das nicht. Es ging in erster Linie nur um MySQL und damit habe ich noch gar nicht gearbeitet.

                Grüße,

                Runtop

                1. Hi Tom,

                  hast du vielleicht meinen Beitrag vom 31.05.2009 übersehen?
                  Wäre nett wenn du dich kurz melden würdest!

                  Gruß,

                  Runtop

                  1. Hello,

                    hast du vielleicht meinen Beitrag vom 31.05.2009 übersehen?
                    Wäre nett wenn du dich kurz melden würdest!

                    *grins*

                    Ich habe Dich nicht vergessen.

                    Ich möchte nur das, was ich Dir posten werde, vorher auch ausprobieren.
                    Und es wird Dir vielleicht nicht entgangen sein, dass wir Pfingsten haben - und außerdem schönes Wetter. Da ist Gartenzeit. :-)

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. Hello Tom,

                      du hilfst fast rund um die Uhr hier im Forum, da kann man schon fast annehmen dass du kaum schlafen gehst. Ich hoffe du genießt das schöne Wetter im Garten und wünsche dir noch einen erholsamen Pfingstmontag!

                      Gruß,

                      Runtop

                      1. Hello,

                        du hilfst fast rund um die Uhr hier im Forum,

                        Das sieht nur manchmal so aus. Ich gucke immer nur in den Arbeitspausen :-)

                        da kann man schon fast annehmen dass du kaum schlafen gehst. Ich hoffe du genießt das schöne Wetter im Garten und wünsche dir noch einen erholsamen Pfingstmontag!

                        Klar, ich habe mir Bratwurst und Bier noch schmecken lassen.

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                        1. Hello,

                          damit Du nicht denkst, dass ich Dich vergessen habe.
                          Für Deinen Fall der strengen Eingangsprüfung müsste man mit dieser Struktur auskommen. Einige Elemente enthalten bereits "Ausblicke" auf die Entwicklung der Schnittstellenbeschreibung

                          $_form = array();
                          $_form['name'] = array();         # Pfad des Parameters im POST-Array
                          $_form['priv'] = array();         # R_equired, O_ptional, P_rohibited, C_reate if missing
                          $_form['default_type'] = array(); # None, Fixed, API-Funktion, DB-Field, DB-Query
                          $_form['default']  = array();     # Default on Creation (hier steht dann der String)
                          $_form['in_check']  = array();    # Request geprüft

                          Pfad des Parameter ist der linearisierte Name (PHP macht hin, wir zurück *g* )

                          R_equired,                Parameter muss im Request enthalten sein
                          O_ptional,                Parameter kann im Request vorhanden sein
                          P_rohibited,              Parameter darf im Request nicht enthalten sein
                          C_reate if missing        Parameter wird im Buffer ergänzt, wenn er im Request fehlt

                          default: Was steht im Default-Feld drin?

                          None,                     Kein Default ==> NULL, Zufallswert?
                          Fixed,                    Konstante
                          API-Funktion,             NULL, false, PHP-Ausdruck, z.B. Variable, Funktion, o.ä.
                          DB-Field,                 Starre Kopplung zu einem Datenbank-Wert
                          DB-Query                  Abfrage-String aus der Datenbank

                          in_check:               Eingangsprüfung wurde durchgeführt

                          Request geprüft           false, true oder lieber 0,1,2    noch nicht geprüft, fehlerfrei, FGeherl?
                                                    ist notwendig für Probe und Gegenprobe, um fehlende Parameter zu finden

                          Das stelle ich jetzt mal zur Diskussion.

                          Diese Tabelle soll in einem der nächsten Schritte die gesamte Schnittstelle beschreiben, also auch die Regeln bei der Response-Generation.

                          Liebe Grüße aus dem schönen Oberharz

                          Tom vom Berg

                          --
                          Nur selber lernen macht schlau
                          http://bergpost.annerschbarrich.de
                          1. Hello Tom,

                            Das sieht nur manchmal so aus. Ich gucke immer nur in den Arbeitspausen :-)

                            Na, wenn man das Arbeitspausen nennt dann würde ich sagen dir gehört das Forum! :-))
                            Nicht dass du irgendwann mal über der Tastatur einschläfst und mit der Nase auf die rrrrrrrrrrrr Taste kommst, sieht bestimmt lustig aus. Ich hoffe aber das du trotz den vielen Hilfestellungen über Pfingsten dennoch etwas zeit hattest dich auszuruhen.

                            So und jetzt versuche ich dir zu folgen auf das was du gepostet hast und bitte dich dieses stück für stück mit mir durchzunehmen, ansonsten weiß ich überhaupt nicht wo ich anfangen soll. Danke für dein Verständnis!

                            Die ersten drei Arrays:

                            1. Ich nehme wohl an das ist das übergeordnete (Haupt) Array

                            $_form = array();

                            2. Pfad des Parameters im POST-Array

                            $_form['name'] = array('Formular_Daten', $_POST);

                            3. Array für R_equired, O_ptional, P_rohibited, C_reate if missing

                            $_form['priv'] = array('popiloll' => R_equired,
                                                   'ynnuf' => R_equired,
                                                   'tiz' => R_equired,
                                                   'diw' => R_equired,
                                                   'firminw' => R_equired,
                                                   'straiw' => R_equired,
                                                   'pliw' => R_equired,
                                                   'oriw' => R_equired,
                                                   'laiw' => R_equired,
                                                   'vorname' => R_equired,
                                                   'nachname' => R_equired,
                                                   'strasse' => R_equired,
                                                   'hausnummer' => R_equired,
                                                   'plz' => R_equired,
                                                   'ort' => R_equired,
                                                   'land' => R_equired,
                                                   'telefon' => R_equired,
                                                   'fax' => R_equired,
                                                   'email' => R_equired,
                                                   'email-bestaetigung' => R_equired,
                                                   'betreff' => R_equired,
                                                   'nachricht' => R_equired,
                                                   'efeld' => R_equired,
                                                   'capa' => R_equired,
                                                   'lala[0]' => R_equired,
                                                   'lala[2]' => R_equired,
                                                   'lala[3]' => R_equired,
                                                   'lala[4]' => R_equired,
                                                   'lala[5]' => R_equired,
                                                   'lala[6]' => R_equired,
                                                   'lala[7]' => R_equired,
                                                   'lala[8]' => R_equired,
                                                   'lala[9]' => R_equired,
                                                   'lala[10]' => R_equired,
                                                   'lala[11]' => R_equired,
                                                   'lala[12]' => R_equired,
                                                   'lala[13]' => R_equired,
                                                   'lala[14]' => R_equired,
                                                   'lala[15]' => R_equired,
                                                   'lala[16]' => R_equired,
                                                   'lala[17]' => R_equired,
                                                   'lala[18]' => R_equired,
                                                   'lala[19]' => R_equired,
                                                   'lala[20]' => R_equired,
                                                   'lala[21]' => R_equired,
                                                   'lala[22]' => R_equired,
                                                   'lala[23]' => R_equired,
                                                   'lala[24]' => R_equired,
                                                   'lala[25]' => R_equired,
                                                   'lala[26]' => R_equired,
                                                   'lala[27]' => R_equired,
                                                   'lala[28]' => R_equired,
                                                   'lala[29]' => R_equired,
                                                   'lala[30]' => R_equired,
                                                   'PHPSESSID' => O_ptional,
                                                   'agar' => O_ptional,
                                                   'ecod' => O_ptional,
                                                   'kontaktper' => O_ptional,
                                                   'checkboxeins[]' => O_ptional,
                                                   'checkboxzwei[]' => O_ptional,
                                                   'checkboxdrei[]' => O_ptional,
                                                   'checkboxvier[]' => O_ptional,
                                                   'dtauswahl' => O_ptional);

                            Gruß,

                            Runtop

                            1. Hello,

                              ich wollte hier nur nochmal eine Nachricht lassen, dass ich Dich nicht vergessen habe.
                              Da der Request-Check auch in mein eigenes kleines Template-System hineingehört, habe ich mich etwas daran verbissen. Es fällt mir daher etwas schwer, "nur mal eben" zusätzlich eine kleine Lösung für Dich zu basteln. Da kommen immer gleich wieder die "großen Gedanken".

                              Und das erinnerte mich daran, dass ja eigentlich alle Einzelteel meines Gerüstes irgendwie auch einzeln funktionieren sollen. Nun bin ich am Entflechten...

                              An der bereits beschriebenen Vorgehensweise Vorgehensweise

                              * Referenzliste wird mit Requestparametern verglichen
                                * Wenn welche kommen, die überhaupt nicht erwartet wurden -> ALARM
                                * Wenn in der Liste welche übrig bleiben, die nicht gekommen sind, dann
                                      muss entschieden werden, ob sie ergänzt werden müssen und womit

                              Das beschreibt das Szenario beim Request.

                              Ich habe das nun so aufgebohrt, dass die Liste im Prinzip das gesamte Formular im Controller beschreibt, also woher die Daten kommen und wohin sie dann gehen sollen, und zwar für Request und Response. Zusätzlich wird festgelegt (nicht ausgeführt) was 'vorher' und was 'nachher' noch mit den Daten zu geschehen hat. Das könnte kontextgerechte Behandlung sein oder Umformatierung oder...

                              Aber wie schon erwähnt, ich schwitze schon eine Weile daran...

                              #---

                              [ Und dann musste ich endlich meine Wasserleitung in der Küche reparieren, damit ich wieder Wäsche Waschen, kochen und abwaschen kann. Drück mir die Daumen, bis jetzt sind die neuen Lötstellen und die eingehanften Schraubverbindungen dicht. Wie trivial ist doch dagegen ein "Request-Check" *g*. Ich brauch jetzt nur noch einen Verputzer, der die aufgehackte Wand wieder zumacht :-( ]

                              Liebe Grüße aus dem schönen Oberharz

                              Tom vom Berg

                              --
                              Nur selber lernen macht schlau
                              http://bergpost.annerschbarrich.de
                              1. Guten morgen Tom,

                                danke dass du an mich denkst!

                                Mal meine Idee als Laie:

                                * Referenzliste wird mit Requestparametern verglichen, hier stehen ja sowieso alle drin die dürfen ob diese nun kommen oder nicht.

                                * Bei Abgleichfehler, z.B. PHPSESSID steht im Request Parameter, wurde aber nicht übermittelt dann PHPSESSID Element aus dem Array löschen mit unset().

                                * War der Löschvorgang erfolgreich und es waren keine anderen Fremdkörper (Fremdparameter) dabei die nicht gelöscht werden konnten dann geht’s mit true weiter.

                                * Wenn aber Paramter kommen oder dabei waren die überhaupt nicht erwartet wurden oder nicht gelöscht werden konnten dann header("Location: $spam");

                                Habe selbst schon ein wenig versucht aber es hat bis jetzt leider noch nicht geklappt.

                                Zu deiner Küche:
                                Ich hoffe doch dass du noch keinen Wasserschaden angerichtet hast! ;-)
                                Für die Zukunft gebe ich dir den tipp falls du Kupferrohre verwendest diese zu Pressen und nicht zu Löten. Hier wird zum einen eine sichere Dichtigkeit erreicht und die Arbeit spürbar viel schneller erledigt als beim Löten. Meine Mutter hat ein Haus was 12 m hoch ist und in noch nicht einmal zwei Stunden war die Zuleitung im Bad gelegt. Die Maschine inkl. Pressbackenset kannst du Mieten für ca. 30 € inkl. MwSt. pro Tag beim Maschinenverleih/Vermietung (bitte mal Erkundigen, nicht alle bieten diese Maschinen an). Kaufen kann man diese auch aber wofür solltest du ca. 1.100 € + MwSt. ausgeben, es sei den du hast mehrere Häuser.

                                Auf ein paar dinge solltest du dennoch achten:

                                1. Zum Verbinden der Rohre nur spezielle Pressfittinge kaufen (schau mal z.B. Ebay);

                                2. Die richtigen Pressbacken für die Fittinge leihen;

                                3. Keine Akkupresse sondern eine Elektrohydraulische Presse leihen;

                                4. Nach dem kürzen der Rohe aufpassen das kein Grat übersteht, also Überstände immer schön weg Feilen;

                                5. Hier noch ein kleiner Link falls mal die ganze Leitung Saniert werden sollte extra für Heimwerker :-): http://www.youhome.de/mod_wasserleitungen.html

                                Da ich nicht weiß welche Wände du hast (Beton, Lehm etc.), habe ich für dich hier mal ein Link bereitgestellt: http://www.ciao.de/Verputzen_Tipps_Tricks__468445
                                Vielleicht hilft dir das weiter. Wenn die Fläche nicht so groß ist würde ich das an deiner stelle selbst versuchen es zu verspachteln.

                                Schönen Sonntag wünsche ich dir noch!

                                Gruß,

                                Runtop

                                1. Hello und guten Morgen.

                                  * Referenzliste wird mit Requestparametern verglichen, hier stehen ja sowieso alle drin die dürfen ob diese nun kommen oder nicht.

                                  * Bei Abgleichfehler, z.B. PHPSESSID steht im Request Parameter, wurde aber nicht übermittelt dann PHPSESSID Element aus dem Array löschen mit unset().

                                  Bring das jetzt nicht durcheinander.

                                  Also nochmal von vorne:

                                  1.   POST-Parameter ablaufen und mit der Vergleichsliste vergleichen.
                                       Damit man auch (tiefe) Arrays als Parameter haben kann,
                                       wie z.B. Checkboxgruppen und Multiselects, habe ich die Funktion geschrieben.

                                  Also aus den Post-Paramtern zuerst ein Namensarray machen, und
                                       _dieses_ dann vergleichen.

                                  2.   Kommt ein Parameter, der nicht erwartet wurde, ist sofort Schluss

                                  3.   Jeder verglichene Parameter wird vermerkt in einer Spalte (nennen wir sie "ok")
                                       des Vergleichsarrays

                                  4.   Dann die Spalte 'ok' ablaufen und alle Parameter behandeln, die dort _nicht_
                                       abgehakt sind. Die sind ja nicht über das Post-Array gekommen.
                                       In der dritten Spalte (nennen wir sie 'set_default') gucken, ob dort ein
                                       Eintrag ist (je nachdem, wie kompliziert Du das machen willst, entweder nur
                                       truu/false, oder eine Kennung dafür, wie der Default-Wert zu behandeln ist).
                                       Soll ein Default-Wert geholt werden, disen entsprechend aus einer weiteren
                                       Spalte des Vergleichsarrays holen und einsetzen. Das Element muss erzeugt werden.

                                  5.   Soll kein Default-Wert geholt werden, dann muss das Element auch nicht erzeugt werden.

                                  Die Liste kann man sich als CSV-Datei abspeichern und dann dazuladen. Die entsprechenden Funktionen gibt es auch schon in  meinen Snippets. Ich baue noch an einem Hilfstool, die Liste zu erstellen. Aber im Prinzip geht das ja auch mit jedem Texteditor. Man muss eben nur darauf achten, in welcher Codierung man speichern muss.

                                  #---

                                  Zu deiner Küche:
                                  Ich hoffe doch dass du noch keinen Wasserschaden angerichtet hast! ;-)

                                  Nee, den hatte der Winter bzw. der Voreigentümer schon angerichet.

                                  Ich habe das jetzt klassisch gelötet. Erstaunlich, dass ich das noch konnte. Das Gas in der Lötlampe war auch schon über 20 Jahre alt :-)

                                  Für's Pressen braucht man mehr Platz, als fürs Löten. Und von 30 €uro mach ich dann lieber eine Sause. Das alte Wasserrohr war auch wirklich nicht fachgerecht gebaut. Erstaunlich, dass das überhaupt ca. >30 Jahre gehalten hat.

                                  1. Hier noch ein kleiner Link falls mal die ganze Leitung Saniert werden sollte extra für Heimwerker :-): http://www.youhome.de/mod_wasserleitungen.html

                                  Ich muss demnächst (endlich) eine Zentralheizung einbauen.

                                  Die Links sind gut. Verputzen muss ich noch.

                                  Liebe Grüße aus dem schönen Oberharz

                                  Tom vom Berg

                                  --
                                  Nur selber lernen macht schlau
                                  http://bergpost.annerschbarrich.de
                                  1. Hi Tom,

                                    sorry für das späte melden bei dir aber mein Internet Provider hat wieder einmal absolute Sch… gebaut. Fünf Tage mit der Störungszentrale diskutiert bis endlich heute ein fähiger Mitarbeiter (Subweiser) am Apparat war der das Internet wieder zum laufen bekam. Habe echt die Schnauze voll von diesem Verein und werde wohl wieder zum guten alten aber 10 € teureren T wechseln.

                                    Zu meiner Idee, das war nur eine Idee um dir die Sache etwas zu erleichtern! Zum anderen probiere ich gerne auch mal was aus wenn der Gedanke dazu ausreicht. ;-)
                                    Natürlich ist mir ein rat von einem Profi sehr wichtig, ansonsten hätte ich mich nicht an dieses Forum gewandt und ich finde es klasse das hier einem sehr viel vermittelt wird.
                                    Also bleiben wir bei deinem Vorschlag nur läuft mir langsam die Zeit davon. Ich weiß das gute dinge weile haben aber wie kann ich dich jetzt Unterstützen das mein Vorhaben schnellstens umgesetzt wird?

                                    Nochmals zu deiner Küche:
                                    Da hast du Recht, fürs Pressen braucht man Platz aber dass sich das Gas 20 Jahre in der Dose halten konnte grenzt schon fast an Zauberei! :-)

                                    Vielleicht kannst du mit den Links was anfangen für deine neue Zentralheizung:

                                    http://www.zentralheizung.de (Förderungen, Gesetze und Verordnungen uvm.)
                                    http://www.das-baulexikon.de/lexikon/Zentralheizung.htm (Fachbeiträge)
                                    http://www.spotlight-wissen.de/archiv/message/535892.html
                                    http://www.dasheimwerkerforum.de/index.php

                                    Gruß,

                                    Runtop

                                    1. Tom?????????????

  3. hi,

    Es geht um ein Kontaktformular (Affenformular)

    Ich kann dir jetzt zwar nicht direkt bei deinem Problem helfen, habe aber hier 2 Funktionen, die dir Eventuell nützlich sein könnten.

    Es geht Speziell um die Affenformalität bei Eingabefeldern und Eingabebereichen.

    http://dj-tut.de/z_test/selfhtml/form_func.php.

    Solange es ein POST gibt, werden die Daten dem User immer wieder vorgesetzt.

    Die Prüfung der Felder mache ich Händisch, also jedes Feld für sich, das geht bei mir schneller und ich bin Flexibler, was die Prüfungen angeht.

    mfg

    --
    echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
    array(2) {
      ["SELFCODE"]=>
      string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
      ["Meaningful"]=>
      string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
    }
    1. Hello,

      Ich kann dir jetzt zwar nicht direkt bei deinem Problem helfen, habe aber hier 2 Funktionen, die dir Eventuell nützlich sein könnten.

      Ich kann mich daran erinnern, dass Du auch mal so eine eierlegende Formularmich-Sau (sic!) bauen wolltest oder gebaut hast. Im Prinzip läsuft es auf ein 4-GL-Tool hinaus, mit dem man seine Formulare und die Datenbindung vorbereitet und das einem dann die passenden Scripts erstellt oder auch nur die Tabelle erstellt, aus der das CMS das dann nachher alles generiert. Dann muss man nur noch die Datenbank bauen und die Views designen und alles andere geht fast von alleine :-))

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. hi Tom,

        Ich kann mich daran erinnern, dass Du auch mal so eine eierlegende Formularmich-Sau (sic!) bauen wolltest oder gebaut hast.

        Ich war wirklich verrückt genug, es zumindest zu probieren ;)

        Ich habe jetzt gemerkt, das es auf diese Weise, also alles händisch, schneller und sicherer geht und die Prüfungen viel Exakter sind.

        Das Problem ist, wenn man wirklich _alles_, was ins Formular kommt, über ein Array lösen möchte, wird das ein Megaarray, zumindest wenn man dann noch Wert auf die Ausgabe legt und verschachtelungen mit Bspw. fieldsets haben möchte; als ich an diesen Punkt kam, und mein Array schon 7 Ebenen Tief war, habe ich die Dateien gelöscht und mich wieder besonnen ;))

        Im Prinzip läsuft es auf ein 4-GL-Tool hinaus, mit dem man seine Formulare und die Datenbindung vorbereitet und das einem dann die passenden Scripts erstellt oder auch nur die Tabelle erstellt, aus der das CMS das dann nachher alles generiert. Dann muss man nur noch die Datenbank bauen und die Views designen und alles andere geht fast von alleine :-))

        Ich war schon bei einem 7-Dimensionalen Array und knappen 400 Zeilen zusätzlichen Code, bin mal gespannt, wie euer Produnkt aussehen wird ;)
        Obwohl ich es mittlerweile Sicherlich mit weniger Code hinkriegen müsste, habe ja in der Zwischenzeit ein wenig gelernt, Bspw. ohne global in meinen Funktionen zu arbeiten ;)

        mfg

        --
        echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
        array(2) {
          ["SELFCODE"]=>
          string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
          ["Meaningful"]=>
          string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
        }
        1. Hallo Malcolm Beck´s,

          auch an dir ein fettes danke für deine Stellungnahme!

          Im Übrigen hast du eine sehr informative Internetseite für Nachwuchs Deejay’s erstellt.
          Was ich allerdings vermisse ist ein wenig Technikerklärung bezüglich Beschallung, Mixer, Tonabnehmer und wofür welche Systeme sich am besten eignen. Fürs Scratchen ist der Mackie mit seinem kurzen Faderweg bestimmt am idealsten. Da ich nicht Scratche bevorzuge ich eher die größeren Clubmixer Produkte Allen & Heath, Dateq, Dynacord M1, Ecler oder Glockenklang. Wäre schön wenn du deine Webseite noch ein wenig ausbaust mit noch mehr Tipps im bereich Technik der höheren Klasse wenn es dir möglich ist.

          Freundliche Grüße,

          Runtop

          1. hi Runtop (Leidensgenosse? ;)),

            auch an dir ein fettes danke für deine Stellungnahme!

            Gerne doch.

            Im Übrigen hast du eine sehr informative Internetseite für Nachwuchs Deejay’s erstellt.

            Mit den Infos hält es sich ja noch in Grenzen, die Seite befindet sich im Dauer-Aufbau und ist erst ein Jahr Jung ;)

            Was ich allerdings vermisse ist ein wenig Technikerklärung bezüglich Beschallung, Mixer, Tonabnehmer und wofür welche Systeme sich am besten eignen. Fürs Scratchen ist der Mackie mit seinem kurzen Faderweg bestimmt am idealsten. Da ich nicht Scratche bevorzuge ich eher die größeren Clubmixer Produkte Allen & Heath, Dateq, Dynacord M1, Ecler oder Glockenklang. Wäre schön wenn du deine Webseite noch ein wenig ausbaust mit noch mehr Tipps im bereich Technik der höheren Klasse wenn es dir möglich ist.

            Das Problem ist, dass ich von Anfang an auf Black-Music Fixiert war, da werden einfache Battlemixer mit wenig EQ-Leistung bevorzugt, ich Persönlich habe mich auch noch nie mit der Technik hinter dem Equipment beschäftigt, daher wird das ein wenig schwer für mich, da ins Detail zu gehen (wobei ich dir Natürlich zustimme; ein Paar Empfehlungen kommen aber noch).
            Ich habe bisher nur mit Battlemixern gearbeitet, House-Mixen bringe ich mir gerade langsam bei (seeehr Langsam ;), da ist der Mackie auch noch gut zu gebrauchen, die EQ von Mackie sind Definitiv Mix-Fest.

            mfg

            --
            echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
            array(2) {
              ["SELFCODE"]=>
              string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
              ["Meaningful"]=>
              string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
            }
            1. Hallo Malcolm Beck´s,

              Leidengenosse ist gut! :-)
              Ja nennen wir es mal so, seit 20 Jahren aber ab dem Jahr 2000 nicht mehr Hauptberuflich sondern nur noch auf Abruf wenn jemand Krank wird, dann springe ich ein.
              Irgendwann fühlt man sich zu alt für den Sch…! LOL
              Musikrichtung alles was anfällt R&B, Hip Hop, Vocal, Electro (aber nicht alles, gibt viel  Schrott darunter), Dancefloor, Hardhouse und Trance.

              Freundliche Grüße,

              Runtop

              1. hi Runtop,

                Ja nennen wir es mal so, seit 20 Jahren aber ab dem Jahr 2000 nicht mehr Hauptberuflich sondern nur noch auf Abruf wenn jemand Krank wird, dann springe ich ein.

                Hast du ne Website Online? Link bitte ;)

                Irgendwann fühlt man sich zu alt für den Sch…! LOL

                Bin Baujahr 80, noch geht es ;)

                Musikrichtung alles was anfällt R&B, Hip Hop, Vocal, Electro (aber nicht alles, gibt viel  Schrott darunter), Dancefloor, Hardhouse und Trance.

                Ja, Schrott gibt es leider in jedem Bereich des Lebens, dafür ist die Auswahl bei Musik Glücklicherweise sehr Gross.

                mfg

                --
                echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
                array(2) {
                  ["SELFCODE"]=>
                  string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
                  ["Meaningful"]=>
                  string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
                }
                1. Hallo Malcolm Beck´s,

                  als DJ habe ich keine Website online, ich werde von Discotheken bei Not gebucht wo ich früher angestellt war. Das sind kleine Klitschen mit einem Fassungsvermögen von 150 bis knapp 500 Gästen (durchlauf Wochenende, ca. 300 bis 700 am Abend). In Großbetriebe habe ich es nie geschafft, da ich mich u. a. nicht auf eine feste Musikrichtung spezialisiert hatte und auch die Connections gefehlt haben.

                  Du bist ja mit deinem Baujahr noch taufrisch, ich allerdings werde im Juli 42 Jahre und da tun einem schon die Knochen weh vom vielen stehen auf eine Stelle! :-) Nein, Spaß bei Seite, ganz ehrlich gesagt hatte ich vor neun Jahren irgendwie keine Lust mehr fünf Nächte hinterm Plattenteller, CD Player und PC zu stehen, zumal das Gastronomieleben allgemein seit Jahren immer mehr abbaut. Wo früher die Läden fünf Tage gut besucht waren ist heute aus Geldknappheit meist nur noch das Wochenende gut besucht und am Monatsende gibt es dann einen Besuchereinbruch weil die Kohle komplett fehlt. Da habe ich mir Gedanken gemacht und Hauptberuflich für die Zukunft umstrukturiert.

                  Die Website die ich gerade erstelle hat aber nichts mit meiner Aushilfstätigkeit als DJ zu tun, das geht in eine ganz andere Richtung und zwar bezüglich Marketing. Da die Seite aber noch nicht veröffentlicht ist kann ich dir auch noch keinen link dazu geben. Ich werde dir aber gerne bei Veröffentlichung denn link im Forum zukommen lassen!

                  Freundliche Grüße,

                  Runtop