Ankündigung

Einklappen
Keine Ankündigung bisher.

felder ignorieren wenn nicht vorhanden

Einklappen

Neue Werbung 2019

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

  • felder ignorieren wenn nicht vorhanden

    ein paar kollegen und ich wollten eine kleine webseite lokal bei uns im firmennetz für diverse veranstaltungen erstellen.
    da wir alle nur über rudimentäre kenntnisse verfügen haben wir uns auch bei google bedient und ein entsprechendes loginsystem nach unseren bedürfnissen angepasst. es läuft auch ganz gut, jedoch haben wir nun ein kleines problem.
    und zwar können sich einzelne user anmelden und dabei angeben ob sie als paar kommen oder allein.
    hierzu fragen wir auch das geburtsdatum ab. wie gesagt klappt alles ganz gut.
    in einem kleinen profilbereich können einzelne daten geändert werden. so auch der status der mitglieder zum beispiel von single auf paar. das formular enthält neben den herkömmlichen angaben auch das geburtsdatum, welches in einem dropdown dagestellt wird. handelt es sich um ein paar werden zweil dropdowns gezeigt (auch das funzt).
    das script enthält allerdings eine prüfung ob alle felder vorhanden sind wenn submit ausgeführt wird.
    nun ist es aber so das die geburtsdaten des 2. partner nicht vorhanden sind wenn der status single ist. das resultiert dann darin das selbsverständlich fehlermeldungen ausgeworfen werdne weil dann auch die entsprechenden felder fehlen.

    also $_POST['Tag2'], $_POST['Monat2'], $_POST['Jahr2'], stehen in der prüfung, sind bei single aber nicht vorhanden. wie kann ich diese denn ignorieren?
    der part der prüfung sieht so aus.

    PHP-Code:
            elseif(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){ 
                
    // Fehlerarray anlegen 
                
    $errors = array(); 
                
    // Prüfen, ob alle Formularfelder vorhanden sind 
                
    if(!isset ($_POST['Email'], 
                          
    $_POST['Show_Email'], 
                          
    $_POST['PLZ'], 
                          
    $_POST['Wohnort'], 
                          
    $_POST['Geschlecht'], 
                          
    $_POST['Tag'],
                          
    $_POST['Monat'],
                          
    $_POST['Jahr'], 
                          
    $_POST['Tag2'],
                          
    $_POST['Monat2'],
                          
    $_POST['Jahr2']



                    
    // Ein Element im Fehlerarray hinzufügen 
                    
    $errors "Bitte benutzen Sie das Formular aus Ihrem Profil"
    ich dachte vielleicht würde das mit unset gehen, aber bin nicht sicher wo/wie man da am besten anfängt.
    habe das folgende mal probiert aber bekomme dann noch immer die mitteilung Invalid argument supplied for foreach()
    PHP-Code:
    if($geschlecht == "Frau" && $geschlecht == "Mann"){
    unset (
    $_POST['Tag2'], $_POST['Monat2'], $_POST['Jahr2'])


    wir sitzen da schon tage dran.

  • #2
    Du kannst Bedingungen natürlich auch verschachteln:

    PHP-Code:
    if(! isset(...alle minimal geforderten Felder) || (status=='Partnerschaft' && ! isset(...Geburtsdatumsfelder Partner))) {

    echo 
    'Grandiose Fehlermeldung!';

    Grüße
    ?!? Woot Woot...

    Kommentar


    • #3
      vielen dank für die hielfreiche antwort. das bringt uns wirklich einen großen schritt weiter.
      ich habe das jetzt mal so gemacht wie von dir empfohlen und es geht soweit auch.

      PHP-Code:
       elseif(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){ 
                  
      // Fehlerarray anlegen 
                  
      $errors = array(); 
                  
      // Prüfen, ob alle Formularfelder vorhanden sind 
                  
      if(!isset ($_POST['Email'], 
                            
      $_POST['Show_Email'], 
                            
      $_POST['PLZ'], 
                            
      $_POST['Wohnort'], 
                            
      $_POST['Geschlecht'], 
                            
      $_POST['Tag'],
                            
      $_POST['Monat'],
                            
      $_POST['Jahr'], 
                            
      $_POST['MSN']) || ($geschlecht=='Paar' && !isset($_POST['Tag2'], $_POST['Monat2'],$_POST['Jahr2'])))


                      
      // Ein Element im Fehlerarray hinzufügen 
                      
      $errors "Bitte benutzen Sie das Formular aus Ihrem Profil"
                  else{ ...
      einige email prüfungen.... 
      die daten werden jeweils gespeichert. bekomme aber noch bei änderungen eines 'single' das hier

      Notice: Undefined variable: geschlecht in ...myprofile.php on line 142 Notice: Undefined index: Jahr2 in ...myprofile.php on line 186 Notice: Undefined index: Monat2 in ...myprofile.php on line 186 Notice: Undefined index: Tag2 in ...myprofile.php on line 186 Ihre Daten wurden erfolgreich gespeichert.
      und bei einem paar das

      Notice: Undefined variable: geschlecht in ...myprofile.php on line 142 Ihre Daten wurden erfolgreich gespeichert.
      zeile 142 bezieht sich auf $geschlecht und in 186 habe ich das

      PHP-Code:
      $Gebdatum2 sprintf("%04d-%02d-%02d"$_POST['Jahr2'], $_POST['Monat2'], $_POST['Tag2']); 
      da wird also gemeckert das $_POST['Jahr2'] etc. nicht vorhanden ist beim single. kann man das eventuell mit if bei Gebdatum2 umgehen?

      Kommentar


      • #4
        Zitat von newbie72 Beitrag anzeigen
        Notice: Undefined variable: geschlecht in ...myprofile.php on line 142 Ihre Daten wurden erfolgreich gespeichert.
        Die Fehlermeldung sagt dir eigentl. schon alles was du brauchst, die Variable $geschlecht wurde in dem Kontext noch nicht definiert.

        Zitat von newbie72 Beitrag anzeigen
        Notice: Undefined index: Jahr2 in ...myprofile.php on line 186 Notice: Undefined index: Monat2 in ...myprofile.php on line 186 Notice: Undefined index: Tag2 in ...myprofile.php on line 186
        Im Prinzip der gleiche Fehler, diese Parameter werden anscheinend nicht immer übermittelt, also musst du wie du schon richtig erkannt hast eine Fallunterscheidung vornehmen.

        Könnte in etwa so aussehen:

        PHP-Code:
        if($geschecht == 'Paar') {
        sprintf("%04d-%02d-%02d"$_POST['Jahr2'], $_POST['Monat2'], $_POST['Tag2']); 

        Ohne das ganze Skript zu kennen ist die Fehlersuche bei sowas dann aber ein Schuss ins Blaue
        ?!? Woot Woot...

        Kommentar


        • #5
          danke wieder für die hilfe. hab das mal so versucht, aber da ja $geschlecht offenbar da oben nicht übernommen wird kann der dann auch das Geburtsdatum ja nicht eintragen.
          weiter unten in der Form ist $geschlecht definiert und da klappt das auch.
          da das script mittlerweile sehr groß ist und mit sicherheit auch nicht besonders elegant ist (gerade die dropdown geschichte mit dem BDay kann man sicher besser lösen) posten wohl nicht so praktisch. ich füge es daher mal als anhang bei.
          Angehängte Dateien

          Kommentar


          • #6
            Benutz doch einfach anstatt $geschlecht $_POST['Geschlecht'] oder versteh' ich da jetzt was falsch
            ?!? Woot Woot...

            Kommentar


            • #7
              dann bekomme ich solang das geschlecht zwischen mann und frau gewechselt wird ein

              Undefined variable: Gebdatum2 in myprofile.php on line 203 Ihre Daten wurden erfolgreich gespeichert.
              das wäre eventuell noch zu lösen. aber sobald man dann paar auswählt und speichert kommt ein

              Invalid argument supplied for foreach() in myprofile.php on line 179
              ich vermute mal das bezieht sich dann auf das Gebdatum2? weil das ja erst nach dem speichern vorhanden ist und somit komplett fehlt wenn man von single auf paar wechselt

              Kommentar

              Lädt...
              X