php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.04.2009, 22:21  
Neuer Benutzer
 
Registriert seit: 26.04.2009
Beiträge: 14
uh.yeah befindet sich auf einem aufstrebenden Ast
Standard funktions problem

Hallo,

ich hoffe, dass ihr mir helfen könnt, da ich den Fehler einfach nicht finde.
Beim Aufrufen einer Funktion erscheint folgender Fehler:

Zitat:
Fatal error: Cannot redeclare user() (previously declared in C:\Programme\xampp\htdocs\uk\user.php:6) in C:\Programme\xampp\htdocs\uk\user.php on line 22

Und hier die Zeilen 1 - 22:

PHP-Code:
<?
error_reporting
(E_ALL|E_STRICT);
ini_set('DISPLAY_ERROR',TRUE);

//ausgabe formular
function user($color_user$color_pass1$color_pass2$username){

    echo 
'<form action="http://localhost/uk/index.php';
    if (isset(
$_GET['action'])){
        echo 
'?action=' $_GET['action'];
    }
    if (isset(
$_GET['id'])){
        echo
'&id=' $_GET['id'];
    }
    echo 
'" method="post">';
    echo 
'<input class="'.$color_user.'" type="text" name="new_user" value="' .$username'" /><br />';
    echo 
'<input class="'.$color_pass1.'" type="password" name="new_password" /><br />';
    echo 
'<input class="'.$color_pass2.'" type="password" name="new_password_confirm" /><br />';
    echo 
'<input class="submit" type="submit" name="send_user" value="Anlegen" />';
    echo 
'</form>';

}

?>
Das Formular wird dann in einer anderen Funktion weiterverarbeitet.
Ich kann aber nirgendwo einen Fehler entdecken.
uh.yeah ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.04.2009, 22:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bindest Du die Datei zweimal ein?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 22:42  
Neuer Benutzer
 
Registriert seit: 26.04.2009
Beiträge: 14
uh.yeah befindet sich auf einem aufstrebenden Ast
Standard

Nein, es handelt sich hierbei um ein zweispaltiges Layout.
Im Contentbereich wird die Funktion eingebunden, um die Daten der User zu editieren.
In der Sidebar werden alle User aufgelistet.

