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 10-08-2007, 13:26
eldiablo86
 Newbie
Links : Onlinestatus : eldiablo86 ist offline
Registriert seit: Aug 2007
Beiträge: 3
eldiablo86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Vergleich zweier Variablen schlägt fehl

Hallo liebe Community!

Ich sitze seit ca. 4 Std an folgendem Problem und komme einfach nicht weiter... vielleicht sehe ich ja den Wald vor Bäumen nicht, aber ich find einfach die Lösung nicht.
Mein Projekt ist ein kleiner Terminkalender, der mithilfe zweier Schleifen seine Tabellenzellen erstellt, in denen die Tage von 1 bis 31 eines jeden Monats dargestellt werden. Tage, an denen ein Termin hinterlegt ist, sollen hervorgehoben werden, z.B. durch Fettdruck. Um herauszufinden ob am Tag x ein Termin ist, vergleiche ich x mit den Daten die ich aus meiner DB geholt habe.
Mein Problem ist es zu überprüfen, ob der Tag, sagen wir der 27. August, gleich dem Zellenzähler $y ist.

...
// Hiervor ist der Teil in dem jede Zelle der Tabelle mit Inhalt gefüllt wird.
//

PHP-Code:
$$row mysql_fetch_array($ergebnis);
$tag explode("-"$row[datum]); // z.B. 2007-8-27
if ($x == $tag[2])  //$x ist der Zellenzähler
 
{
    echo 
"x und tag sind gleich"
 
}
 else 
 {
    echo 
"x und tag sind nicht gleich"
 
}
//Problem: x ist niemals == $tag[2] 
...

Ich vermute sehr stark, dass es an den verschiedenen Datentypen liegt. $tag ist ja ein String-Array und $x ein integer, aber glaubt mir, ich habe mit settype rumexperimentiert und es hat sich nichts am Ergebnis geändert... Ich habe auch schon $x in einen String umgewandelt und dann verglichen mit strnatcmp(), hat auch nichts genutzt... Wenn ich mit echo $x . ":" . $tag[2] die Variablen zum testen ausgebe, zeigt er mir, dass sie tatsächlich gleich sind. (z.B. 13 : 13) .

Ich hoffe ihr könnt mir aus meiner Verwirrung helfen :-)
Mit Zitat antworten
  #2 (permalink)  
Alt 10-08-2007, 13:37
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
$tag ist ja ein String-Array und $x ein integer...
Solange du den Vergleich nicht mit === machst, ist das PHP schnuppe (Stichwort Type Cast)
Hast du ggf noch irgendwie ein nicht darstellbares Zeichen drin ? Hast du $tag mal mit var_dump() ausgegeben ? Sind das die erwarteten Werte ? Und wieso hast du $$row im Code ? Ausserdem solltest du $row['datum'] und NICHT $row[datum] schreiben. Auch dein error_reporting(E_ALL) wäre von Vorteil.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #3 (permalink)  
Alt 10-08-2007, 14:05
eldiablo86
 Newbie
Links : Onlinestatus : eldiablo86 ist offline
Registriert seit: Aug 2007
Beiträge: 3
eldiablo86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für die schnelle Antwort. Hier nochmal etwas mehr vom Skript: die gesamte Schleife, die die Tabelle erstellt. Achtung, $x aus dem letzten beitrag ist hier $y. $$row war ein Tippfehler.

PHP-Code:
function erstelle_tabellenkoerper() {
  
$x 1;
  
$y 1;       
// Hier beginnt die Schleife, die die Tabellenzellen erstellt und füllt.
    
  
while ($p 5)                              // Für die Zeilen zuständig      
    
{
        echo 
"<tr>\n";
        
        while (
$k 7)                         // Für die Spalten bzw. Zellen pro Reihe
         
{
            echo 
" <td>";        
            
$r 0;
            if (
$x >= date(w) && $y <= 31)  
/* Ist vielleicht etwas kompliziert gelöst. Soll dafür sorgen, dass
 wenn z.B. der 1 August ein Mittwoch ist, "1" auch unter Mittwoch
 in der Tabelle steht und nicht unter Montag. 
(Zuordnung: Wochentag-> numerischer Tag des Monats ) */
             
{
                
$row mysql_fetch_array($ergebnis);
                  
$tag explode("-"$row['datum']);
                echo 
" " var_dump($tag) . " ";
                if (
$y == $tag[2]) 
                {
                echo 
"y und tag sind gleich";
                
// Ausgabe Zellenzähler fett

                
}
                else 
                {
                echo 
"y und tag sind nicht gleich";
                
// Ausgabe Zellenzähler normal
                
}
                
                echo  
" " $y ":" $day[$y];                
                 echo 
"</td>\n";        
                
$y++; 
             }
               else
             {
                echo 
" </td>";                
             }
            
$k++;
            
$x++;                
        }
        echo 
"</tr>";
        
$p++;
        
$k 0;
    }
 } 
