martenk
Goto Top

Php Problem: SQL Variable im Script leer

Hallo Gemeinschaft,

habe mir ein user management php script (Xavier) - gekauft

und möchte es in dieses script einsetzen, damit ich je nach dem wer sich anmeldet die sql query ändern kann

wenn ich mich im im loginscript anmelde dann kann ich hier den usernamen mir anzeigen lassen - script geht also


<?php
include('C:\xamppneu\htdocs\test\zugang\admin\includes\controller.php');  
$form = new Form;
 echo $session->username; 
 
 
class Core {
    /* */

    private static $config_file = "conf.ini";  

    /* */
    //var $db_conf;

    private static $link = null;
    
    /**
     * 
     * @param type $file
     */
    public static function getDBConfig() {
        $conf = parse_ini_file(Core::$config_file);
        return $conf;
        //die(var_dump($conf) );
        //exit;
        //$db_conf = array();
        //$this->db_conf = $conf;
    }

    public static function connectDB() {
        $conf = Core::getDBConfig();
        //$link = mysql_connect($conf["host"], $conf["user"], $conf["password"]) or die("Could not connect: " . mysql_error()); 
/*$link = mysql_connect (MYSQL_HOST, 
                           MYSQL_BENUTZER, 
                           MYSQL_KENNWORT, 
                           MYSQL_DATENBANK);*/
        //Core::$link = new mysqli(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
        Core::$link = new mysqli($conf["host"], $conf["user"], $conf["password"], $conf["name"]);  
        //mysql_set_charset('utf8', $link); 
        /* check connection */
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());  
            exit();
        }
        if (!Core::$link->set_charset("utf8")) {  
            printf("Error loading character set utf8: %s\n", Core::$link->error);  
        } else {
            //printf("Current character set: %s\n", Core::$link->character_set_name()); 
        }
        
        // select our database
        
        // select our database
        //mysql_select_db(MYSQL_DATENBANK) or die(mysql_error());
        Core::$link->select_db($conf["name"]);  
    }

nun mein Problem

der username =admin wird angezeigt
doch wenn ich oben im scrip mir den usernamen anzeigen lassen, dann ist die sql Variable leer
wenn ich oben echo $session->username; auskommentiere, dann geht das script wieder

public static function getStaffList() {
		
		$sql = "SELECT * FROM staff where surname = 'Piet'";  
	
        $result = mysql_query($sql);

        if (!$result) {
            return 'Error: ' . mysqli_error(Core::$link);  
        }
        
        $return = array();
        while ($myrow = mysqli_fetch_assoc($result)) {
            if ($myrow['birthday'] !== '0000-00-00') {  
                $myrow['birthday'] = date("d.m.Y", strtotime($myrow['birthday']));  
            } else {
                $myrow['birthday'] = '';  
            }
            $return[] = $myrow;
        }

        //mysql_free_result($result);
        //$result->close();
        return $return;
    }

Content-ID: 6935101900

Url: https://administrator.de/contentid/6935101900

Ausgedruckt am: 21.11.2024 um 20:11 Uhr

tomolpi
tomolpi 27.04.2023 aktualisiert um 14:43:39 Uhr
Goto Top
Hallo @martenk,

bitte überarbeite den Titel deines Postings. "Php Problem" ist überhaupt nicht aussagekräftig!
Ich verweise in diesem Zusammenhang nochmal auf unsere Forumsregeln: Wie Du eine Frage richtig stellst.

Du hast als Beitragsart "Frage" gewählt, die ich hier aber auch nicht finden kann, kein einziges Fragezeichen... Bitte ebenfalls überarbeiten und richtig ausformulieren!

Grüße

tomolpi
Moderator
6247018886
6247018886 27.04.2023 aktualisiert um 14:51:45 Uhr
Goto Top
Er stellt hier keine Fragen, seine Beiträge sind meist eh nur Arbeitsanweisungen ans Forum 🐟 ... Just ignore ... Friday is coming.
martenk
martenk 27.04.2023 um 14:55:52 Uhr
Goto Top
Titel kann ich nicht ändern

nun zum Problem - wie unter dem ersten Code geschrieben

nun mein Problem

der username =admin wird angezeigt
doch wenn ich oben im scrip mir den usernamen anzeigen lassen, dann ist die sql Variable leer
wenn ich oben echo $session->username; auskommentiere, dann geht das script wieder

könnt ihr mir dabei helfen, die query in Abhängigkeit des usernamens zu erstellen
ich wollte es so in der Art haben
if($session->username ="admin"){$sql = "SELECT * FROM staff surname = 'Piet'";}  
if($session->username ="julia"){$sql = "SELECT * FROM staff surname = 'Julia'";}  

bloss sobald ich irgendetwas im coding mit der $session schreibe, dann bekommt die sql Variable keinen Inhalt
godlie
godlie 27.04.2023 um 14:59:25 Uhr
Goto Top
Hallo,

erstmal alles was an error reporting gibt, einschalten, dann fliegen dir genug Meldungen um die Ohren, nach denen du suchen kannst.

Gleich unterhalb <?php:
ini_set('display_errors', 1);  
ini_set('display_startup_errors', 1);  
error_reporting(E_ALL);
martenk
martenk 27.04.2023 um 15:03:46 Uhr
Goto Top
gemacht - keine Meldungen
6247018886
6247018886 27.04.2023 aktualisiert um 15:11:16 Uhr
Goto Top
Zitat von @martenk:
ich wollte es so in der Art haben
if($session->username ="admin"){$sql = "SELECT * FROM staff surname = 'Piet'";}  
if($session->username ="julia"){$sql = "SELECT * FROM staff surname = 'Julia'";}  

Lesen und verstehen!

