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 ::

TYPO3 Kochbuch

TYPO3 Kochbuch 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 > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.12.2003, 19:18:37
Slaughter Slaughter ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 83
Ein Problem mit einer function (Diesmal ist es wirklich ernst^^")

Also, ich habe eine eigene Funktion gecodet, mit der mir mysql-Abfragen leichter fallen sollen.
Hier die Funktion:
PHP-Code:
    function mysql_action($action,$sql) {
        if(
$action == 'connect') {
            
mysql_connect($mysql_host,$mysql_user,$mysql_pass) OR die("Fehler :".mysql_error());
            
mysql_select_db($mysql_db) OR die("Fehler :".mysql_error());
        }
        elseif(
$action == 'close') {
            
mysql_close(mysql_action('connect')) OR die("Fehler :".mysql_error());
        }
        elseif(
$action == 'select') {
            
$result mysql_query($sql) OR die("Fehler :".mysql_error());
            
$row mysql_fetch_assoc($result) OR die("Fehler :".mysql_error());
        }
        elseif(
$action == 'own') {
            
$result mysql_query($sql) OR die("Fehler :".mysql_error());
        }
        else {
            
mysql_query($sql) OR die("Fehler :".mysql_error());
        }

So nun, wenn ich z.B. mich mit der Datenbank verbinden möchte erkennt er nichts (Ist so, als ob man die config.php vergessen hätte :-( )
So nun will ich also mit meinen Script etwas aufrufen:

PHP-Code:
     //Hier ist $sql
     
mysql_action('select',$sql); 
Doch gibt er mir folgende Fehlermeldung herraus:

Code:
Warning: Missing argument 2 for mysql_action() in /home/www/wev272/html/test/function.php on line 2

Notice: Undefined variable: mysql_host in /home/www/wev272/html/test/function.php on line 4

Notice: Undefined variable: mysql_user in /home/www/wev272/html/test/function.php on line 4

Notice: Undefined variable: mysql_pass in /home/www/wev272/html/test/function.php on line 4
Woran liegt dieses?
Mit Zitat antworten
  #2  
Alt 13.12.2003, 19:48:11
René_M René_M ist offline
Junior Member
 
Registriert seit: Aug 2003
Ort: Fürstenau (Uckermark, Land Brandenburg)
Beiträge: 259
$mysql_host
$mysql_user
$mysql_pass
$mysql_db

stehen in der Funktion nicht zur Verfügung bzw. gibt es nicht!

----

PS: mach doch für das ganze mysql eine Classe.
__________________
Gruß
René

lange Weile dann --> Webchess 2003

Geändert von René_M (13.12.2003 um 19:50:36 Uhr)
Mit Zitat antworten
  #3  
Alt 13.12.2003, 21:14:15
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
Stichwort "global" -> http://de2.php.net/manual/de/languag...bles.scope.php
Mit Zitat antworten
  #4  
Alt 14.12.2003, 09:22:05
Progman Progman ist offline
Member
 
Registriert seit: Apr 2002
Beiträge: 821
Progman eine Nachricht über ICQ schicken
'global' ist da eine schlechte Lösung. Übergib die Werte lieber als Parameter, und zwar am besten als 2. Parameter, wo du jetzt den SQL-Query übergibs.
PHP-Code:
<?php
    
function mysql_action($action$options = array())
    {
        if(!
is_array($options)) {
            
trigger_error('Zweiter Parameter ist kein Array'E_USER_ERROR);
            return 
false;
        }
        switch(
$action) {
        case 
'connect':
            if(
count($options) < 4) {
                
trigger_error('Zweiter Parameter muss mindestens 4 Elemente besitzen'E_USER_ERROR);
                return 
false;
            }
            if(!isset(
$options['host'],
                      
$options['user'],
                      
$options['pass'],
                      
$options['database'])) {
                
trigger_error('Nötige Optionen zum Verbinden nicht vorhanden'E_USER_ERROR);
                return 
false;
            }
            
$conn mysql_connect($options['host'], $options['user'], $options['pass']);
            if(!
$conn) {
                
trigger_error('Konnte keine Verbindung zum Server aufbauen: '.mysql_error(), E_USER_ERROR);
                return 
false;
            }
            if(!
mysql_select_db($options['database'], $conn)) {
                
trigger_error('Konnte die Datenbank nicht auswählen: '.mysql_error(), E_USER_ERROR);
                return 
false;
            }
            return 
$conn;
            break;

        case 
'close':
            if(isset(
$options['link'])) {
                
$close mysql_close($options['link']) {
            } else {
                
$close mysql_close();
            }
            if(!
$close) {
                
trigger_error('Konnte die Verbindung nicht trennen: '.mysql_error(), E_USER_ERROR);
                return 
false;
            }
            return 
true;
            break;

        case 
'select':
            if(!isset(
$options['sql'])) {
                
trigger_error('Es wurde kein SQL-Query übergeben'E_USER_ERROR);
                return 
false;
            }
            
$result mysql_query($options['sql']);
            if(!
$result) {
                
trigger_error('SQL-Query ist Fehlerhaft: '.mysql_error().".n".
                              
'(Query war: '.$options['sql'].')'E_USER_ERROR);
                return 
false;
            }
            
$ret_array = array();
            while(
$row mysql_fetch_assoc($result)) {
                
$ret_array[] = $row;
            }
            return 
$ret_array;
            break;

        default:
            if(!isset(
$options['sql'])) {
                
trigger_error('Es wurde kein SQL-Query übergeben'E_USER_ERROR);
                return 
false;
            }
            
$result mysql_query($options['sql']);
            if(!
$result) {
                
trigger_error('SQL-Query ist Fehlerhaft: '.mysql_error().".n".
                              
'(Query war: '.$options['sql'].')'E_USER_ERROR);
                return 
false;
            }
            return 
$result;
            break;
        }
    }
?>
__________________
PHP-Tutorial - PHP-FAQ - PHP-Manual
HTMLWiki
Mit Zitat antworten
  #5  
Alt 14.12.2003, 11:52:39
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
@Progman
Wann ist "global" eine gute Lösung?
Mit Zitat antworten
  #6  
Alt 14.12.2003, 13:35:20
Progman Progman ist offline
Member
 
Registriert seit: Apr 2002
Beiträge: 821
Progman eine Nachricht über ICQ schicken
spontan würde ich sagen, "bei keiner". Aber es gibt Fälle wo es nicht anders geht, wenn z.B. eine Funktion per callback aufgerufen wird, wo man keine chance hat Parameter zu übergeben.

$object->call_method('foobar');

Bei solchen Aufrufen hoffe ich immer, dass ein neuer Parameter für die Parameter hinzukommt oder solche Funktionen anders definiert werden. Aber bei sowas 'einfaches' braucht man kein global.
__________________
PHP-Tutorial - PHP-FAQ - PHP-Manual
HTMLWiki
Mit Zitat antworten
  #7  
Alt 14.12.2003, 20:08:25
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
[OT]
@Progman
Merci für Deine Antwort.
Verwendest Du "oft" OOP in PHP?
[/OT]
Mit Zitat antworten
  #8  
Alt 14.12.2003, 20:57:33
Fuchs Fuchs ist offline
Junior Member
 
Registriert seit: Jul 2003
Beiträge: 182
Zitat:
Original geschrieben von Progman
spontan würde ich sagen, "bei keiner". Aber es gibt Fälle wo es nicht anders geht, wenn z.B. eine Funktion per callback aufgerufen wird, wo man keine chance hat Parameter zu übergeben.

$object->call_method('foobar');
Wie meinen? Ich kann doch foobar() locker noch Parameter uebergeben.
Mit Zitat antworten
  #9  
Alt 14.12.2003, 21:47:48
Slaughter Slaughter ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 83
Ich will die Unterhaltung nicht stören, doch habe ich noch ein Problem mit dem ganzen

Ich habe dies jetzt alles nach Progmans Code gemacht (ich habe mich dran gehalten)
siehe:
PHP-Code:
    function mysql_action($action,$sql) {
        switch(
$action) {
           case 
'connect':
            
mysql_connect($sql['host'],$sql['user'],$sql['pass']) OR die("Fehler :".mysql_error());
            
mysql_select_db($sql['db']) OR die("Fehler :".mysql_error());
            return 
true;
            break;
           case 
'close':
                
mysql_close($sql['connect']) OR die("Fehler :".mysql_error());
                return 
true;
                break;
           case 
'select':
                
$result mysql_query($sql) OR die("Fehler :".mysql_error());
            
$ret_array = array();
            while(
$row mysql_fetch_assoc($result)) {
                
$ret_array[] = $row;
            }
            return 
$ret_array;
            break;
           case 
'own':
                
$result mysql_query($sql) OR die("Fehler :".mysql_error());
                return 
true;
                break;
           default:
                
mysql_query($sql) OR die("Fehler :".mysql_error());
                return 
true;
                break;
        }

Wenn ich jetzt aber etwas selecten möchte gibt er folgende Fehlermeldung raus:
Code:
Notice: Undefined variable: row in /home/www/wev272/html/test/count.php on line 66

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/www/wev272/html/test/function.php on line 16
Also die Notice ist zum Beispiel '$row['IP']'.
Mit Zitat antworten
  #10  
Alt 18.12.2003, 20:31:56
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: Ich will die Unterhaltung nicht stören, doch habe ich noch ein Problem mit dem ganzen

Zitat:
Original geschrieben von Slaughter
[B]Ich habe dies jetzt alles nach Progmans Code gemacht (ich habe mich dran gehalten).
Nein, das hast Du nicht. $sql muß ein array sein.
PHP-Code:
           case 'select':
                
$result mysql_query($sql) OR die("Fehler :".mysql_error()); 
Das verursacht aber einen SQL Fehler, weil mysql_query() einen string und kein Array erwartet.
PHP-Code:
            $ret_array = array();
            while(
$row mysql_fetch_assoc($result)) {
                
$ret_array[] = $row;
            } 
Da Du nicht prüfst, ob Deine Abfrage ein gültiges Ergebnis hat,
ergeben sich zwangsläufig die Fehlermeldungen:
Zitat:
Notice: Undefined variable: row in /home/www/wev272/html/test/count.php on line 66

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/www/wev272/html/test/function.php on line 16
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:40: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