SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 05.09.2007, 22:28:38
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
DELETE Problem

Guten Abend!
Ich habe ein kleines Problem. Ich möchte, wenn ich ein Hauptverzeichnis aus einer DB lösche, auch die Unterverzeichnisse löschen. Das ganze geht nur rekursiv. Allerdings ist mir in dem folgenden Script ein Fehler unterlaufen.

PHP-Code:
// DELETE SECTIONS ////////////////////////////////////////////////////////////////////
if ($_REQUEST['delete']) {

    
// Store the section ID to be deleted in a variable
    
$sectionID $_REQUEST['id'];
    echo 
$sectionID;

    
// Validate the sectionID, and if it's ok delete the section
    
if ( $validator->validateNumber($sectionID,'Section ID') ){

        function 
remove_tree($ID) {
        
$result $GLOBALS['connector']->query('SELECT ID FROM cmssections WHERE parentid=' $ID 'AND DELETE FROM cmssections WHERE ID = '.$ID);
         while (
$section mysql_fetch_array($result)) {
           
remove_tree($section[ID]);
         }
        }
        
        
remove_tree($sectionID); 

        
// The validator returned true, so go ahead and delete the section
        
echo 'Section Deleted.<br>';
    }else{
        
// The validator returned false, meaning there was a problem
        
echo "Couldn't delete. There was a problem with: ".$validator->listErrors();
    }

DIe Fehlermeldung:
Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/redway/www/CMS/cmsadmin/editSections.php on line 23
Eine ID wird an die Funktion übergeben. Der Fehler muss in der Datenbank ansprache liegen:
Code:
SELECT ID FROM cmssections WHERE parentid=' . $ID . 'AND DELETE FROM cmssections WHERE ID = '.$ID
Wäre euch für eure Hilfe sehr dankbar. Beschäftige mich leider erst seit gestern mit rekursiven Funktionen.

MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #2  
Alt 05.09.2007, 22:49:41
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: DELETE Problem

bietet $GLOBALS['connector'] auch eine Möglichkeit, Fehlermeldungen anzuzeigen?
Mit Zitat antworten
  #3  
Alt 05.09.2007, 23:16:13
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: DELETE Problem

Abend!

Ja natürlich. Deshalb steht sie ja auch oben. Ich muss eigentlich nur wissen, wie ich den folgenden Teil ändern muss, damit die Syntax korrekt ist.

Code:
SELECT ID FROM cmssections WHERE parentid=' . $ID . 'AND DELETE FROM cmssections WHERE ID = '.$ID
MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #4  
Alt 05.09.2007, 23:40:58
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: DELETE Problem

Äh nein, das ist eine Meldung von PHP.
Ich meinte: Kann das Datenbankobjekt in $GLOBALS['connector'] irgendwie die Meldungen des SQL Servers ausgeben?
Was ist $GLOBALS['connector'] ?

Geändert von defabricator (05.09.2007 um 23:41:15 Uhr)
Mit Zitat antworten
  #5  
Alt 05.09.2007, 23:56:45
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: DELETE Problem

Abend!

$GLOBALS['connector'] ist, wie du ganz richtig erkannt hast, ein Objekt, dass aus einer Klasse DbConnector erzeugt wird und global gemacht wird, damit es auch in meiner obigen Funktion verfügbar ist. Die Klasse DbConnector stellt die Verbindung mit der Datenbank her und verarbeitet die SQL-Abfragen, sodass der Quellcode übersichtlicher wird. Die Klasse funktioniert einwandfrei. Wie die Fehlermeldung schon sagt, liegt der Fehler im SQL-Befehl. Ich müsste nur wissen, wie dieser geändert werden muss, damit dieser Stimmt. Und nein ich erhalte keine weitere Fehlermeldung.

MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com

Geändert von Socrates (05.09.2007 um 23:57:36 Uhr)
Mit Zitat antworten
  #6  
Alt 06.09.2007, 00:32:37
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: DELETE Problem

Zitat:
Wie die Fehlermeldung schon sagt, liegt der Fehler im SQL-Befehl.
Ja, irgendwo da so halt, man weiß es nicht genau.
Diese "Warning: mysql_fetch_array(): supplied argument" tritt auf, weil vorher schon was schief gelaufen ist. Wenn das Objekt in $GLOBALS['connector'] keine Möglichkeit liefert, diese vorangegangene SQL Meldung zu verwerten, ist sie unvollständig (um nicht "Schrott" zu sagen).

Als beispiel mal PDO
PHP-Code:
try {
  
$dbh = new PDO('mysql:host=localhost;dbname=test'$user$pass);
  
$dbh->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
  
  
$sql 'SELECT * from oiugds';
  foreach (
$dbh->query($sql) as $row) {
    
print_r($row);
  }
  
$dbh null;
} catch (
PDOException $e) {
    print 
$sql;
  print 
" | Error: " $e->getMessage() . "<br/>";
  die();

und ich erhalte die Fehlermeldung
SELECT * from oiugds | Error: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.oiugds' doesn't exist<br/>

p.s.: Es kann natürlich auch sein, dass $result ein Objekt ist und mit mysql_fetch_* überhaupt nichts zu tun hat.
Das kannst Du mit einem var_dump($result); for der mysql_fetch_* Zeile herausfinden.

Geändert von defabricator (06.09.2007 um 00:34:52 Uhr)
Mit Zitat antworten
  #7  
Alt 06.09.2007, 00:59:38
MatMel MatMel ist offline
Member
 
Registriert seit: Aug 2005
Beiträge: 644
MatMel eine Nachricht über ICQ schicken
AW: DELETE Problem

Haben denn DELETE Querys überhaupt einen Rückgabewert?
Wenn ja könntest du es ja in etwas so machen:
Code:
'SELECT ID, (DELETE FROM cmssections WHERE ID = ' . $ID . ' ) as delqry FROM cmssections WHERE parentid=' . $ID . 'AND delqry=true'
Mit Zitat antworten
  #8  
Alt 06.09.2007, 15:46:35
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: DELETE Problem

Morgen.

Also
PHP-Code:
var_dump($result); 
wirft nichts aus. Rein garnichts. Meine Klasse zur Verbindung zur Datenbank sieht wie folgt aus:
PHP-Code:
<?php
////////////////////////////////////////////////////////////////////////////////////////
// Class: DbConnector
// Purpose: Connect to a database, MySQL version
///////////////////////////////////////////////////////////////////////////////////////
require_once 'SystemComponent.php';

class 
DbConnector extends SystemComponent {

var 
$theQuery;
var 
$link;

//*** Function: DbConnector, Purpose: Connect to the database ***
function DbConnector(){

    
// Load settings from parent class
    
$settings SystemComponent::getSettings();

    
// Get the main settings from the array we just loaded
    
$host $settings['dbhost'];
    
$db $settings['dbname'];
    
$user $settings['dbusername'];
    
$pass $settings['dbpassword'];

    
// Connect to the database
    
$this->link mysql_connect($host$user$pass);
    
mysql_select_db($db);
    
register_shutdown_function(array(&$this'close'));

}

//*** Function: query, Purpose: Execute a database query ***
function query($query) {
    
$this->theQuery $query;
    return 
mysql_query($query$this->link);
}

//*** Function: getQuery, Purpose: Returns the last database query, for debugging ***
function getQuery() {
    return 
$this->theQuery;
}

//*** Function: getNumRows, Purpose: Return row count, MySQL version ***
function getNumRows($result){
    return 
mysql_num_rows($result);
}

//*** Function: fetchArray, Purpose: Get array of query results ***
function fetchArray($result) {
    return 
mysql_fetch_array($result);
}

//*** Function: close, Purpose: Close the connection ***
function close() {
    
mysql_close($this->link);
}


}
?>
Nun habt ihr eine grobe vorstellung womit ich eigentlich hier die ganze Zeit arbeite.

Ich habe grade die Lösung gefunden. Einfach wenn man sie kennt. Funktioniert einwandfrei man muss nur die SQL Befehle aufsplitten.
PHP-Code:
        function remove_tree($ID) {
        
$result $GLOBALS['connector']->query('DELETE FROM cmssections WHERE ID = '.$ID);
        
$result $GLOBALS['connector']->query('SELECT ID FROM cmssections WHERE parentid=' $ID);
         while (
$section mysql_fetch_array($result)) {
           
remove_tree($section[ID]);
         }
        }
        
        
remove_tree($sectionID); 
Trotzdem vielen Dank für eure Hilfe.

MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #9  
Alt 06.09.2007, 16:20:44
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: DELETE Problem

Zitat:
Zitat von Socrates Beitrag anzeigen
Also
PHP-Code:
var_dump($result); 
wirft nichts aus. Rein garnichts.
Dann wurde es nicht ausgeführt oder Du hast nicht richtig geguckt. var_dump() gibt nie "nichts" aus. Aber wenn das Problem für Dich gelöst ist, soll es mir egal sein.
Mit Zitat antworten
  #10  
Alt 06.09.2007, 20:20:09
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: DELETE Problem

Code:
... parentid=' . $ID . 'AND DELETE ...
Zwischen ' und AND fehlt ein Leerzeichen.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DELETE Problem marc26 MySQLi/PDO/(MySQL) 4 21.10.2006 15:38:08
Problem mit UPDATE und DELETE garnet MySQLi/PDO/(MySQL) 6 16.03.2006 22:07:07
Problem mit Lokalisierung eines SESSION - Problems Fabian85 PHP für Fortgeschrittene und Experten 5 03.10.2005 20:17:54
Problem mit DELETE Rudolfsport PHP Grundlagen 17 25.01.2005 20:33:57
Problem mit DELETE Slaughter MySQLi/PDO/(MySQL) 1 01.12.2003 07:10:42


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:06:02 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt