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

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

Printed on: April 27, 2024 at 06:04 o'clock

Member: tomolpi
tomolpi Apr 27, 2023 updated at 12:43:39 (UTC)
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
Mitglied: 6247018886
6247018886 Apr 27, 2023 updated at 12:51:45 (UTC)
Goto Top
Er stellt hier keine Fragen, seine Beiträge sind meist eh nur Arbeitsanweisungen ans Forum 🐟 ... Just ignore ... Friday is coming.
Member: martenk
martenk Apr 27, 2023 at 12:55:52 (UTC)
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
Member: godlie
godlie Apr 27, 2023 at 12:59:25 (UTC)
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);
Member: martenk
martenk Apr 27, 2023 at 13:03:46 (UTC)
Goto Top
gemacht - keine Meldungen
Mitglied: 6247018886
6247018886 Apr 27, 2023 updated at 13:11:16 (UTC)
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.
Member: martenk
martenk Apr 27, 2023 at 14:27:45 (UTC)
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";  
Member: martenk
martenk Apr 27, 2023 at 14:29:26 (UTC)
Goto Top
sobald ich irgendetwas mit session reinnehme bleibt die sql variable leer

selbst das
echo $session->username; 
Mitglied: 6247018886
6247018886 Apr 27, 2023 updated at 14:39:18 (UTC)
Goto Top
Member: martenk
martenk Apr 27, 2023 at 14:48:36 (UTC)
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
Mitglied: 6247018886
6247018886 Apr 27, 2023 updated at 15:00:30 (UTC)
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 ...
Member: martenk
martenk Apr 27, 2023 at 15:01:08 (UTC)
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
Mitglied: 6247018886
6247018886 Apr 27, 2023 updated at 15:11:53 (UTC)
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ö.
Member: martenk
martenk Apr 27, 2023 at 15:09:21 (UTC)
Goto Top
Wie schon gesagt?

... bin schon in der richtigen Datei - hier habe ich doch die Funktionen
Mitglied: 6247018886
6247018886 Apr 27, 2023 at 15:13:19 (UTC)
Goto Top
By the way :
"SELECT * FROM staff surname = 'Piet'"
Setzen 6, SQL Syntax Error!
https://www.w3schools.com/sql/sql_where.asp
Member: martenk
martenk Apr 27, 2023 at 15:16:42 (UTC)
Goto Top
Lieben Dank für den Hinweis - nur ändert es nichts an dem Problem von oben
Member: tomolpi
tomolpi Apr 27, 2023 updated at 15:23:39 (UTC)
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.
Mitglied: 6247018886
6247018886 Apr 27, 2023 at 15:24:23 (UTC)
Goto Top
Zitat von @tomolpi:
Ich bewundere deine Geduld ;)
Mit Popcorn ist es gerade noch erträglich face-big-smile.
Member: martenk
martenk Apr 27, 2023 at 15:30:05 (UTC)
Goto Top
das glaube ich gerne face-smile - nur ändert es nichts an dem Problem von oben
Member: tk1234
tk1234 Apr 27, 2023 at 18:36:46 (UTC)
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
Member: AlterNeuerSack
AlterNeuerSack Apr 27, 2023 at 23:14:57 (UTC)
Goto Top
$sql = "SELECT * FROM staff surname = 'Piet'"

Ich vermisse dass WHERE, Ihr nicht?
Mitglied: 6247018886
6247018886 Apr 28, 2023 updated at 07:25:13 (UTC)
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!
Member: tgvoelker
tgvoelker May 03, 2023 at 08:37:41 (UTC)
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%'");