php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Jobs und Projekte > Projekthilfe
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 08-07-2009, 19:53
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Lass dir endlich die Queries ausgeben!
Mit Zitat antworten
  #17 (permalink)  
Alt 08-07-2009, 19:54
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Die erste Zeile zieht einen Datensatz mit gewünschtem Firmenschalter-Wert aus der DB. Gibt es keinen solchen Datensatz, gibt queryRow() dennoch etwas zurück. Wahrscheinlich ist das NULL, könnte aber auch FALSE oder ein leeres Array sein.
Du kannst das herausfinden, indem du im WHERE mal 1 = 0 einbaust und dann ein var_dump($mandant) machst.

Um herauszufinden ob die If-Bedingung in diesem Fall wahr wird, kannst du im If-Block ein die('im IF') einsetzen.

Noch etwas: Die Logik dieses Codeschnipsels ist sehr fragwürdig. Wenn der Firmenschalter passt, wird die ID des Mandanten zurückgegeben. Wenn sie nicht passt, wird anhand eines anderen Kriteriums ein Mandant bestimmt. Aber was dann? Sollte dann nicht auch dessen ID zurückgegeben werden?

Geändert von onemorenerd (08-07-2009 um 20:05 Uhr)
Mit Zitat antworten
  #18 (permalink)  
Alt 08-07-2009, 20:01
j4n
 Registrierter Benutzer
Links : Onlinestatus : j4n ist offline
Registriert seit: Jul 2009
Beiträge: 15
j4n befindet sich auf einem aufstrebenden Ast
Standard

@ unset, muss dich leider enttäuschen, aber ich hab 0 Ahnung von php, ausserdem hab ich den code zu hause eh nicht testen.

danke onemorenerd, auf die bestätigung habe ich gewartet.
d.h. also wenn das datenbankfeld leer ist, gibt queryrow doch irgendeinen wert mit...somit kommt die if abfrage erst garnicht zum zug, wenn ich das richtig verstanden habe.

danke schonmal, ich werde das morgen am telefon mit meinem Kollegen klären.
Mit Zitat antworten
  #19 (permalink)  
Alt 08-07-2009, 20:04
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von j4n Beitrag anzeigen
@ unset, muss dich leider enttäuschen, aber ich hab 0 Ahnung von php, ausserdem hab ich den code zu hause eh nicht testen.
Du wirst ja wohl in der Lage sein, dich in einem Handbuch schlau zu machen (auch wenn ich dir die entsprechenden Befehle schon Eingangs genannt habe)? Ansonsten: Wenn du dazu _nicht_ in der Lage bist, solltest du dir evtl. einen anderen Job suchen. PHP ist nicht VB, aber das sind Basics!

Ohne zu wissen, was in deinen Queries steht und was deine Klassen zurückgeben, ist das hier ein Ratespiel.
Mit Zitat antworten
  #20 (permalink)  
Alt 08-07-2009, 20:05
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von j4n Beitrag anzeigen
d.h. also wenn das datenbankfeld leer ist, gibt queryrow doch irgendeinen wert mit...somit kommt die if abfrage erst garnicht zum zug
Das ist so nicht korrekt. Die If-Bedingung wird auf jeden Fall evaluiert.
Ob sie wahr wird und deshalb der If-Block betreten wird, hängt davon ab was $mandant enthält und wie PHP das automatisch zu einem Boolean castet.
Mit Zitat antworten
  #21 (permalink)  
Alt 08-07-2009, 20:16
j4n
 Registrierter Benutzer
Links : Onlinestatus : j4n ist offline
Registriert seit: Jul 2009
Beiträge: 15
j4n befindet sich auf einem aufstrebenden Ast
Standard

@ unset, ich progarmmiere auch erst seit bischen mehr als 2 monaten vb, komme da auch gut voran. dass es nicht nur bei vb bleiben wird ist klar, aber für den anfang kann ich auch nicht 5 programmiersprachen gleichzeitig lernen.

