php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.03.2007, 11:30  
Neuer Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 24
noBody
Standard Problem mit globalen Variablen

Hallo,

ich habe folgendes Script, dass die Forumkonfigurationen aus der DB zieht:

PHP-Code:
<?php
error_reporting
(E_ALL);

$b_c "SELECT board_name, board_description, max_registration FROM board_config";
$board_config = new mysql($b_c);

$result_config $board_config -> select($b_c);
while(
$b_config mysql_fetch_assoc($result_config))
{
$board_name $b_config['board_name'];
$board_desc $b_config['board_description'];
$max_registration $b_config['max_registration'];
}
?>
Diese binde in ganz am Anfang der Seite ein:

PHP-Code:
<?php
error_reporting
(E_ALL);
session_start();

include(
'config.inc.php');
include(
'includes/class.mysql.php');
include(
'includes/function.php');
include(
'includes/board_config.php');
?>
Wenn ich sie jedoch hier benutzen will:

PHP-Code:
<?php
if(isset($_POST['save_new_user']))
{
//hier steht normaler weise mehr drinne
if ($max_registration != '0' AND $max_registration >= mysql_num_rows ($result_1)) $error "Die maximale 

Benutzeranzahl ist erreicht! Zur Zeit sind keine weiteren Anmeldungen m&ouml;glich!"
;
?>
Bekomme ich folgende Meldung:

Code:
Notice: Undefined variable: max_registration in /home/webpages/lima-city/newwarrior/html/juca/register.php on line 25

Notice: Undefined variable: max_registration in /home/webpages/lima-city/newwarrior/html/juca/register.php on line 25
Was muss ich jetzt machen, damit ich sie selbst in solchen Sachen benutzten kann und auch in Funktionen ohne sie zu jedesmal mit zu übergeben zu müssen?

Danke
noBody ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.03.2007, 11:33  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Zitat:
on line 25
Das sind ja nicht soo viele Zeilen, poste also bitte mal Zeilen 1 bis ~30 des Skripts.
Schnulli ist offline  
Alt 29.03.2007, 11:37  
Neuer Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 24
noBody
Standard

PHP-Code:
<?php
error_reporting
(E_ALL);

if(isset(
$_POST['save_new_user']))
{
    
$error = array();
    
$sql_1="SELECT username FROM board_user";
    
$result_1 mysql_query ($sql_1);
    
$sql="SELECT username FROM board_user WHERE username = '".$_POST['username']."'";
    
$result mysql_query ($sql);
    if (
mysql_num_rows ($result) == 1$error[] = "Der Benutzername ist bereits vergeben!";
    if(isset(
$_POST['avatar']))
    {
        
$image htmlentities($_POST['avatar']);
        
$image image$image );
        if(
$image == 'error')
        {
            
$error[] = "Das Avatar darf nicht gr&ouml;&szlig;er als 100px * 100px sein!";
        }
    }
    if (
$_POST['username'] == ''$error[] = "Bitte geben Sie einen Benutzernamen an!";
    if (
$_POST['password'] == ''$error[] = "Bitte geben Sie ein Passwort an!";
    if (
$_POST['passwordw']== ''$error[] = "Bitte geben Sie eine Passwort Wdh. an!";
    if (
$_POST['email']== ''$error[] = "Bitte geben Sie eine E-Mailadresse an!";
    if (
$max_registration != '0' AND $max_registration >= mysql_num_rows ($result_1)) $error "Die maximale 

Benutzeranzahl ist erreicht! Zur Zeit sind keine weiteren Anmeldungen m&ouml;glich!"
;
    if (!
preg_match('/^[a-zA-Z0-9]+$/',$_POST['username'])) $error[] = "Der Benutzername darf keine Sonderzeichen 

enthalten!"
;
    if (
$_POST['passwordw']!=$_POST['password']) $error[] = "Die Passwort Wdh. muss mit dem Passwort übereinstimmen!";
Ich weiß^^
Teil des Codes ist grauenhaft, bin auch dabei die Sachen zu überarbeiten :wink:
noBody ist offline  
Alt 29.03.2007, 11:42  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Nanu? Da vermisse ich jetzt aber das include
Schnulli ist offline  
Alt 29.03.2007, 11:43  
Neuer Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 24
noBody
Standard

Ups, das ist in der Index, wo alle anderen Datein, jede nach Aufruf includet werden mom:

PHP-Code:
<?php
error_reporting
(E_ALL);
session_start();

include(
'config.inc.php');
include(
'includes/class.mysql.php');
include(
'includes/function.php');
include(
'includes/board_config.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" >
<meta http-equiv="Content-Language" content="de" >
<meta name="author" content="Malte Kiefer">
<meta name="publisher" content="Malte Kiefer" >
<meta name="copyright" content="Malte Kiefer" >
<title><?php echo $board_name.' » '.$board_desc;?></title>
<link rel="stylesheet" type="text/css" href="style/clear_silver.css">
<script type="text/javascript" language="javascript" src="includes/j.js"></script>
</head>
<body>
<?php
if(isset($_GET['board']))
{
    switch(
$_GET['board'])
    {
        case 
'register';
            include(
'menu.php');
            include(
'register.php');
            include(
'footer.php');
        break;
In der board_config.php stehen die Config drinne.
noBody ist offline  
Alt 29.03.2007, 11:55  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Ah so. Na das ist ja auch gut so, ich wollt nur nochmal nachfragen

edit: 12:01 noch was geändert + Fehlerkorrektur, sorry.
Änder board_config.php bitte mal so ab:
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);

$b_c "SELECT board_name, board_description, max_registration FROM board_config";
$board_config = new mysql($b_c);

$result_config $board_config -> select($b_c);
$b_config mysql_fetch_assoc($result_config)

if (!
$b_config || !isset($b_config['board_name'],$b_config['board_description'],$b_config['max_registration'])) {
  echo 
'Fehler beim Auslesen der Konfiguration';
  
var_dump($b_config);
  die();
}

$board_name $b_config['board_name'];
$board_desc $b_config['board_description'];
$max_registration $b_config['max_registration'];
?>

Wenn das nichts gebracht hat, dann bitte in der index.php noch etwas einfügen
PHP-Code:
<?php
error_reporting
(E_ALL);
session_start();

include(
'config.inc.php');
include(
'includes/class.mysql.php');
include(
'includes/function.php');
include(
'includes/board_config.php');
if ( !isset(
$board_name,$board_desc,$max_registration)) {
  die(
'Sehr seltsam');
}
?>
und wenn dabei immer noch nichts rauskommt, in register.php am Anfang noch
PHP-Code:
<?php
echo "<pre>included files: ";
print_r(get_included_files());
echo 
"</pre>";
?>
einfügen und prüfen, ob da irgendwo board_config.php ausgegeben wird.

Zitat:
Zitat von noBody
case 'register';
Wieder etwas gelernt, man kann auch ein ; nach der case Anweisung schreiben.
Schnulli ist offline  
Alt 29.03.2007, 12:03  
Neuer Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 24
noBody
Standard

Habe meinen Fehler gefunden.
Zwei [] vergessen
noBody ist offline  
Alt 29.03.2007, 12:05  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Ah, hat also das ini_set('display_errors', true); noch gefehlt, um die Meldungen wirklich anzuzeigen?
Schnulli ist offline  
Alt 29.03.2007, 12:30  
Neuer Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 24
noBody
Standard

ja irgendwie ja.
Noch ne Frage, muss ich die Sachen jetzt auch wieder mit schicken wennich ne Funktion aufrufe oder sind sie jetzt wirklich Global, dass ich sie auch ohne zusätzliche übergabe mit arbeiten kann?
noBody ist offline  
Alt 29.03.2007, 12:35  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Wenn man in Funktionen auf Variablen aus dem globalen Sichtbarkeitsbereich zugreifen will, muss man sie entweder per global "importieren" oder über $GLOBALS darauf zugreifen.

PHP-Code:
<?php
$x 
'hallo';
function 
irgendwas() {
  echo 
$GLOBALS['x'];
}
?>
mehr dazu unter http://www.php.net/manual/de/languag...bles.scope.php
Schnulli ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variablen problem Basti-asd Datenbanken 6 29.10.2007 12:56
Variablen problem Basti-asd Datenbanken 0 28.10.2007 15:07
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
Variablen Problem Andree PHP Tipps 2006 3 28.04.2006 02:17
Problem mit INSERT und variablen. dattelpalme PHP Tipps 2006 1 10.04.2006 22:12
Problem mit Variablen Uebergabe PHP Tipps 2007 4 17.12.2005 15:53
Problem mit der Variablen übergabe... PHP Tipps 2007 22 02.12.2005 09:05
problem mit session bzw übergeben von variablen! PHP Tipps 2005 21 16.05.2005 03:20
Problem mit übergabe von Variablen! stefan-miti PHP Tipps 2005 7 11.02.2005 18:54
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
Problem mit Sessions in mehreren Frames Chr!s PHP Tipps 2004 10 30.10.2004 18:52
Variablen aus den Formular sind nicht mehr verfügbar PHP Tipps 2004 6 30.10.2004 13:31
Problem mit zwei variablen - löschen - MySQL PHP Tipps 2004 9 17.10.2004 20:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.