content:
PHP-Code:
function edit_user(){

    global 
$mysql;
    
$id $_GET['id'];
    
$load_user "SELECT user FROM login WHERE id=" .$id;
    
$sql_load mysql_query($load_user);
    
$row mysql_fetch_object($sql_load);
    if (!isset(
$_POST['send_user'])){
        
user('right''right''right''');
    }
    if (isset(
$_POST['send_user'])){
        
$user $_POST["new_user"];
        
$password $_POST["new_password"];
        
$password_con $_POST["new_password_confirm"];
        
$abfrage "SELECT user FROM login WHERE user LIKE '" $user "'";
        
$ex_user mysql_query ($abfrage);
        if (empty(
$_POST['new_user']) && empty($_POST['new_password']) && empty($_POST['new_password_confirm'])){
            
user('wrong''wrong''wrong''');
            
$error "Du musst alle Felder ausfüllen.";
        }
        if (!empty(
$_POST['new_user']) && empty($_POST['new_password']) && empty($_POST['new_password_confirm'])){
            
user('right''wrong''wrong'$user);
            
$error "Du musst ein Passwort vergeben und es bestätigen.";
        }
        if (empty(
$_POST['new_user']) && !empty($_POST['new_password']) && empty($_POST['new_password_confirm'])){
            
user('wrong''right''wrong''');
            
$error "Du musst einen Benutzernamen vergeben und das Passwort bestätigen.";
        }
        if (empty(
$_POST['new_user']) && empty($_POST['new_password']) && !empty($_POST['new_password_confirm'])){
            
user('wrong''wrong''right''');
            
$error "Du musst einen Benutzernamen vergeben und das Passwort bestätigen.";
        }
        if (!empty(
$_POST['new_user']) && !empty($_POST['new_password']) && empty($_POST['new_password_confirm'])){
            
user('right''right''wrong'$user);
            
$error "Du musst das Passwort bestätigen.";
        }
        if (empty(
$_POST['new_user']) && !empty($_POST['new_password']) && !empty($_POST['new_password_confirm'])){
            
user('wrong''right''right''');
            
$error "Du musst einen Benutzernamen vergeben.";
        }
        if (!empty(
$_POST['new_user']) && empty($_POST['new_password']) && !empty($_POST['new_password_confirm'])){
            
user('right''wrong''right'$user);
            
$error "Du musst das Passwort bestätigen.";
        }
    
        if (!empty(
$_POST['new_user']) && !empty($_POST['new_password']) && !empty($_POST['new_password_confirm'])){
                if (
$password == $password_con){
                    
$pass md5($password);
                    if (
mysql_num_rows($ex_user)>0) {
                        
user('wrong''right''right'$user);
                        
$error "Dieser Benutzername existiert bereits.";
                    }
                    else{
                        
$save_artikel "UPDATE login SET user='" mysql_real_escape_string($_POST['user']) . "', password='" mysql_real_escape_string($pass) . "'WHERE id=" .mysql_real_escape_string($id);
                        
$sql_save mysql_query($save_artikel);
                        
$error "Dein Artikel wurde erfolgreich ge&auml;ndert<br />";
                        
$uebersicht '<a href="http://localhost/uk/index.php?action=user" >zur&uuml;ck zur &Uuml;bersicht</a>';
                    }
                }
        }
    }
    echo 
'<div id="error">';
    if (isset(
$uebersicht) && isset($error)){
              echo 
$error $uebersicht;
    }
    echo 
'</div>';

sidebar:
PHP-Code:
function get_user(){
    
    global 
$mysql;
    
$load_user "SELECT id, user FROM login ORDER BY id";
    
$sql_load mysql_query($load_user);
    while (
$row mysql_fetch_object($sql_load)){
        echo 
'<div class="pre_head">';
        echo 
'<div class="pre_subject">' .$row->id'</div>';
        echo 
'</div>';//pre_head
        
echo '<div class="pre_text">' .$row->user'</div>';
        echo 
'<div class="edit"><a href="http://localhost/uk/index.php?action=edit_user&id=' .$row->id'">bearbeiten</a>';
        echo 
'&nbsp;';
        echo 
'<a href="http://localhost/uk/index.php?action=delete_user&id=' .$row->id'">löschen</a></div>';
    }


uh.yeah ist offline  
Alt 29.04.2009, 22:51  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

poste doch mal Zeile 22 der user.php.

Zu deinem code:

PHP-Code:
global $mysql
$id $_GET['id']; 
$load_user "SELECT user FROM login WHERE id=" .$id
abgesichert??!!

Warum global in dem context? Sehe nicht, dass dus vorher schon definierst.
Einmal global bleibt global, mußte in dem Zusammenhang nicht nochmal globalisieren.
Und :
Globale Variablen sind *hust* suboptimal.
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist gerade online  
Alt 29.04.2009, 22:58  
Neuer Benutzer
 
Registriert seit: 26.04.2009
Beiträge: 14
uh.yeah befindet sich auf einem aufstrebenden Ast
Standard

Zeile 22 ist die abschließende Klammer der User Funktion (s. erster Post).
Ich fang gerade erst an PHP zu lernen.
$mysql beinhaltet die Funktion zur Datenbankverbindung und liegt in einer anderen Datei.
Wenn du mir verraten kannst, wie ich es ohne globale Variable programmieren kann, dann immer raus damit
uh.yeah ist offline  
Alt 29.04.2009, 23:37  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das bringt uns nicht weiter. Entscheidend ist, wo die user.php eingebundnen wird.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 23:54  
Neuer Benutzer
 
Registriert seit: 26.04.2009
Beiträge: 14
uh.yeah befindet sich auf einem aufstrebenden Ast
Standard

Also, ich hab eine index.php, in der ich die Funktionen sidebar und content lade.
Nach einem Klick auf ein bestimmten Link, wird die entspechende Datei included und die Funktion ausgegeben, die benötigt wird.
In diesem Fall ist es zu reinen testzwecken folgendermaßen:

In den Funktionen content und sidebar wird jeweils die get_user Funktion (s.o.) geladen.
Diese gibt den Usernamen, die ID und zwei Links aus - einen zum bearbeiten der Userdaten, einen zum löschen des Users.
Wenn ich jetzt auf "bearbeiten" klicke, soll in der content Funktion die edit_user Funktion (s.o.) und in der sidebar Funktion wieder die get_user Funktion geladen werden. Dabei bedient sich allerdings nur die edit_user Funktion der user Funktion.
Die edit_user Funktion wird im Content auch vollständig geladen. Der Fehler wird nur in der Sidebar angezeigt, die ja eigentlich nichts mit der user Funktion zu tun hat.
Dabei ist es auch völlig egal, ob ich den "bearbeiten" Link im Content oder in der Sidebar anklicke.
Der Fehler ist immer der selbe.

Ich hoffe, dass es einigermaßen verständlich ist.
Wenn weiterer Programmcode benötigt wird, stelle ich den natürlich gerne zur Verfügung.
uh.yeah ist offline  
Alt 30.04.2009, 00:05  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja, aber das erklärt das Problem nicht.
Zitat:
Dabei bedient sich allerdings nur die edit_user Funktion der user Funktion.
Ist nämlich unerheblich.
Zitat:
Entscheidend ist, wo die user.php eingebundnen wird.
Also include oder require user.php steht. Und das passiert durch irgend einen Effekt 2 mal.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 30.04.2009, 00:19  
Neuer Benutzer
 
Registriert seit: 26.04.2009
Beiträge: 14
uh.yeah befindet sich auf einem aufstrebenden Ast
Standard

Hatte nicht ganz verstanden, was du gemeint hast.
Habe den Fehler jetzt gefunden.
Das Problem lag darin, dass ich jeweils in der und in der sidebar Funktion die user.php geladen habe, weil ich der Annahme war, dass ich sie in jede Funktion einbinden müsste. Da sonst Alles reibungslos funktionierte, obwohl das öfter der Fall war, habe ich es natürlich nicht in Erwägung gezogen.

Vielen Dank
uh.yeah ist offline  
Alt 30.04.2009, 00:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Gerne. Schau Dir bei Gelegenheit mal include_once bzw. require_once an.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


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
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Funktions Problem mit Array andrew22 PHP Tipps 2007 11 03.07.2007 17:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Array Problem [Ansatz ?] PHP Tipps 2005 0 27.01.2005 18:24
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51


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