Bevor Kategorie gelöscht werden kann muss diese Datenlos sein! Abfarge dazu funzt ni

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

  • Bevor Kategorie gelöscht werden kann muss diese Datenlos sein! Abfarge dazu funzt ni

    Hallo Forum!

    Und zwar habe ich ein Probliem bei einer Galerie. Ich habe dort Kategorien die auch gelöscht werden können,nur soll dort geprüft werden das die auch leer ist vor dem löschen,sprich keine Bilder mehr drin sind!
    Bild und Kategorien sind in zwei verschiedenen Tabellen.

    Dies funktioniert leider nicht,ich bekomme diese Fehlermeldung die auf die Delete Abfrage bezieht wenn ich denn delete Button klicke!

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id=2' at line 1

    Hier mal der Code!
    PHP-Code:
    <?php
    //Auslesen der Kategorien
    $sqlbefehl ="Select id,catname,catimg,catinfo From $tab_bildcat where id='".$id."'";
    $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
    $row mysql_fetch_assoc($ergebnis);
            
    $id $row['id'];
            
    $catname $row['catname'];
            
    $bild $row['catimg'];
            
    $text $row['catinfo'];

    //Kategorie komplett löschen
    $link1 ="<br>[<a href=\"edit_piccat.php?id=".$_GET['id']."\"> Zurück </a>]";
    if(isset(
    $_GET['delete']))
    {
        if(
    $_GET['dell']!=1)
        {
            echo 
    msgBox("Vor dem Kategorie löschen bitte Haken setzen setzen!".$link1."");
            exit();
        }
                    
    //Abfrage aus der Bilder Tabelle 
        
    $sqlbefehl ="Select Count('catid') as cats From ".$tab_bild."";
        
    $pruefe mysql_query($sqlbefehl)or die(mysql_error());
        
    $erg mysql_fetch_array($pruefe);
        if(
    $erg['cats'] == $id)//Vergleich ob catid == id aus der Kategorie
                                                     //Tabelle ist
        
    {
            echo 
    msgBox("Die Kategorie kann nicht gelöscht werden da noch Bilder dazu enthalte sind!".                       $link1."");
            exit();    
        }    
        else
        {
            if(isset(
    $_GET['id']))
            {     
                
    $id preg_replace ("/[^0-9]/"'',  $_GET['id']);
            }
            
    $sqlbefehl ="Delete From $atb_bildcat where id=".$id."";
            
    $loeschen mysql_query($sqlbefehl)or die(mysql_error());
                    
    unlink("galeriecat/".$bild);
                    
    unlink("galeriecat/bild_".$bild);
                    
    unlink("galeriecat/thumb_".$bild);
            
    header("Location: modul_galerie.php");
        }
    }

    ?>
    Kann mir da jemand helfen? Mfg der Litter und vielen Dank
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

  • #2
    speicherst du deine ids als string?
    btw sowas kannste auch mit constraints auf mysql seite regeln

    Kommentar


    • #3
      Nein die ids werden als int gespeichert.

      Wo liegt in mienem Scriptteil der Fehler?
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        PHP-Code:
        $sqlbefehl ="Select id,catname,catimg,catinfo From $tab_bildcat where id='".$id."'"
        hier siehts so aus als ob id ein string wäre und
        unten haste keine hochkommata und da wird dann auch der fehler geworfen

        Kommentar


        • #5
          Nee die ids sind int.

          Das Problem ist ich dachte auch liegt an Hochkommas doch das ar es nicht der Fehler kommt auch dann noch!
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            Mach mal jeweils ein
            PHP-Code:
            echo $sqlbefehl
            und poste die Ausgabe

            Kommentar


            • #7
              verstehe ich richtig das das
              PHP-Code:
              $erg['cats'
              die ID´s der Kategorie zu den Bildern enthält?
              weil wenn ja,

              PHP-Code:
              $query "SELECT id FROM " $tab_bild " WHERE catid = '" $id "' LIMIT 1";
              $result mysql_query($query);
              if (
              mysql_num_rows() != 0) {
                  exit();

              catid natürlich ersetzen ;-)
              ansonsten müssteste uns schon mehr über deine datenbankstrucktur erzählen

              Kommentar


              • #8
                Also das funktionierte nicht.

                Hier mal die Tabellen!

                Tabelle für die Bilderkategorien

                id int(14) auto_increment primary key,
                catname varchar(100) not null default '0',
                catimg varchar(100) not null default '0',
                catinfo text not null default '',
                views int(14) not null default '0'

                Tabelle für die Bilder

                id int(14) auto_increment primary key,
                catid int(10) not null default '0',
                bild varchar(100) not null default '0',
                text text not null default '',
                datum int(10) not null default '0'


                Wie gesgat ist es mein Ziel eine Kategorie nicht löschen zu können wenn noch Bilder zu dieser Kategorie existieren. Eigentlich bräuchte ich einen Vergeleich der prüft ob eine catid in der Bildertabelle == einer id in der Kategorientabelle ist. Nur genau daran scheitere ich!
                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                http://www.lit-web.de

                Kommentar


                • #9
                  Wahrscheinlich brauchst du eine Abfrage im Stil von
                  Code:
                  SELECT
                  	COUNT(b.id)
                  FROM
                  	bilder b
                  INNER JOIN
                  	category c ON b.catid = c.id
                  WHERE
                  	c.id = $id;
                  Das hat aber nichts mit deinem am Anfang gemeldeten Fehler zu tun. Der hängt eher an undefinierten Variablen für die Tabellennamen (steht error_reporting auf E_ALL?). Ich glaube kaum, dass sowohl $tab_bildcat, $tab_bild und $atb_bildcat definiert sind.
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    Habe nun den ganzen Tag dran gesessen und es nicht hinbekommen. Habe dieses jetzt geschrieben und bekomme diese Fehlermeldung!

                    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Count(b.catid) AS anzahl From bildcat c Left Join bild' at line 1

                    In dem Scriptteil wo Kategorie komplett löschen steht soll eben geprueft werden od die Kategorie noch Bilder enthält und wenn ja soll das löschen nicht möglich sein!

                    Hier der Code!

                    Kann mir noch jemand helfen? Vielen Dank mfg der Litter!

                    PHP-Code:
                    <?php
                    //Ausgabe der Bildkategorien
                    $sqlbefehl ="Select id,catname,catimg,catinfo From $tab_bildcat where id='".$id."'";
                    $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
                    $row mysql_fetch_assoc($ergebnis);
                            
                    $id $row['id'];
                            
                    $catname $row['catname'];
                            
                    $bild $row['catimg'];
                            
                    $text $row['catinfo'];

                    //Kategorie komplett löschen
                    $link1 ="<br>[<a href=\"edit_piccat.php?id=".$_GET['id']."\"> Zurück </a>]";
                    if(isset(
                    $_GET['delete']))
                    {
                        if(
                    $_GET['dell']!=1)
                        {
                            echo 
                    msgBox("Vor dem Kategorie löschen bitte Haken setzen setzen!".$link1."");
                            exit();
                        }
                        
                        else
                        {
                            if(isset(
                    $_GET['id']))
                            {     
                                
                    $id preg_replace ("/[^0-9]/"'',  $_GET['id']);
                            }
                            
                    $sqlbefehl ="Select c.id,c.catname,c.catimg,c.catinfo Count(b.catid) AS anzahl From $tab_bildcat c
                                        Left Join 
                    $tab_bild b
                                        ON (c.id = b.catid)
                                        where c.id="
                    .$id."
                                        Group by c.id
                                        "
                    ;
                            
                    $pruef mysql_query($sqlbefehl)or die(mysql_error());
                            
                    $erg mysql_num_rows($pruef);
                            if(
                    $erg['id'] == $erg['catid'])
                            {
                                echo 
                    "Fehler!";exit();
                            }
                            
                    $sqlbefehl ="Delete From $tab_bildcat where id=".$id."";
                            
                    $loeschen mysql_query($sqlbefehl)or die(mysql_error());
                                    if(
                    $bild !="")
                                    {
                                        
                    unlink("galeriecat/".$bild);
                                        
                    unlink("galeriecat/bild_".$bild);
                                        
                    unlink("galeriecat/thumb_".$bild);
                                    }
                            
                    header("Location: modul_galerie.php");
                        }
                    }
                    ?>
                    Zuletzt geändert von litterauspirna; 09.04.2008, 21:02.
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #11
                      Es ist zwar nur ein fehlendes Komma, das den Fehler verursacht (deine Unfähigkeit, selber nach solchen kleinen Syntaxfehlern zu suchen ist beachtenswert). Vernünftig formatierte Abfragen könnten dir vielleicht helfen. Aber die Abfrage taugt sowieso nichts:
                      • Was soll die Abfrage auf all die Attribute, die du nirgends verwendest?
                      • Eine Abfrage mit Aggregatsfunktionen gibt immer einen Datenastz zurück!, Da kannst du lange nach mysql_num_rows() abfragen
                      • Die Gruppierung nach c.id macht besonders viel Sinn, wenn gleichzeitig auf eine id eingeschränkt wird
                      • Mit einem LEFT Join wirst du immer Resultate erhalten
                      • ...
                      Zuletzt geändert von H2O; 10.04.2008, 13:01.
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        Ich weis ich übersehe manchmal die einfachsten Sachen,diese Kritik muss ich mir wohl oder übel gefallen lassen!

                        Habe es jetzt so gemacht und es funktioniert!

                        PHP-Code:
                        <?php 
                        if(isset($_GET['id'])) 
                        {      
                            
                        $id preg_replace ("/[^0-9]/"'',  $_GET['id']); 

                        $sqlbefehl ="Select c.id,c.catname,c.catimg,c.catinfo,b.catid  
                                    From 
                                        
                        $tab_bildcat c 
                                    Left Join 
                                        
                        $tab_bild b On (c.id = b.catid) 
                                    Where c.id="
                        .$id."  
                                    "

                        $ergebnis mysql_query($sqlbefehl)or die(mysql_error()); 
                        $row mysql_fetch_assoc($ergebnis); 

                        //Und unten dann im Formular dieses geschrieben 
                        if($row['id'] == $row['catid']) 

                            echo 
                        "Die Kategorie ist nicht löschbar es sind noch Bilder darin entahlten!"

                        else 

                            echo

                            <input type=\"checkbox\" name=\"dell\" value=\"1\"> 
                            <input type=\"submit\" name=\"delete\" value=\"Löschen\" class=\"textfeld\"> 
                            "


                        ?>
                        Danke trotzdem für die Hilfsbereitschaft
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        http://www.lit-web.de

                        Kommentar

                        Lädt...
                        X