und das man förmlich bleiben und man mir trotz dem helfen kann zeigen hier andere

danke onemorenerd..ich werde das morgen abklären, kannst du mir als abschluss in etwa sagen, was drin stehen darf und was nicht?

Bedanke mich an der Stelle an alle hilfbereiten und wünsch allen noch einen schönen Abend.

Gruß Jan.
Mit Zitat antworten
  #22 (permalink)  
Alt 08-07-2009, 20:24
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von j4n Beitrag anzeigen
@ unset, ich progarmmiere auch erst seit bischen mehr als 2 monaten vb, komme da auch gut voran. dass es nicht nur bei vb bleiben wird ist klar, aber für den anfang kann ich auch nicht 5 programmiersprachen gleichzeitig lernen.
Dann kommst du nicht aus der VB Ecke sondern kannst nichts. Das ist nicht bös' gemeint, aber wichtig für helfende zu wissen.

Gerne etwas ausführlicher:

Lass dir den entscheidenen Query ausgeben. Lass dir das Ergebnis ausgeben:

PHP-Code:
$query 'SELECT * FROM kundenlizenzen WHERE Firmenschalter = \''$this->get['f'] .'\'';
var_dump($query);
$mandant $db->queryRow($query);
var_dump($mandant);
        
        if(!
$mandant) {
            
$mandant $db->queryRow('SELECT * FROM kundenlizenzen WHERE FB1 = \''$this->get['fb1'] .'\'');
        } else {
            return 
$mandant['ID']; 
Was auf true/false gecastet wird, wird hier erklärt: PHP: PHP type comparison tables - Manual

Damit sollte dir genügend Hilfe zur Selbsthilfe gegeben worden sein.
Mit Zitat antworten
  #23 (permalink)  
Alt 08-07-2009, 20:30
j4n
 Registrierter Benutzer
Links : Onlinestatus : j4n ist offline
Registriert seit: Jul 2009
Beiträge: 15
j4n befindet sich auf einem aufstrebenden Ast
Standard

Okay, dass noch dabei bin und NOCH ( =D ) nicht in die "vb ecke" gehoere muss ich wohl eingestehen.

und danke unset, werd mich dran machen.
Mit Zitat antworten
  #24 (permalink)  
Alt 08-07-2009, 21:43
j4n
 Registrierter Benutzer
Links : Onlinestatus : j4n ist offline
Registriert seit: Jul 2009
Beiträge: 15
j4n befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen

Noch etwas: Die Logik dieses Codeschnipsels ist sehr fragwürdig. Wenn der Firmenschalter passt, wird die ID des Mandanten zurückgegeben. Wenn sie nicht passt, wird anhand eines anderen Kriteriums ein Mandant bestimmt. Aber was dann? Sollte dann nicht auch dessen ID zurückgegeben werden?

PHP-Code:
function check_mandant()
    {
        
$db = &singleton('database');
        
        
// Mandant anhand des Firmenschalter suchen
        
$mandant $db->queryRow('SELECT * FROM kundenlizenzen WHERE Firmenschalter = \''$this->get['f'] .'\'');
        
        if(!
$mandant) {
            
$mandant $db->queryRow('SELECT * FROM kundenlizenzen WHERE FB1 = \''$this->get['fb1'] .'\'');
        } else {
            return 
$mandant['ID'];
        }

        if(!
$mandant) {
            
$ssql 'INSERT INTO kundenlizenzen (FB1, FB2, PLZ, Firmenschalter, AngelegtAm) '.
                    
'VALUES (\''.$this->get['fb1'].'\', \''.$this->get['fb2'].'\', \''.$this->get['p'].'\', \''.$this->get['f'].'\', NOW())';
            
            
$db->query($ssql);
            
            
$id $db->insertId();
            
$this->log($this->user_idsprintf($this->config['msg_mandant_not_found'], $this->get['fb1'], $id));
            
            return 
$id;
        } else {
            return 
$mandant['ID'];
        }
    } 
Mit Zitat antworten
  #25 (permalink)  
Alt 08-07-2009, 23:58
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Vertausche mal if- und else-Zweig und negiere dementsprechend die if-Bedingung. Dann brauchst du auf einmal das else gar nicht mehr ...
PHP-Code:
// Auswahl nach Firmenschalter
$mandant = ...;
if (
$mandant) {
    
// hat geklappt, wir sind fertig
    
return $mandant['id'];
}

// Auswahl nach FB1
$mandant = ...;
if (
$mandant) {
    
// hat geklappt, wir sind fertig
    
return $mandant['id'];
}

// neu anlegen
...
return 
$id
Das nennt sich early return. Sehr übersichtlich, sehr flach.
Eine andere Variante wäre verschachteltes if-else.
PHP-Code:
// Auswahl nach Firmenschalter
$mandant = ...;
if (!
$mandant) {
    
// hat nicht geklappt, versuche Auswahl nach FB1
    
$mandant = ...;
    if (!
$mandant) {
         
// hat nicht geklappt, neu anlegen
        
...
        return 
$id;
    }
}
 
return 
$mandant['id']; 
Early return ist was für Funktionen, die nur etwas "besorgen" und zurückgeben, verschachteltes if-else hat dagegen den Vorteil, dass man vor dem return noch irgend etwas mit den Daten anstellen kann.

Geändert von onemorenerd (09-07-2009 um 00:00 Uhr)
Mit Zitat antworten
  #26 (permalink)  
Alt 09-07-2009, 17:03
j4n
 Registrierter Benutzer
Links : Onlinestatus : j4n ist offline
Registriert seit: Jul 2009
Beiträge: 15
j4n befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
 function check_mandant()
    {
        
$db = &singleton('database');

        
// Mandant anhand des Firmenschalter suchen

         
$fschalter str_replace(" """$this->get['f']);

        if(!empty (
$fschalter) && strlen($fschalter) > 0){
            
$mandant $db->queryRow('SELECT * FROM kundenlizenzen WHERE Firmenschalter = \''.$fschalter.'\' ');
        }else{
            
$mandant false;
        }

        if(!
$mandant) {
            if(!empty(
$this->get['fb1'])){
                
$mandant $db->queryRow('SELECT * FROM kundenlizenzen WHERE FB1 = \''$this->get['fb1'] .'\'');
        }
        } else {
            return 
$mandant['ID'];
        }

        if(!
$mandant) {
            
$ssql 'INSERT INTO kundenlizenzen (FB1, FB2, PLZ, Firmenschalter, AngelegtAm) '.
            
'VALUES (\''.$this->get['fb1'].'\', \''.$this->get['fb2'].'\', \''.$this->get['p'].'\', \''.$this->get['f'].'\', NOW())';

            
$db->query($ssql);

            
$id $db->insertId();
            
$this->log($this->user_idsprintf($this->config['msg_mandant_not_found'], $this->get['fb1'], $id));

            return 
$id;
        } else {
            return 
$mandant['ID'];
        }
    } 


...habs gelöst!

in der Datenbank wurde tasächlich immer ein leerzeichen mitgegeben, warum auch immer.

Danke an alle für eure Mithilfe.


Grüße Jan
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
preg_match() erkennt Suchwort nicht??! Truncate PHP Developer Forum 8 30-08-2008 15:07
ie erkennt links nicht susi1600 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 28-10-2007 19:31
php erkennt Variable nicht Ogden PHP Developer Forum 8 01-06-2006 12:00
Leeres Feld in Drop Down einfügen FRAD PHP Developer Forum 5 28-01-2005 15:58
GetImageSize() erkennt JPG nicht JanS PHP Developer Forum 5 24-02-2002 01:07

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43 Uhr.