Ankündigung

Einklappen
Keine Ankündigung bisher.

if - Abfrage: Wo ist der Fehler ?

Einklappen

Neue Werbung 2019

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

  • if - Abfrage: Wo ist der Fehler ?

    Hier steh ich gerade auf dem Schlauch:

    PHP-Code:

    <?php
     
    include("config.ref.php");
     
    error_reporting(E_ALL);
    $cat $_POST['cat'];

    if (
    $cat == "jobs")
        {
         
    //Code 1
          
    }

    elseif (
    $cat == "immo")
        {
         
    //Code 2
        
    }      

    else{
             
    //Code 3
        
    }
        
    ?>
    Kann mir jemand verraten, warum wenn ich "ref_gew" als $cat übergebe, nicht Code 3 ausgeführt wird ?

  • #2
    Bist du sicher, dass du nicht doch "jobs" oder "immo" übergeben hast? Der Code ist nämlich korrekt.

    Kommentar


    • #3
      Ja, absolut sicher - Ich habe im ungekürzten Code extra noch
      PHP-Code:
      echo ("Kategorie:$cat"); 
      drin um das zu überprüfen.....

      Hier mal ungekürzt:

      PHP-Code:
      <?php
       
      include("config.ref.php");
       
      error_reporting(E_ALL);

      $id $_POST['auswahl'];
      $cat $_POST['cat'];
      echo (
      "Kategorie:$cat");
      echo (
      "ID:$id");
      if (
      $cat == "jobs")
          {
            foreach (
      $id as $job_id)
            {
              
      mysql_query("DELETE FROM jobs WHERE job_id = $job_id");
          }
          echo (
      "Die ausgew&auml;hlten Angebote wurden gel&ouml;scht
      "
      );
          echo (
      "$cat

      "
      );
            }

      elseif (
      $cat == "immo")
          {
            
      $objekt_ mysql_query("SELECT FROM immo WHERE obj_id = $id");
            
      $objekt mysql_fetch_array($objekt_);
            
      $sub_obj_ mysql_query("SELECT FROM sub_obj WHERE obj_id = $id");
            
      $sub_obj mysql_fetch_array($sub_obj_);
            
      $sid $sub_obj[sub_id];
            
      $grundrisse_ mysql_query("SELECT FROM grundriss WHERE sub_id = $sid");
            
      $grundrisse mysql_fetch_array($grundrisse_);
            
      $bilder $objekt[ansicht];
            
      $lageplan $objekt[lageplan];
            
      $expose $objekt[expose];
            while (
      $bilder)
            {
              
      unlink("../immobilien/images/$bilder");
          }
           while (
      $lageplan)
            {
              
      unlink("../immobilien/images/$lageplan");
          }
           while (
      $expose)
            {
              
      unlink("../immobilien/images/$expose");
          }
            
      $grund $grundrisse[bild];
            while (
      $grund)
            {
              
      unlink("../immobilien/images/$grund");
          }
            
      mysql_query ("DELETE FROM immo WHERE obj_id = $id");
            
      mysql_query ("DELETE FROM sub_obj WHERE obj_id = $id");
            
      mysql_query ("DELETE FROM grundriss WHERE sub_id = $sid"); 
            echo (
      "Die ausgew&auml;hlten Immobilienangebote wurden gel&ouml;scht.");
          }      

      else{
        
          
      foreach (
      $id as $ref_id)
          {
            
      $dateien mysql_query("SELECT * FROM $cat WHERE ID=$ref_id");
            
      $daten mysql_fetch_array($dateien);
            
      $bild $daten[bild];
            
      $thumbnail $daten[thumbnail];
            
      unlink($images_dir '/' $bild);
            
      unlink($images_dir '/' $thumbnail);
            
      mysql_query("DELETE FROM $cat WHERE ID=$ref_id");
            echo (
      "$cat");
            echo (
      "Referenz entfernt.");
          }}
          
      ?>
      Wenn ich "jobs" übergebe läuft alles perfekt, für "immo" hab ich das
      aufrufende Skript noch nicht fertig, wenn ich was anderes (z.B. ref_gew)
      übergebe wird nichts ausgeführt.

      Kommentar


      • #4
        mach ma zwischen "else" und "if" nen leerzeichenbei immo.

        wäre das einzige, was mir auffiele bei dem Code.
        Ansonsten sieht das für mich sauber aus.

        Kommentar


        • #5
          An dem Leerzeichen kanns nicht liegen ... die richtige Syntax ist "elseif ... " khaste das bsp irgendwo hochgeladen? Damit wirs uns mal anschauen können? Weil an der IF Abfrage ist alles richtig.

          Kommentar


          • #6
            Du sagst, dass Code 3 nicht ausgeführt wird.. was macht das Skript anstatt dessen?

            Kommentar


            • #7
              RaZoR, ich habe die MySQL-Datenbank nur lokal installiert, deswegen kann ich das Beispiel nicht wirklich funktionierend bereitstellen. Ausserdem parst mein Server den Code ja dann und dann sieht man eh nix mehr.

              Corvin, das Skript führt nur den Code aus, der vor der if-Abfrage kommt, zeigt mir also die übergebene $cat und $id an.

              Kommentar


              • #8
                Dann liegt es wohl daran das der Code 3 schon ausgeführt wird NUR die foreach Schleife gibt dir wohl nix aus! Dein $ref_id ist einfach leer!!!

                Schreib doch mal über die foreach Schleife echo 'test'; wenns ausgegeben wird weißt du dass wenigstens Code 3 ausgeführt wird.

                Kommentar


                • #9
                  RaZoR, Du hast Recht. Code 3 wird tatsächlich ausgeführt. Nur, warum läuft die foreach-Schleife nicht ? Mein echo $id vomo Anfang bestätigt mir, daß $ref_id nicht leer ist...oder?

                  Kommentar


                  • #10
                    Welche Ausgabe erhälst du denn mit echo $id?

                    Kommentar


                    • #11
                      die "20" (bzw eben die ID die ich auf der seite vorher aus einer liste auswähle).

                      Kommentar


                      • #12
                        Wofür möchtest du denn dann eine Schleife auf $id anwenden, wenn $id gar kein Array ist?

                        Kommentar


                        • #13
                          Auf der aufrufenden Seite ist eine Mehrfachauswahl für ID möglich. $id kommt also u.U. auch als Array daher.

                          Kommentar


                          • #14
                            Zitat von horstenpeter
                            Auf der aufrufenden Seite ist eine Mehrfachauswahl für ID möglich. $id kommt also u.U. auch als Array daher.
                            Entweder musst du $id dann in jedem Fall als Array liefern oder aber auf der verarbeitenden Seite unterscheiden, ob es nun ein Array ist oder nicht und den weiteren Ablauf des Programmes entsprechend anpassen.
                            Eine Abfrage, ob $id ein Array ist, solltest du allerdings in jedem Fall vornehmen, damit PHP keine Fehlermeldung ausspuckt, wenn die foreach-Schleife auf eine Variable angewendet wwerden soll, die kein Array ist.

                            Kommentar


                            • #15
                              OK...ich dachte das geht dann automatisch ? Der Code 1 funktioniert auch, unabhängig davon ob ich eine einzelne Auswahl oder ein Array übergebe....

                              Kommentar

                              Lädt...
                              X