Beiträge von Pool

    also getValue(); und getInput(); habe ich bereits probiert und kam zum selben ergebnis.


    Ich habe folgenden Fehler Code:

    Zitat

    Notice: Trying to get property 'dienstnummer' of non-object in C:\Users\Musik\Documents\Privat\xampp\htdocs\prime_pr_fms\modules\mod_dienstplanung_lspd\tmpl\default.php on line 53


    Die Line 53 gibt dies wieder:

    PHP
    <?php echo $dnr->dienstnummer;?>

    Danke vielmals für den Tipp, LukasHH - werde ich erarbeiten



    Kannst Du mir sagen wie man Daten aus dem Select/Option Feld auslesen kann. Es funktioniert nicht über den (name="") attribut.


    Wenn der User ein Name (als Option) auswählt, soll auch die Dienstnummer gezeigt werden. DIe SQL Anweisung habe ich getestet und Funktioniert.

    Es hagt irgendwie an der variable-übergabe.


    Ich habe folgende Sachen in der mod datei:


    Code
    use Joomla\CMS\Factory;
    jimport( 'joomla.html.select' );
    $app = Factory::getApplication();
    $dn = $app->input->get('fahrer_1');


    HTML

    PHP
    <select name="fahrer_1" type="submit">
      <option value="0">Auswählen</option>            
          <?php foreach ($personal as $name) : ?>
             <option value="<?php echo $name->dienstnummer;?>">
              <?php echo $name->name;?>       
      </option>
                        
          <?php endforeach;?>;    
     </select>            

    Hallo Lukas,


    danke dir !! Ich hab es geschafft und werde immer Motivierter etwas zu Programmieren.


    Im PHP Kurs hat man gesagt, das man folgende Dinge noch machen muss und werde jetzt mal recharchieren.


    1. Prüfung ob variable Eingabe eine Emailadresse ist: Hier wird immer das @ Zeichen in der Datenbank entfernt

    2. In der Datenbank werden die Passwörter nicht verschlüsselt (md4 oder sowas fehlt)

    3. User können im Formularfeld Code eingeben und muss unterbunden werden (TRIM ??)

    Hallo LukasHH,


    es klappt, danke Dir vielmals.


    - Dann brauche ich eine Prüfung, ob eine Variable Numerisch ist . z.B. bei den Telefonnummer dürfen keine Buchstaben eingegeben werden.

    Ich würde es wie folgt lösen:


    Code
     <?PHP 
        if (is_int ( $app->input->get('telefon'))) {
            $telefon         = (int) $app->input->get('telefon');
        }
         else {
            echo 'Es dürfen nur Nummern verwendet werden. ';
        }
    
    ?>

    Die Prüfungen werden kann verschachtelt gegliedert und wenn alle zustimmen, dann wird der ausgeführt.



    - Ich habe da noch ein Problem mit dem ID in den drei SQL Tabellen: Der Aufbau ist im Anhang

    Immer wenn ich ein neuen Benutzer im Frontend über das Modul anlege, werden die ID's in den Tabellen (mitarbeiterstamm, user_group_map)

    falsch gesetzt. Die ID der User Tabelle ist fortlaufend mit 835 und wird jeweils im 1 erhöht. Die Anderen beiden Tabellen fangen bei 0 an oder bleiben 0.


    Wie sage ich SQL das die Primary Nr der user-tabelle auch in den anderen beiden Tabellen gesetzt wird, wobei die Nummer um 1 erhöht wird und einen Anfang bei 835 hat.



    PS: Deine Dokumentation werden ich in den nächsten Tagen mal durcharbeiten. Du hast Recht. Es klappt immer besser. Man muss es nur machen...

    Hallo Lukas,


    ich habe mir leztes Jahr das Joomla Handbuch gekauft. Aber dieses Buch beschreibt alles, aber nicht das was man benötigt :-). Also bin ich nochmals bei Amazon einkaufen gegangen und habe mir das Joomla Template Buch und das Modul /plugin / Component Buch von Jens *** gekauft.


    Die letzten beiden habe ich mir auch angesehen und die 5 Seiten für die Modulentwicklung angesehen. Vor ca 1.5 Wochen habe ich dann angefangen mir die Praxis anzueignen und hab einfach mal angefangen von O reilly php und SQL mir angesehen.


    Fazit: Du hast recht. Man investiert eine Menge Zeit. Geld möchte ich nicht damit verdienen und dient 100% als Hobby, da ich Spaß dran habe. Leider stößt man ganz schnell an seinen Grenzen.


    Nun sitze ich wieder seit ca 8 Std dran und habe mich wieder versucht: und es klappt nicht ...


    1. Prüfung: Leere Felder und doppelte Benutzernamen


    Eine Prüfung zu programmieren, damit Doppelte Benutzernamen nicht vorhanden sind.


    mod Datei


    helper.php


    2. SQL-Anweisung: insert mit drei verschiedenen Tabellen


    Ich habe ja mitbekommen das alle id's der 3 Tabellen automatisch gebucht werden. Aber irgendwie klappt das nicht.



    Danke für die Mühe mir zu Helfen und deine Info Sammlung. Ein wenig Frustrierend, aber "Probieren geht über Studieren".


    Mal sehen, wo ich Fehler gemacht habe.

    sorry, aber ich gebe mir Mühe fragen zu beantworten, wenn ich dies weiß. Ich bin ja froh, das man mir hier auch geholfen hat. Ich habe oben unmut rausgelesen, wo ich nichts dafür kann. Auf der anderen Seite ist eine Dokumentation im Internet nicht so besonders gut.

    Hallo RE:Later,


    danke für den Kommentar ! Aber ich bin kein Profi noch Professor -> sonst würde ich hier Fragen beantworten. Zum Hintergrund: Ich habe vor 1.5 Wochen angefangen PHP und mysql zu lernen. Ich bin schon etwas weit gekommen und jeder war mal Unwissener. Ich versuche für eine kleine Spielegemeinschaft ein reporting in Joomla zu entwicklen, wobei der Spieler sich einloggen kann und interactiv Forms mit Internet of Thinks reporten kann, die zum Spiel gehören (z.B Dienstplan). Dabei sollen die Spieler sich selber managen und das nur im Front Bereich.


    Ich weiß, das die Datenbank inkonsistent ist, da nur die #__users abgefragen wurde. Wenn Du mein vorherigen post gelesen hättest , hättest Du gesehen, das ich gerne den neuen user eine Gruppe zuweisen möchte. Aber es hagt wegen unwissenheit.


    MIt der Empty Prüfung in der "mod" Datei wollte ich prüfen, ob alle Felder im Input ausgefüllt sind, damit die Daten des neuen Benutzers aufgenommen werden.


    Trotzdem danke für deine vorherige Hilfe und hoffe das DU Trotzdem Anfängern weiterhilfst.

    ich verstehe, und es funktioniert - danke


    ich habe jetzt die SQL Anweisung erweitert, da ich 3 Tabellen habe, wo etwas reingeschrieben werden soll. Das sind folgende:


    - #__users

    - #__mitarbeitertamm --> Spalten ( id, dienstnummer, rang, telefon) wobei die id = userid sein soll, damit die tabelle verbunden werden kann

    - #__usergroup_maps -> Spalten (id, group_id)


    ich habe die 3 Tabellen jetzt mit join left wie folgt verbunden.



    in der mod_erstellen_lspd habe ich rangname erweitert

    Code
    $rangname     = (int) $app->input->get('rangname');


    in der helper.php habe ich das Insert auf der Rangnummer sowie die Gruppen ID und erweitert:



    Zitat

    und erhalte den folgenden Fehlercode:

    1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS `a`
    (`a`.`name`,`a`.`username`,`a`.`email`,`a`.`password`,`b`.`group_id`,...' at line 1



    Wie kopiert man die User ID von #__users in die anderen beiden tabellen, sodass ich den Rang und die Gruppe festsetzen kann?

    ich habe das drin:

    Code
    // User-ID wird automatisch gesetzt
        $data['id'] = 0;

    stimmt und müsste sowas haben:


    Code
    // User-ID wird automatisch gesetzt
        $data['id'] = ???; /* nehme das letzte UserID und erhöhe diese um 1 */

    Wenn ich die ID in der SQL insert abfrage lösche kommt trotzdem der Fehler. Ich habe keine Change etwas im Formular einzugeben, da diese Error Bildschirm von Joomla im View gezeigt wird anstatt die Fehlermeldung auf meiner HP.


    RE.Later hat mir oben ja geholfen und mir ein sheet gegeben, welches ich eingebaut habe:

    und habe da die Datenbankabfrage aufgesetzt:


    Hallo Zusammen,


    ich habe die helper.php datei bearbeitet. DIe Benutzergruppe darf nur die Nr 10 (so steht es in der Datenbank unter #__usergroup_maps sein.


    Aber ich bekomme den selben Fehler -> 1062 - Duplicate entry '' for key 'idx_username'


    Wo ist bei mir der Fehler?


    helper.php


    Hallo LukasHH


    ich habe ja die besprochen Sachen integriert. Also die Daten der input anweisungen werden übergeben das klappt. Ich habe die Post Anweisung rausgenommen und diese durch folgende ersetzt:


    mod_einstellen_lspd.php --> aktualisierung



    Damit möchte ich Prügen, ob jede input-Anweisung einen Wert hat.


    Ich bekomme wieder die Mitteilung: 1062 - Duplicate entry '' for key 'idx_username'

    Diese kommt wahrscheinlich vom meiner helper.php Datei, da die SQL Anweiung komplexer ist als ich dachte.

    Da ich seit ca 1.5 Wochen php und mysql lerne bin ich wirklich schon voran gekommen. Natürlich ist Joomla noch für mich etwas eigen und komplex. Aber wenn man da durchblickt dann geht es eigentlich.


    viele Grüße

    Sascha

    Liebe Jommla Coomuniy,


    ich habe hier schon echt viel gelernt und danke Eurch für die Hilfe. Nun habe ich noch ein Modul, welches ich programmiere. Kurzes Hintergrundwissen. Das Modul soll im Registrierten für eine Benutzergruppe vorhanden sein, Der Registierte User darf neue Benutzer einpflegen, sodass der neue Benutzer sich einloggen kann.


    Bisher habe ich die "provesorisch" die "default.php" und die "mod_entstellen_lspd" programmiert. Das Formular der default.php gibt somit alle Werte an die mod_entlassen_lspd weiter.


    Folgende DInge funktinierne nicht:


    - die insert Anweisung ist falsch und gibt mir folgende Mitteilung: 1062 - Duplicate entry '' for key 'idx_username' --> das Präfix idx benutze ich nicht und komme es auch nicht in MYSQL finden,

    - wie erstelle ich das Token für user_id

    - wie erstelle ich das Registrierungsdaten



    Könnt Ihr mir helfen, wie ich das hinbekomme.



    Bisher habe ich folgendes schon programmiert.


    default.php


    mod_einstellen_lspd



    helper.php


    die Variable wird jetzt übergeben. Aber zwischen der SQL function und der mod_datei stimmt was nicht, da die SQL Anweisung nicht ausgeführt wird.


    mod_entlassen_lspd.php

    Code
    if(!empty($app->input->get('kill_id_lspd'))){
        $id_lspd = (int) $app->input->get('kill_id_lspd');
        modEntlasseMitarbeiter_lspd::loescheIDlspd($id_lspd);
    }


    helper.php


    Code
        public static function loescheIDlspd($id_lspd) {
    
            $db   = JFactory::getDBO();
            
            $query  = $db->getQuery(true)
                        ->delete($db->quoteName('#__users'))
                        ->where($db->quoteName('id') . ' = ' . $db->quote($id_lspd));
           
            $db->execute(); 
            }

    danke für die Erklärungen und die Hilfe. Ich habe die jetzt nochmals alles angepasst und festgestellt das die variable hier "

    PHP
    <p>Button ID: <?php echo $id_lspd; ?> </p>

    im default.php nicht definiert ist und auch nicht übergeben wird.


    wenn ich aber dies mache, wird die variable übergeben:


    PHP
    <input type="submit" class="button" name="kill_id_lspd" value="<?php echo $name->id; ?>">


    ich habe hier "submit" anstatt "button" eingegeben.

    ich habe "execute" gewechselt und geht immer noch nicht.



    In der helper.php ist eine classe mit zwei Funktionen die erste Funktion funktioiniert ja, aber die zweite nicht.


    Muss ich die zweite funktion auch in der "mod_entlassung_lspd.php" aufzeigen, wie die erste "$result = modEntlasseMitarbeiter_lspd::EntlasseMitarbeiter_lspd();"



    ICh habe nochmals die helper.php Datei eingefügt.

    ich habe den "(int)" auch eingegeben und es klappt immer noch nicht.


    ich poste mal das ganze (ohne Manifest):


    default.php



    helper.php



    mod_entassen_lspd


    Hallo Lukas,


    bisher habe ich das verstanden und auch umgesetzt - dafür ersteinmal ein danke schön.


    Bisher passiert nichts, wenn ein Button gedrückt wurde. Wie folgt wurden das Modul abgebildet:


    default.php

    PHP
    <form  method="post">                                              
         <button type="submit" name="kill_id_lspd" value="<?php echo $name->id; ?>">Entlassen</button>
    </form>


    helper.php

    Code
        public static function loescheIDlspd() {
            
            $db     = JFactory::getDBO();                          
            
            $query     = $db->getQuery(true)
                         ->delete($db->quoteName('#__users')) 
                         ->where($db->quoteName('id' == $id_lspd));
                        
            $db->setQuery($query);   
        }


    mod_entlassen_lspd


    Vielleicht ist die SQL Anweisung nicht richtig