Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrzeiliges Empfängerfeld

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrzeiliges Empfängerfeld

    Hallo

    Ich hab ein Textfeld für PM Empfänger.
    Dort darf man bis zu 5 Empfänger hineinschreiben.
    Die jeweiligen Empfänger sollen in je einer Zeile stehen, sodass ich sie exploden und dann in die Datenbank einfügen kann.

    Ich hab da mal etwas probiert leider funktioniert es nicht richtig.

    PHP-Code:

           
    // explode reciever list and select user data
            
    $recievers explode("\n"$_POST['reciever'], 6);

             
    // if count(recievers) is bigger than 5 show error
              
    if($recievers[5] != "" OR $recievers[5] != "\n")
               {
                 
    $error_msg "
     - Es dürfen maximal 5 Empfänger angegeben werden"
    ;
               }
              else
               {
                   
                   
                
    // foreach for checking user data
                 
    foreach($recievers as $recievers_select)
                  {
                    
                    
    $select_reciever_query mysql_query("SELECT userid, username, ignore_list, opt_contact_recieve_pms, opt_contact_email_if_new_pm, opt_contact_popup_if_new_pm FROM "atnopis_prefix ."_users WHERE username = '"$recievers_select ."'") or die(mysql_error());
                    
    $select_reciever_row mysql_fetch_array($select_reciever_query);
                    
                       
    // check users contact options
                        
    if($select_reciever_row['userid'] < 1)
                         {
                           
    $error_msg "$error_msg
     - Der User "
    $recievers_select ."existiert nicht in unserer Datenbank.Btte überprüfen sie die Schreibung!";
                         }
                        else if(
    $select_reciever_row['opt_contact_recieve_pms'] == 0)
                         {
                           
    $error_msg "$error_msg
     - Der User "
    $select_reciever_row['username'] ." will nicht kontaktiert werden";
                         }
                        else if(
    strpos($select_reciever_row['ignore_list'], ":"$_SESSION['userid']))
                         {
                           
    $error_msg "$error_msg
     - Der User "
    $select_reciever_row['username'] ." will nicht von Ihnen kontaktiert werden";
                         }
                        else
                         {
                           
                           
    mysql_query("INSERT INTO "atnopis_prefix ."_privatemessages_rec ( pm_id, pm_recieverid, pm_reciever_name, blindcopy, folderid, deleted, view, reply, forward) VALUES (  '$pm_id', '"$select_reciever_row['userid'] ."', '"$select_reciever_row['username'] ."', '0', 'inbox', '0', '0', '0', '0')") or die(mysql_error());  
                         
                         }
                  
                  }

               } 

    Das Problem ist jedoch , dass immer nur das letzte Array eingetragen wird.
    Ich hab nun probiert mit "nl2br" es praktisch mit Zeilenumbrüchen auszugeben und da ergiebt sich daraus, dass nur beim letzten Namen kein Zeilenumbruch stattfindet und sonst bei den anderen schon.
    Das könnte erklären warum nur dieser User gefunden und eingetragen wird.
    Aber was kann ich machen um auch die anderen rein zu bekommen ?
    mit replacen hab ichs bereits versucht funktioniert leider nicht !

    Oder weiß jemand eine bessere Möglichkeit dies zu realisieren ?


    Gruß SimonErich
    Der G-Translator

  • #2
    Wende mal innerhalb der Schleife ein trim() auf das jeweils aktuell iterierte Element des Arrays, da dieser Name ansonsten nicht in der Datenbank gefunden wird.

    Kommentar


    • #3
      PHP-Code:
       // if count(recievers) is bigger than 5 show error 
      if($recievers[5] != "" OR $recievers[5] != "\n"

           
      $error_msg "
       - Es dürfen maximal 5 Empfänger angegeben werden"


      Was für ein Schrott!! $recievers[5] gibt es nicht, wenn ich nur zwei Empfänger eingetragen habe! Lustigerweise steht im Kommentar schon drin, wie man es machen sollte.

      Und Zeilen mit über 300 Zeichen sind unlesbar!

      Gruß
      phpfan

      Kommentar


      • #4
        Dein Skript ist wirklich nicht gut, denn man kann haufenweise Fehler machen.
        Der Empfänger kann falsch geschrieben werden, die PM wird trotzdem an
        den Rest verschickt. Die Formatierung der Eingabe ist Humbug wie phpfan
        schon gesagt hat, und Empfänger schreibt sich nicht "reciever".
        http://dict.leo.org/?search=empf%C3%A4nger&lang=de

        Alles in allem: Ein schlampiges, nicht durchdachtes Skript.

        Als Vorschlag:
        Usability heißt auch, dem User keine Möglichkeit zu geben, Fehler zu machen.
        Wie wärs also mit einem multiple-<select>-Feld oder einer Auflistung von 5 <select>-Feldern?

        Kommentar


        • #5
          Zitat von Zergling
          Als Vorschlag:
          Usability heißt auch, dem User keine Möglichkeit zu geben, Fehler zu machen.
          Wie wärs also mit einem multiple-<select>-Feld oder einer Auflistung von 5 <select>-Feldern?
          Das wird bei mehren 100 Benutzern aber schon sehr widerlich.

          Kommentar


          • #6
            Stimmt, aber wenn nur die Freundesliste angezeigt wird gehts.
            Mit <textarea> würde ich aber trotzdem nicht arbeiten, das ist einfach zu fehleranfällig.

            Kommentar


            • #7
              Zitat von Zergling
              Stimmt, aber wenn nur die Freundesliste angezeigt wird gehts.
              Das wäre eine Möglichkeit. Eine andere Möglichkeit wäre ein Eingabefeld, in das der Benutzer tippen kann und ab einer Eingabe von meinetwegen drei Zeichen wird mit AJAX ein HTTP-Request an den Server gesendet und die zutreffenden Benutzernamen werden als Auswahlliste ausgegeben.

              Kommentar


              • #8
                http://24ways.org/advent/easy-ajax-with-prototype

                Kommentar


                • #9
                  Stimmt, gute Idee.

                  btw: http://www.google.com/webhp?complete=1&hl=en

                  Kommentar

                  Lädt...
                  X