php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-07-2008, 11:47
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard Function Laienfrage

Hallo Forum!

Die unten aufgeführte Funktion gibt mir immer false zurück, und ich hab nicht rausgefunden warum

PHP-Code:
function getname($plid) {
    
$found=0;
    
//load mysql class & settings
    
global $mysql,$settings;
        
//query for user
        
$getname_r=$mysql->query($settings['mysql']['db'],
                                           
"SELECT userName 
                                            FROM userlog 
                                            WHERE userID="
.$plid);
        while(
$getname=mysql_fetch_array($getname_r,MYSQL_BOTH))
        {  
         
$found=$getname['userName'];
        }
     
//return false if no user was found
     
if ($found==0){ return false; }
     else { return 
$found; }
    }
    
    echo 
getname(1);
    exit(); 

Wahrscheinlich seh ich den Wald vor lauter Bäume nicht mehr ^^ Also lacht mich nicht aus :P

Zu der Funktion: userID 1 existiert, Tabellen und Spaltennamen sind richtig geschrieben.

Danke im Voraus für die Hilfe und MfG
Onyx

Geändert von Onyxagargaryll (04-07-2008 um 11:51 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 04-07-2008, 11:52
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

da hilft nur ein vernünftiges debugging

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 04-07-2008, 11:53
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich schon Hab aber nix gefunden.
Und wenn ich den Query manuell direkt im SQL eingebe erhalte ich auch das Resultat.

Danke für die Antwort, MfG
Mit Zitat antworten
  #4 (permalink)  
Alt 04-07-2008, 11:54
lennart
 PHP Junior
Links : Onlinestatus : lennart ist offline
Registriert seit: May 2007
Ort: Hamburg
Beiträge: 565
lennart ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
 echo getname(1);
exit(); 
Das noch hinter einen return zu setzen ist grober Unfug.

// Edit: Wäh, das gehört garnicht mehr zur Funktion. Okay... Komisch eingerückt.

Ich vermute mal, dass dein Query einfach nichts zurückliefert.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-07-2008, 11:58
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das war zur Demonstration, zu Testzwecken. Das hab ich zum Debuggen gebraucht.

Wie gesagt, die SQL manuell eingegeben liefert das Resultat, $mysql und $settings sind gesetzt & vorhanden.


Danke auch dir für die Antwort, Gruss
Onyx


EDIT: Ja das Einrücken bereitet mir hier im Forum z.T. ein wenig Schwierigkeiten ^^ Ich entschuldige mich dafür.
Mit Zitat antworten
  #6 (permalink)  
Alt 04-07-2008, 11:59
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Onyxagargaryll
Hab ich schon Hab aber nix gefunden.
Glaub ich dir nicht.
Hast Du die fertige Query ausgeben lassen?
mysql_error() ausgeben lassen?
Die Anzahl der gefundenen Datensätze mittels mysql_num_rows() ausgeben lassen?
In jeder gefundenen Zeile den Wert von "getname" ausgeben lassen?
Mit Zitat antworten
  #7 (permalink)  
Alt 04-07-2008, 12:06
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. Ja
2. ist leer
3. =1 bei manueller Eingabe, da $found noch = 0 ist: 0 beim Script
4. Was meinst du damit..? In jeder gefundenen Zeile die Funktion ausgeben..? Du meinst den userName? Darum gehts ja in der Qery.

Was ich vergass zu erwähnen: die userID ist auto_increment, also werden nicht mehrere Datensätze ausgelesen.


Danke für deine Antwort, MfG
Onyx
Mit Zitat antworten
  #8 (permalink)  
Alt 04-07-2008, 12:06
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function getname($plid)
{
    
//load mysql class & settings
    
global $mysql,$settings;

    
//query for user
    
$sql 'SELECT userName FROM userlog WHERE userID= ' intval($plid) . 'LIMIT 1';
    
$res $mysql->query($settings['mysql']['db'],$sql);
    while(
$getname=mysql_fetch_array($res,MYSQL_BOTH))
        return 
$getname['userName'];

    return 
false;
}
    
echo 
getname(1); 
Das erscheint mir bei deinem Vorhaben irgendwie vernünftiger.
Spätestens jetzt kannst du dir auch mal die Query ausgeben lassen! Und hier posten, sowie zeitgleich in PMA gegenchecken.

Und die seltsame und vor allem inkonsequente Verwendung der SQL-Klasse ist wahrscheinlich auch recht fehleranfällig.
EDIT:
Die While-schleife ist jetzt natürlich überflüssig (so wie vorher eigentlich auch schon), weil ja höchstens ein Datensatz kommt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (04-07-2008 um 12:09 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 04-07-2008, 12:13
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier die Funktion in der mysql Klasse:
PHP-Code:
  function query($db$query="") {
      
// load the settings
      
require("settings.inc.php");
      
      
// connect to server
      
$link            =    mysql_connect($settings['mysql']['host'],
                                        
$settings['mysql']['user'],
                                        
$settings['mysql']['passwd']);
      if(!
$link) { // can't connect to the db
        
return mysql_error();
      }
      
      
// select the db
      
$selected_db    =    mysql_select_db($db$link);
      if(!
$selected_db) { // can't select the db
        
return mysql_error($link);
      }
      
      
// create the query
      
if ($query == "") {
    return 
"No Query.";
    }
      
      
// execute the query
      
$result            =    mysql_query($query$link);
      if(!
$result) {
        return 
mysql_error($link);
      }
      
      
// give the result back
      
return $result;
  } 
Leider hat das LIMIT 1 auch nichts gebracht..

Ja das while wäre überflüssig Ich änder das nachher, lasse das für jetzt vorerst stehen.


Danke für die Hilfe, Gruss
Onyx


EDIT: Was ist PMA?
Mit Zitat antworten
  #10 (permalink)  
Alt 04-07-2008, 12:16
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Hier die Funktion in der mysql Klasse:
Die ist ja mal sowas von überflüssig...

Zitat:
Leider hat das LIMIT 1 auch nichts gebracht..
Das hat auch keiner erwartet.

Aber alle erwarten hier ein vernünftiges Debugging! Der Peter hat schon drauf hingewiesen und auch Pekka hat dich gebeten die Query auszugeben. Warum postest du die Ausgabe nicht mal hier? Und hast du sie auch im PMA geprüft? Was kam dabei raus? Wundert uns das? Fragen über Fragen...

PMA = phpMyAdmin (oder von mir aus auch ein anderes Programm mit dem du Queries fehlerfrei an deine DB absetzen kannst.)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #11 (permalink)  
Alt 04-07-2008, 12:16
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Wenn mysql_num_rows() 0 ist, stimmt entweder die Query nicht oder sie wird an die falsche Datenbank abgesetzt.
Mit Zitat antworten
  #12 (permalink)  
Alt 04-07-2008, 12:20
Onyxagargaryll
 Registrierter Benutzer
Links : Onlinestatus : Onyxagargaryll ist offline
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
Onyxagargaryll ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Query:
Zitat:
SELECT userName FROM userlog WHERE userID=1 LIMIT 1
Auf den Rest der Debugging-Anfragen habe ich weiter oben geantwortet.

Was ist PMA? Google will mir das nicht sagen..
EDIT: Ah ok Wie gesagt, im PMA gehts und er gibt mir das richtige zurück ("Im SQL" -> damit meinte ich PMA )

Danke für eure Geduld MfG
Onyx

EDIT: Datenbank geprüft, es ist die richtige. Und einen Connection-error gibts leider auch nicht.

Geändert von Onyxagargaryll (04-07-2008 um 12:24 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 04-07-2008, 12:21
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von TobiaZ
PMA = phpMyAdmin (oder von mir aus auch ein anderes Programm mit dem du Queries fehlerfrei an deine DB absetzen kannst.)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14 (permalink)  
Alt 04-07-2008, 12:25
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bis auf die Tatsache, dass deine Query-Klasse für jeden Query neu connectet (was schon recht blöd ist)... hat ise nichtmal einen Vorteil, wenn du nicht alles komplett in der Klasse hast (die auch noch PHP4 ist)...

Btw: Sicher, dass die Namen wirklich korrekt sind?

userName und userlog .. warum nicht userLog?

Was passiert, wenn du den die Verbindung + Query ganz normal irgendeine gesonderte Funktion abschickst?

mfg
Mit Zitat antworten
  #15 (permalink)  
Alt 04-07-2008, 12:25
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
EDIT: Ah ok Wie gesagt, im PMA gehts und er gibt mir das richtige zurück
Dann solltest du mal deine Pseudo-Klasse deguggen, oder ganz in die Tonne werfen. Die ist mir ein bisschen wüst um sie jetzt auch noch zu kontrollieren. Aber wenn angeblich alles Richtig ist, müssen die Daten ja da irgendwo verschluckt werden.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:31 Uhr.