Unterschied zwischen
Comparison Operators
und
Assignment Operators

Dann geht auch dir ein Licht auf.
martenk
martenk 27.04.2023 um 16:27:45 Uhr
Goto Top
nee - leider nicht - sobald ich die session verwende, bekommt die sql keine variable mehr

ich habs mal so gemacht

if($session->username =="admin"){$sql = "SELECT * FROM staff surname = 'Piet'";}  
		$sql = "SELECT * FROM staff";  
martenk
martenk 27.04.2023 um 16:29:26 Uhr
Goto Top
sobald ich irgendetwas mit session reinnehme bleibt die sql variable leer

selbst das
echo $session->username; 
6247018886
6247018886 27.04.2023 aktualisiert um 16:39:18 Uhr
Goto Top
martenk
martenk 27.04.2023 um 16:48:36 Uhr
Goto Top
Die Session ist doch am Arbeiten - das sehe ich doch durch die Anzeige des usernamens

nur wenn ich die variable abfrage, geht die query nicht mehr
6247018886
6247018886 27.04.2023 aktualisiert um 17:00:30 Uhr
Goto Top
nur wenn ich die variable abfrage, geht die query nicht mehr
Beschäftige dich mal mit PHP Headers und "Headers already sent", wenn man in den Backend Controller Files etwas per echo ausgibt, damit bringst du das ganze System an sich zu Fall ...
martenk
martenk 27.04.2023 um 17:01:08 Uhr
Goto Top
selbst wenn ich es nicht mit echo ausgebe - sondern diesen term verwende

if($session->username =="admin"){$sql = "SELECT * FROM staff surname = 'Piet'";}  

klappt es nicht - die sql Variable bleibt leer
6247018886
6247018886 27.04.2023 aktualisiert um 17:11:53 Uhr
Goto Top
Wie schon gesagt
Model–view–controller concept
"SELECT * FROM staff surname = 'Piet'"
Setzen 6, SQL Syntax Error!
https://www.w3schools.com/sql/sql_where.asp

Tschö.
martenk
martenk 27.04.2023 um 17:09:21 Uhr
Goto Top
Wie schon gesagt?

... bin schon in der richtigen Datei - hier habe ich doch die Funktionen
6247018886
6247018886 27.04.2023 um 17:13:19 Uhr
Goto Top
By the way :
"SELECT * FROM staff surname = 'Piet'"
Setzen 6, SQL Syntax Error!
https://www.w3schools.com/sql/sql_where.asp
martenk
martenk 27.04.2023 um 17:16:42 Uhr
Goto Top
Lieben Dank für den Hinweis - nur ändert es nichts an dem Problem von oben
tomolpi
tomolpi 27.04.2023 aktualisiert um 17:23:39 Uhr
Goto Top
Zitat von @6247018886:

Er stellt hier keine Fragen, seine Beiträge sind meist eh nur Arbeitsanweisungen ans Forum 🐟 ... Just ignore ... Friday is coming.

Ich bewundere deine Geduld ;)

@martenk
Du kannst mir den neuen Titel gerne mitteilen, ich kann das dann abändern.
6247018886
6247018886 27.04.2023 um 17:24:23 Uhr
Goto Top
Zitat von @tomolpi:
Ich bewundere deine Geduld ;)
Mit Popcorn ist es gerade noch erträglich face-big-smile.
martenk
martenk 27.04.2023 um 17:30:05 Uhr
Goto Top
das glaube ich gerne face-smile - nur ändert es nichts an dem Problem von oben
tk1234
tk1234 27.04.2023 um 20:36:46 Uhr
Goto Top
Moin,

Zitat von @martenk:
echo $session->username;

Wo kommt $session her?

$result = mysql_query($sql);

Die Funktion gibt es nicht.

So ganz klar ist mir das Problem aber ohnehin nicht … Versuchst du die Bedingungen in der Methode getStaffList einzubauen? Woher soll dort $session herkommen?

Viele Grüße
Tobias
AlterNeuerSack
AlterNeuerSack 28.04.2023 um 01:14:57 Uhr
Goto Top
$sql = "SELECT * FROM staff surname = 'Piet'"

Ich vermisse dass WHERE, Ihr nicht?
6247018886
6247018886 28.04.2023 aktualisiert um 09:25:13 Uhr
Goto Top
Zitat von @AlterNeuerSack:

$sql = "SELECT * FROM staff surname = 'Piet'"

Ich vermisse dass WHERE, Ihr nicht?

Wurde schon erwähnt...

Zitat von @6247018886:

By the way :
"SELECT * FROM staff surname = 'Piet'"
Setzen 6, SQL Syntax Error!
https://www.w3schools.com/sql/sql_where.asp

Btw. an den TO: ich würde dir dringend dazu raten Codes aus einem Skript das du gekauft hast hier nicht zu veröffentlichen, das kann dich teuer zu stehen kommen!
tgvoelker
tgvoelker 03.05.2023 um 10:37:41 Uhr
Goto Top
@martenk

Das Sichtbarkeitsverhalten von PHP weicht von dem von anderen Sprachen ab. Um eine globale Variable in einer Klassenmethode zu verwenden, mußt Du den Gültigkeitsbereich der Variable mit der Direktive global erweitern, siehe https://www.php.net/manual/de/language.variables.scope.php

public static function getStaffList() {
		global $session;
		if($session->username =="admin"){$sql = "SELECT * FROM staff surname = 'Piet'";}  

Ich würde allerdings ein Pattern verwenden, das dann ersetzt wird:

public static function getStaffList() {
		global $session;
		$sql=str_replace('%surname%',Core::$link->real_escape_string($session->username),  
		"SELECT * FROM staff surname = '%surname%'");