php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-04-2008, 19:03
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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
Mit Zitat antworten
  #2 (permalink)  
Alt 08-04-2008, 19:08
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

speicherst du deine ids als string?
btw sowas kannste auch mit constraints auf mysql seite regeln
Mit Zitat antworten
  #3 (permalink)  
Alt 08-04-2008, 19:11
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein die ids werden als int gespeichert.

Wo liegt in mienem Scriptteil der Fehler?
Mit Zitat antworten
  #4 (permalink)  
Alt 08-04-2008, 19:13
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 08-04-2008, 19:26
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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!
Mit Zitat antworten
  #6 (permalink)  
Alt 08-04-2008, 19:32
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach mal jeweils ein
PHP-Code:
echo $sqlbefehl
und poste die Ausgabe
Mit Zitat antworten
  #7 (permalink)  
Alt 08-04-2008, 20:53
Bladeflo89
 Newbie
Links : Onlinestatus : Bladeflo89 ist offline
Registriert seit: Mar 2008
Beiträge: 3
Bladeflo89 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 09-04-2008, 08:56
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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!
Mit Zitat antworten
  #9 (permalink)  
Alt 09-04-2008, 09:18
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #10 (permalink)  
Alt 09-04-2008, 22:00
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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");
    }
}
?>

Geändert von litterauspirna (09-04-2008 um 22:02 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 10-04-2008, 10:18
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
  • ...
__________________
Gruss
H2O

Geändert von H2O (10-04-2008 um 14:01 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 10-04-2008, 13:48
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:05 Uhr.