Ankündigung

Einklappen
Keine Ankündigung bisher.

Array - defined und unset?

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

  • Array - defined und unset?

    Hallo wieder einma...

    Habe wiedereinmal ein Problem mit meinem PHP Formular...

    Ich will ein Array Element löschen, falls ein anderes nicht ausgewählt ist. Blöderweise löscht er mir dieses Element auch, wenn das andere ausgewählt ist und ich versteh nich so ganz wieso.

    Zur erläuterung kurz: Es geht um ein Formular, bei dem ein Feld zum ankreuzen ist und ich nebenan was reinschreiben kann. Wenn das Feld nicht angekreuzt ist (erstes Arrayelement) soll der Text, der möglicherweise noch drin ist (zweites Arrayelement) gelöscht werden!

    Hier der Code:

    PHP-Code:

                        print_r
    ($interessen);
            if (!
    defined($interessen[3])) {
                unset(
    $interessen[4]);
                }
                        
    print_r($interessen);
        if    (
    count($interessen)>0) {
                
    $text .= "\n\nInteressiert sich für:\n";
                    foreach (
    $interessen as $interesse)
                    {
                        
    $text .= "-"$interesse ."\n";
                    }
            } 

    Dankeschön für die Hilfe

    MFG Toby
    codestyle.ch
    ----------------------------


  • #2
    Ich würde vermuten, dass wenn [3] nicht gegeben ist, wird [4] zu [3]... Wenn es das letzte ist, dann würd ich das so lösen:

    array durchzählen, wenn <4 das letzte löschen

    Kommentar


    • #3
      Nee, [4] wird nicht zu [3].. glaub ich jedenfalls..
      Wie meinst du das mit dem durchzählen und löschen?? Wie funktioniert das?

      Mir ist gerade aufgefallen, dass ich [3] auch löschen müsste danach, da ich ja nicht will, dass beim Mail ausgegeben wird, was das Value des kreuzchens ist, sondern, dass angezeigt wird, was dann ja dort geschrieben wurde (also beim feld neben dem kreuzchen, wie oben beschrieben)..

      Danke und entschuldige für die vielen verwirrenden Worte...

      MFG Toby
      codestyle.ch
      ----------------------------

      Kommentar


      • #4
        zeig doch mal eben das formular und das ganze script

        Kommentar


        • #5
          Das ganze wäre einwenig gross, aber ich zeig dir ma das wichtigste:

          PHP-Code:

            
          unset($errors);
            if(!isset(
          $_SESSION['captcha'])) $errors[] = 'Session error';
            if (
          $email == "" or !preg_match("/^[^@]+@.+\.\D{2,5}$/"$email)) $errors[] = "die E-Mail-Adresse wurde nicht angegeben oder sieht nicht richtig aus";
            if (
          $name == ""$errors[] = "es wurde kein Name eingegeben";
            if (
          $vorname == ""$errors[] = "es wurde kein Vorname eingegeben";
            if ((
          $interessen[4] == "") && !($interessen[3] == "")) $errors[] = "Sie haben keine zusätzlichen Interessen angegeben";  // --> Geht iwi nich mehr so ganz??
            
          if ($text == ""$errors[] = "es wurde keine Nachricht eingegeben";
            if (
          $_FILES['probe']['size'] > $max_attach_size$errors[] = "Attachment zu groß (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB";
            if(
          $_POST['captcha_word'] != $_SESSION['captcha']) $errors[] = 'Sicherheitscode ist falsch';


            if (empty(
          $errors))
             {
              
          $text stripslashes($text);
              
          $subject stripslashes($subject);
                
          $text "Folgende Nachricht wurde über das Kontaktforumular versendet:\n\n".$text;
              if (
          $name != ""$mail_name $name; else $mail_name "unbekannt";
              if (
          $vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
              if (
          $anrede != ""$text "Anrede: ".$anrede."\n\n".$text;
              if (
          $subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
              if (
          $email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
              if (
          $telefon != ""$text "Telefon: ".$telefon."\n\n".$text;
              if (
          $firma != ""$text "Firma: ".$firma."\n\n".$text;
              if (
          $strasse != ""$text "Strasse: ".$strasse."\n\n".$text;
              if (
          $postfach != ""$text "Postfach: ".$postfach."\n\n".$text;
              if (
          $plz_ort != ""$text "PLZ / Ort: ".$plz_ort."\n\n".$text;


                              
          print_r($interessen);
                  if (!
          defined($interessen[3])) {
                      unset(
          $interessen[4]);
                      }
                      unset(
          $interessen[3]);
                              
          print_r($interessen);
                              
              if    (
          count($interessen)>0) {
                      
          $text .= "\n\nInteressiert sich für:\n";
                          foreach (
          $interessen as $interesse)
                          {
                              
          $text .= "-"$interesse ."\n";
                          }
                  } 
          Formular:

          Code:
          <form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"><div>
            <p>Ich interessiere mich für:</p>
            <p><input type="checkbox" name="interessen[0]" value="mitgliedschaft">Mitgliedschaft</p>
            <p><input type="checkbox" name="interessen[1]" value="sponsor">Teilnahme als Sponsor</p>
            <p><input type="checkbox" name="interessen[2]" value="bannerwerbung">Bannerwerbung</p>
            <p><input type="checkbox" name="interessen[3]" value="diverses">&nbsp;<input type="text" name="interessen[4]" value="Andere Interessen" size="35"></p>
            <br />
            <p>Meine/unsere Adresse lautet:<br />
            <span style="font-size:10px">* sind Pflichtfelder und m&uuml;ssen ausgef&uuml;llt werden!</span></p>
            
            <p>Anrede:<br /><select name="anrede" size="1" tabindex="2"><option value="herr">Herr</option><option value="frau">Frau</option></select></p>
            <p>Name: *<br /><input type="text" name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="35" /></p>
            <p>Vorname: *<br /><input type="text" name="vorname" value="<?php if (isset($vorname)) echo htmlentities(stripslashes($vorname)); else echo ""; ?>" size="35" /></p>
           .........Mehr unnötiger Code..........
            <p>E-Mail: *<br /><input type="text" name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="35" /></p>
            <p>Telefon:<br /><input type="text" name="telefon" value="<?php if (isset($telefon)) echo htmlentities(stripslashes($telefon)); else echo ""; ?>" size="35" /></p>
            <p>Betreff:<br /><input type="text" name="subject" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="35" /></p>
            <p>Nachricht:<br /><textarea name="text" cols="44" rows="6"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?></textarea></p>
            <p>Attachment:<br /><input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="20"/><br /><span style="font-size:10px;">Bitte höchstens 1000kb Bilder hochladen!</span></p>
            <p>Sicherheitscode<br /><img border="1" class="captcha" src="formmail_img/image.php" >&nbsp;&nbsp;&raquo;&nbsp;<input class="captcha" type="text" name="captcha_word" value="" size="10" /></p>
            <br>
            <p><input type="submit" name="form_submitted" value="Absenden" /> <input  type="checkbox" name="copy" value="true" /> Kopie an Absender</p>
            </div></form>
          Thx, for help
          Gruss Toby
          codestyle.ch
          ----------------------------

          Kommentar


          • #6
            Und nun zum Verständnis: Wenn "diverses" ausgewählt ist, soll das Textfeld mitgesendet werden, wenn nicht, dann nicht?

            Kommentar


            • #7
              Nicht ganz: Wenn diverses ausgewählt ist, soll das Textfeld gesendet, diverses selbst aber gelöscht werden, wenn es nicht ausgewählt ist, soll das Textfeld nicht gesendet (also aus dem Array gelöscht) werden!

              Danke ^^
              codestyle.ch
              ----------------------------

              Kommentar


              • #8
                so mal eben drin rumgewurschtelt... - ungetestet aber so könnte es auf die schnelle funktionieren, ist aber nicht schön gelöst...

                script
                PHP-Code:
                  unset($errors);
                  if(!isset(
                $_SESSION['captcha'])) $errors[] = 'Session error';
                  if (
                $email == "" or !preg_match("/^[^@]+@.+\.\D{2,5}$/"$email)) $errors[] = "die E-Mail-Adresse wurde nicht angegeben oder sieht nicht richtig aus";
                  if (
                $name == ""$errors[] = "es wurde kein Name eingegeben";
                  if (
                $vorname == ""$errors[] = "es wurde kein Vorname eingegeben";
                  
                #if (($interessen[4] == "") && ($interessen[3] != "")) $errors[] = "Sie haben keine zusätzlichen Interessen angegeben";  // --> Geht iwi nich mehr so ganz??
                  
                if ($text == ""$errors[] = "es wurde keine Nachricht eingegeben";
                  if (
                $_FILES['probe']['size'] > $max_attach_size$errors[] = "Attachment zu groß (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB";
                  if(
                $_POST['captcha_word'] != $_SESSION['captcha']) $errors[] = 'Sicherheitscode ist falsch';


                  if (empty(
                $errors))
                   {
                    
                $text stripslashes($text);
                    
                $subject stripslashes($subject);
                      
                $text "Folgende Nachricht wurde über das Kontaktforumular versendet:\n\n".$text;
                    if (
                $name != ""$mail_name $name; else $mail_name "unbekannt";
                    if (
                $vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
                    if (
                $anrede != ""$text "Anrede: ".$anrede."\n\n".$text;
                    if (
                $subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
                    if (
                $email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
                    if (
                $telefon != ""$text "Telefon: ".$telefon."\n\n".$text;
                    if (
                $firma != ""$text "Firma: ".$firma."\n\n".$text;
                    if (
                $strasse != ""$text "Strasse: ".$strasse."\n\n".$text;
                    if (
                $postfach != ""$text "Postfach: ".$postfach."\n\n".$text;
                    if (
                $plz_ort != ""$text "PLZ / Ort: ".$plz_ort."\n\n".$text;


                                   
                /* print_r($interessen);
                    if (!defined($interessen[3])) {
                            unset($interessen[4]);
                            }
                            unset($interessen[3]);
                                    print_r($interessen);
                                    */
                                    
                    
                if    (count($interessen)>0) {
                            
                $text .= "\n\nInteressiert sich für:\n";
                                foreach (
                $interessen as $interesse)
                                {
                                   if ((
                $interesse != "") or ($interesse != "Andere Interessen"){ $text .= "-"$interesse ."\n"; }
                                }
                        } 

                Kommentar


                • #9
                  Okay, jetzt mal ohne, dass ichs ausprobiert..
                  das würde zwar höchstwahrscheinlich funktionieren, jedoch nur wenn der Text genau "Andere Interessen" ist.
                  Und wenn das ja nich zutrifft, also Wenn der Text anders ist, dann machts ja das andere gar nicht mehr, also das da:

                  PHP-Code:
                  $text .= "-"$interesse ."\n"; } 
                  Gibts nich noch eine andere etwas geschicktere lösung??
                  Wäre dir sehr dankbar..

                  Trotzdem ma danke,

                  Gruss Toby
                  codestyle.ch
                  ----------------------------

                  Kommentar


                  • #10
                    wieso machst du nicht einfach ein textfeld, nennst das z.b. andere und lässt das ausgeben, wenn es ausgefüllt ist, das wäre das einfachste und schnellst...

                    Kommentar


                    • #11
                      Joa, das stimmt schon, jedoch bin ich ein PHP Anfängerchen, welcher gern PHP lernen würde ^^
                      Klar könnte ich es vereinfachen, doch dann wäre der Reiz nich mehr so gross und das Programmieren würde nich mehr soviel Spass machen ^.^

                      Aber danke für die Hilfe ^^


                      EDIT:
                      Nochmals kurz zum Problem zurück.. In folgendem Code stimmt was nicht, da immer auch $interessen [4] auch gelöscht wird, und nicht nur, wenn $interessen[3] nicht gewählt ist. Ist das wegen der Funktion defined? Kann ich dort eine andere Funktion brauchen oder wo liegt das Problem??

                      Das is das Codestück:

                      PHP-Code:
                                          print_r($interessen);
                              if (!
                      defined($interessen[3])) unset($interessen[4]);
                                  unset(
                      $interessen[3]);
                                          
                      print_r($interessen); 
                      codestyle.ch
                      ----------------------------

                      Kommentar


                      • #12
                        Zitat von Toby Beitrag anzeigen
                        Joa, das stimmt schon, jedoch bin ich ein PHP Anfängerchen, welcher gern PHP lernen würde ^^
                        Klar könnte ich es vereinfachen, doch dann wäre der Reiz nich mehr so gross und das Programmieren würde nich mehr soviel Spass machen ^.^

                        Aber danke für die Hilfe ^^
                        ich würde dir empfehlen das array mit einer forschleife abzufragen und ein wenig mit den if-bedingungen rumzutüfteln...

                        p.s. du hast lernst nichts, wenn ich dir die lösung austüftel, wie sagte meine eglisch lehrerin immer zu mir "erstmal selber denken macht schlau" aber ich helfe gerne

                        Kommentar


                        • #13
                          Okay, ich probier mal noch nwenig rum! ^^
                          Aber ich hab jetzt genug lange rumgetüftelt und komm eben nich weiter.. sonst wär ich ja nich hier ^-^
                          Ich hab einfach das Gefühl, dass ich nur nklitzekleinen Fehler gemacht habe in diesem Codestück (siehe oben beim Edit) und ich wüsste gerne was es ist.. na egal, ich probier noch einwenig
                          codestyle.ch
                          ----------------------------

                          Kommentar


                          • #14
                            hmmm von der reinen logik her sieht dein codestück i.o. aus, mit den befehlen habe ich allerdingsnocht nicht viel zu tun gehabt, darum würde ich mal sagen, wer etwas weiß bitte melden - ich geb auf

                            Kommentar


                            • #15
                              ICH HAAAAAAAAAAAAABS!!!!
                              Nee, das Codestück is eindeutig nich okay xD

                              Es is nich defined!! es is isset!!!!!! Mennooo ich hab die falsche funktion gebraucht ^^

                              defined is nur für Konstanten!

                              Merken! ^^

                              Dankeschöön, trotzdem!

                              MFG Toby *freu* xD


                              EDIT:
                              Eine Frage habish aber noch...
                              Im Mail, dass ich über dieses Kontaktformular bekomme, verstehe ich die Reihenfolge, wie der Text kommt nicht ganz. Damit meine ich, dass im folgenden Code alles irgendwie durcheinander ankommt (zB.: Erst Strasse, dann Ort, dann Name usw..)

                              Code:

                              PHP-Code:
                                if (empty($errors))
                                 {
                                  
                              $text stripslashes($text);
                                  
                              $subject stripslashes($subject);
                                    
                              $text "Folgende Nachricht wurde über das Kontaktforumular versendet:\n\n".$text;
                                  if (
                              $name != ""$mail_name $name; else $mail_name "unbekannt";
                                  if (
                              $vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
                                  if (
                              $anrede != ""$text "Anrede: ".$anrede."\n\n".$text;
                                  if (
                              $subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
                                  if (
                              $email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
                                  if (
                              $telefon != ""$text "Telefon: ".$telefon."\n\n".$text;
                                  if (
                              $firma != ""$text "Firma: ".$firma."\n\n".$text;
                                  if (
                              $strasse != ""$text "Strasse: ".$strasse."\n\n".$text;
                                  if (
                              $postfach != ""$text "Postfach: ".$postfach."\n\n".$text;
                                  if (
                              $plz_ort != ""$text "PLZ / Ort: ".$plz_ort."\n\n".$text
                              Danke nocheinmals,

                              Gruss Toby
                              codestyle.ch
                              ----------------------------

                              Kommentar

                              Lädt...
                              X