vardump() ergibt:
array(3) {
[0]=> string(4) "2007"
[1]=> string(2) "08"
[2]=> string(2) "13" }

Wobei es könnte auch ein Denkfehler meinerseits sein... ich lese die erste Zeile aus meiner MySQL Abfrage aus und vergleiche diese mit $y, aber eben nur mit einem $y und nicht mit allen... deshalb kann $y ja niemals $tag[2] sein, weil bei jedem Schleifendurchlauf ein anderes $tag[2] mit nur einem einzigen $y verglichen wird. Was sagt ihr dazu?
Mit Zitat antworten
  #4 (permalink)  
Alt 10-08-2007, 16:00
eldiablo86
 Newbie
Links : Onlinestatus : eldiablo86 ist offline
Registriert seit: Aug 2007
Beiträge: 3
eldiablo86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So habe die Lösung nun doch gefunden; es war wohl so wie zuvor vermutet, dass ein Denkfehler drin war und das Programm die falschen Werte verglichen hat. Wen's interessiert hier das funktionierende Listing:
PHP-Code:
 function erstelle_tabellenkoerper() {
 global 
$ergebnis;
 
$f 1
 while (
$f <= mysql_num_rows($ergebnis)) // Array mit Tagen füllen
  
{
     global 
$days;
    
$row mysql_fetch_array($ergebnis);
      
$tag explode("-"$row['datum']);
     
$days[$tag[2]] = $tag[2];
    
$f++; 
 } 
 echo 
var_dump($days);
  
$x 1;
  
$y 1;                                   // Hier beginnt die Schleife, die die Tabellenzellen erstellt und füllt.
    
while ($p 5)                              // Für die Reihen zuständig      
    
{
        echo 
"<tr>\n";
        
        while (
$k 7)                         // Für die Spalten bzw. Zellen pro Reihe
         
{
            echo 
" <td>";        
            
$r 0;
            if (
$x >= date(w) && $y <= 31
             {
                if (
$y == $days[$y]) 
                {
                echo 
"<font style=\"color:red\"> " $y "</font>";
                }
                else 
                {
                echo 
"<font style=\"color:black\"> " $y "</font>";
                }
                 echo 
"</td>\n";        
                
$y++; 
             }
               else
             {
                echo 
" </td>";                
             }
            
$k++;
            
$x++;                
        }
        echo 
"</tr>";
        
$p++;
        
$k 0;
    }
 } 
Mit Zitat antworten
  #5 (permalink)  
Alt 10-08-2007, 16:04
jens76
 Member
Links : Onlinestatus : jens76 ist offline
Registriert seit: Dec 2004
Beiträge: 328
jens76 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum nutzt du sowas??

PHP-Code:
"<font style=\"color:black\"> 
das läßt sich doch viel besser über eine css-class regeln...
Mit Zitat antworten
  #6 (permalink)  
Alt 10-08-2007, 16:29
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, eine Eigenschaft muss man nicht in eine Klasse verpacken~
Was wesentlich störender ist, ist das obsolete Font-Tag.
Mit Zitat antworten
  #7 (permalink)  
Alt 11-08-2007, 00:05
student
 Banned
Links : Onlinestatus : student ist offline
Registriert seit: Aug 2002
Ort: Switzerland
Beiträge: 9
student ist zur Zeit noch ein unbeschriebenes Blatt
Standard ....

Verstehe ich richtig, du willst alle Einträge aus einer Tabelle haben die mit deinem Tag x im Feld datum übereinstimmen?

Wenn ja, warum machst du nicht gleich den dazu passenden SQL query?

Schau mal unter
http://dev.mysql.com/doc/refman/5.0/...culations.html

Vielleicht mit mysql> SELECT * FROM table WHERE DAYOFMONTH(datum) = $x;
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

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 11:23 Uhr.