php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.05.2007, 23:25  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard Inhalte von Array werden nicht ausgegeben ... Denkfehler?

Hallo,

ich habe eine MySQL-Tabelle mit Konfigurationen (spalte setting, spalte value).

Ich habe folgende Funktion, die die Konfigurationswerte auslesen soll:
PHP-Code:
function anm_get_config()
{
    static 
$config;
    global 
$prefix;

    if( 
$config == TRUE )
    {
        return 
$config;
    }

    
$result mysql_query(sprintf("SELECT * FROM `%sforums`",$prefix)); 
    
var_dump ($result);

    
$config mysql_fetch_array($resultMYSQL_ASSOC);

    return 
$config;

In der Datei, wo ich auf die config zugreifen will, mache ich noch
PHP-Code:
$_ANM_CONFIG = anm_get_config();
...
<script>
    var tgebuehr = <?php sprintf($_ANM_CONFIG['prs_jgd_tagungsgebuehr']) ?>
</script>
Leider steht in der JS-Variable tgebuehr nichts drin, obwohl der Wert "prs_jgd_tagungsgebuehr" in der Tabelle einen Wert hat.

Wo liegt mein Denkfehler?
maeck ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.05.2007, 23:40  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Was stehtn in $_ANM_CONFIG?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 07.05.2007, 00:19  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du hast ne Menge Denkfehler drinne - na gut eigentlich nur 2:

1. dein "static" Cache funktioniert nicht, denn mysql_fetch_array() gibt entweder FALSE oder einen Array zurück, jedoch nie TRUE.

2. Denkfehler ist, dass <?php sprintf(..) ?> keine Ausgabe erzeugt, das ist wie wenn ein Taubstummer Hallo sagt. Änder es in printf(). Allerdings sind die (s)printf-Funktionen hier fehl am Platz, oder hast du tatsächlich %-Platzhalter darin?
Zergling-new ist offline  
Alt 07.05.2007, 08:51  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von KingCrunch
Was stehtn in $_ANM_CONFIG?
$_ANM_CONFIG = anm_get_config()

Zitat:
Zitat von Zergling
Du hast ne Menge Denkfehler drinne - na gut eigentlich nur 2


zu 1)
Das müsste doch klappen, oder?
PHP-Code:
function anm_get_config()
{
    static 
$config;
    global 
$prefix;

    if( 
$config != FALSE )
    {
        return 
$config;
    }
... 
zu 2)
Habe es in
PHP-Code:
<script>
    var tgebuehr = <?php echo $_ANM_CONFIG['prs_jgd_tagungsgebuehr'?>
</script>
geändert.

Trotzdem gibt er nichts aus.
maeck ist offline  
Alt 07.05.2007, 09:06  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

@Zergling: Er vergleicht config ohne Identitätsoperator. Ist zwar nicht schön, müsste aber klappen, solange er kein leeres Array zurück gibt.

@topic: Was steht denn nun in $_ANM_CONFIG?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 07.05.2007, 10:03  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von KingCrunch
@Zergling: Er vergleicht config ohne Identitätsoperator. Ist zwar nicht schön, müsste aber klappen, solange er kein leeres Array zurück gibt.
Wie wäre es denn schön? Bin für alle Verbesserungsvorschläge offen.
Zitat:
Zitat von KingCrunch
@topic: Was steht denn nun in $_ANM_CONFIG?
Wie meinst du " was steht da drin"? Wenn ich ein var_dump mache, bekomme ich so was:
Code:
array(2) { ["setting"]=>  string(22) "prs_jgd_tagungsgebuehr" ["value"]=>  string(2) "65" }
Aber in der Tabelle stehen ca.10 settings drin, müsste er die nicht alle ausgeben? Die sollten doch alle in dem Array drin stehen, oder?
maeck ist offline  
Alt 07.05.2007, 10:23  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Schöner wäre es möglichst typ-streng zu programmieren, obwohl PHP auch eben typschwache Programmierung erlaubt. zB per is_array oder ($string !== false).

Zitat:
Wie meinst du " was steht da drin"? Wenn ich ein var_dump mache, bekomme ich so was:
Genau das mein ich

Zitat:
Aber in der Tabelle stehen ca.10 settings drin, müsste er die nicht alle ausgeben? Die sollten doch alle in dem Array drin stehen, oder?
Nein

mysql_fetch_array
Zitat:
Zitat von Manual
mysql_fetch_array -- Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
Beschreibung
array mysql_fetch_array ( resource Ergebnis-Kennung [, int Ergebnistyp] )


Liefert ein Array das dem aktuellen Datensatz entspricht oder FALSE, wenn keine weiteren Datensätze vorliegen.

mysql_fetch_array() ist eine erweiterte Version von mysql_fetch_row(). Die Daten werden sowohl unter numerischen Indizes des Ergebnis-Arrays abgelegt, als auch unter assoziativen Indizes. Als Schlüssel für die assoziativen Indizes werden die Feldnamen benutzt.
Oder auch mysql_fetch_row:
Zitat:
Zitat von Manual
mysql_fetch_row

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_fetch_row — Liefert einen Datensatz als indiziertes Array
Beschreibung
array mysql_fetch_row ( resource $Ergebnis-Kennung )

Rückgabewert: Ein Array das der Ergebniszeile entspricht oder FALSE wenn keine weiteren Zeilen verfügbar sind.

Anmerkung: Diese Funktion setzt NULL Felder auf den PHP Wert NULL.

mysql_fetch_row() liefert einen Datensatz aus dem Anfrageergebnis mit der übergebenen Kennung. Der Datensatz wird als Array geliefert. Jedes Feld wird in einem Array-Offset abgelegt, der Offset beginnt bei 0.

Wiederholtes Aufrufen von mysql_fetch_row() liefert den nächsten Datensatz des Anfrageergebnisses oder FALSE, wenn keine weiteren Datensätze verfügbar sind.
mysql_fetch_array liefert immer genau einen Datensatz und setzt den Zeiger dann ein Datensatz weiter. Aber auch wenn du dir dein Array anschaust, hätte dir schon auffallen müssen, dass das hier nicht geht
PHP-Code:
<?php
echo $_ANM_CONFIG['prs_jgd_tagungsgebuehr'];
?>
, weil dein Array-Key nicht definiert ist. Setze in Zukunft bei allen deinen Scripten error_reporting auf E_ALL, dann sollte sich PHP bei sowas schon selbst melden.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 07.05.2007, 14:01  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Danke für die ausführliche und geduldige Antwort

Zitat:
Setze in Zukunft bei allen deinen Scripten error_reporting auf E_ALL
Dies mache ich doch über error_reporting(E_ALL); direkt im PHP-Code, oder? Da spuckt er mir aber auch nicht mehr aus.

Das heisst, ich muss ein eigenes Array machen, was ich über ne while-Schleife fülle. Oder gibts noch andere, empfehlenswertere Möglichkeiten um an mein Ziel zu kommen?
maeck ist offline  
Alt 07.05.2007, 15:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von KingCrunch
@Zergling: Er vergleicht config ohne Identitätsoperator. Ist zwar nicht schön, müsste aber klappen, solange er kein leeres Array zurück gibt.
Verwirr mich doch nicht - ein Monat kein PHP und schon vergißt man wieder das wichtigste Ich glaube du hast Recht, trotzdem vergleicht man keine Äpfel mit Birnen, nur weil beides Gemüse ist.

Wobei mir der Typvergleich dann wieder zu lästig ist. Dann lieber wie du vorgeschlagen hast auf is_array() prüfen.

Aber das Problem war ja etwas anderes, die fehlende while-Schleife bei mehreren Datensätzen.
Zergling-new ist offline  
Alt 07.05.2007, 15:59  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Aber das Problem war ja etwas anderes, die fehlende while-Schleife bei mehreren Datensätzen.
Entnehme ich daraus, dass die while-Schleife eine gute ("das-macht-man-so") Lösung ist?
maeck ist offline  
 


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
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Array Inhalte in eine Datenbank über tragen Munsi1 PHP Tipps 2008 5 11.04.2008 13:28
Array wird net ausgegeben pchero PHP Tipps 2007 1 22.04.2007 10:20
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
inhalte eines array durcheinander werfen PHP Tipps 2005-2 1 09.06.2005 16:49
Array Denkfehler ... !? PHP Tipps 2005 9 16.03.2005 14:00
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array wird nicht ausgegeben, = mysql_fetch_array( wird nicht ausgegeben, php array fehlende daten, mysql_fetch_row liefert leeres array statt false, wiederholtes aufrufen von mysql_fetch_array

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.