SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.09.2005, 18:05:04
JansonChristian JansonChristian ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Landshut
Beiträge: 98
Zeitfunktion stimmt nicht, hilfe

Hi,

habe folgendes problem, im folgenden script
sollten eigentlich nur die Artikel angezeigt werden.
Die in einer Minute oder weniger ablaufen.
Er zeigt mir aber alle artikel an??

Kann mir da jemand helfen??

Vorab schon entschuldigung, das script ist sehr lang!

PHP-Code:
$TPL_ending_soon_value "";



                  
$now date("YmdHis",time());







                  
$query "select ends,id,title,photo_uploaded from auctions where closed=\"0\" and



                                          suspended=\"0\" order by ends"
;



                  
$result mysql_query($query);



                  
$num_auction mysql_num_rows($result);







                  
$i 0;



                  
$bgcolor "#FFFFFF";



                  while(
$i $num_auction && $i 6){



                          if(
$bgcolor == "#FFFFFF")



                          {



                                  
$bgcolor "#F2F7FE";



                          }



                          else



                          {



                                  
$bgcolor "#FFFFFF";



                          }







                          
$title   mysql_result($result,$i,"title");



                          
$id      mysql_result($result,$i,"id");



                          
$ends    mysql_result($result,$i,"ends");



                          
$picture intval(mysql_result($result,$i,"photo_uploaded"));







                          
$year                         intval(date("Y"));



                          
$month                         intval(date("m"));



                          
$day                                 intval(date("d"));



                          
$hours                         intval(date("H"));



                          
$minutes                 intval(date("i"));



                          
$seconds                 intval(date("s"));



                          
$ends_year                 substr($ends,0,4);



                          
$ends_month         substr($ends,4,2);



                          
$ends_day                 substr($ends,6,2);



                          
$ends_hours                substr($ends,8,2);



                          
$ends_minutes         substr($ends,10,2);



                          
$ends_seconds         substr($ends,12,2);







                          
$difference intval(mktime($ends_hours,$ends_minutes,$ends_seconds,$ends_month,$ends_day,$ends_year)) - intval(mktime($hours,$minutes,$seconds,$month,$day,$year));







          if (
$difference 0) {



                              
$ends_string intval($difference 86400).$MSG_126;



                              
$difference $difference - (intval($difference 86400)



                                                                                          * 
86400);



                              
$hours_difference intval($difference 3600);



                              if(
strlen($hours_difference) == 1){



                                      
$hours_difference "0".$hours_difference;



                              }



                              
$ends_string .= $hours_difference.":";







                              
$difference $difference - ($hours_difference 3600);



                              
$minutes_difference intval($difference 60);



                              if(
strlen($minutes_difference) == 1){



                                      
$minutes_difference "0".$minutes_difference;



                              }



                              
$ends_string .= $minutes_difference.":";







                              
$difference $difference - ($minutes_difference 60);



                              
$seconds_difference $difference;



                              if(
strlen($seconds_difference) == 1){



                                      
$seconds_difference "0".$seconds_difference;



                              }







                              
$ends_string .= $seconds_difference;



          } else {



              
$ends_string "$err_font$MSG_911</FONT>";



          }



                          
$TPL_ending_soon_value .=



                                  
"<TR BGCOLOR=\"$bgcolor\">".



                                  
"<TD WIDTH=\"20%\"  VALIGN=top ALIGN=LEFT>".



                                  
"$sml_font".$ends_string."</FONT>".



                                  
"</TD>".



                                  
"<TD WIDTH=\"60%\" VALIGN=top ALIGN=LEFT>";







                          if (
$picture != 0)



                            
$TPL_ending_soon_value .= "<IMG SRC=\"images/minipic.gif\" WIDTH=12 HEIGHT=10 BORDER=0>&nbsp;";







                         
$TPL_ending_soon_value .=



                                  
"$sml_font<A HREF=\"./item.php?id=$id&SESSION_ID=$sessionIDU\">".stripslashes($title)."</A></FONT>".



                                  
"</TD>".



                                  
"</TR>";



                          
$i++;



                  }







                  if(
$num_auction 6)



                  {



                          
$TPL_ending_soon_value .= "<TR ALIGN=LEFT>".



                           
"<TD></TD><TD>".



                           
"<A HREF=\"./view_more_ending.php?SESSION_ID=$sessionIDU\">$sml_font$MSG_233</FONT></A>...".



                           
"</TD>".



                           
"</TR>";



                  } 
Kann mir da jemand helfen??

Dank im voraus
Christian
Mit Zitat antworten
  #2  
Alt 06.09.2005, 19:41:15
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Zeitfunktion stimmt nicht, hilfe

Hi,

ja es ist sehr lang - liegt wohl an den ganzen leeren Zeilenumbruechen - unsere Datenbank wird das wohl oder uebel verkraften muessen.

So, nun mal zu deinem Problem - ich habe mir zwar nicht dein Skript ganz angeschaut aber die Vorgehensweise wie du an die Zeit kommst ist nicht so gut. Hole doch einfach direkt bei der Datenbankabfrage alle Datensaetze, die unter einer Minute liegen - ein SELECT erschlaegt dein Problem.

Oder wo happert es???? Viel hast du ja nicht geschrieben ;-))

Bye Damir
Mit Zitat antworten
  #3  
Alt 06.09.2005, 19:43:57
JansonChristian JansonChristian ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Landshut
Beiträge: 98
AW: Zeitfunktion stimmt nicht, hilfe

Das script ist nicht von mir,
es soll eigentlich nur die Artikel anzeigen, die in einer minute ablaufen,
tut es aber nicht, es gibt alle artikel aus.
Mit Zitat antworten
  #4  
Alt 06.09.2005, 20:31:11
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Zeitfunktion stimmt nicht, hilfe

Zitat:
Zitat von JansonChristian
Das script ist nicht von mir
Das heißt ja nicht, dass du es nicht verändern kannst.

Zitat:
Zitat von Janson
es soll eigentlich nur die Artikel anzeigen, die in einer minute ablaufen,
tut es aber nicht, es gibt alle artikel aus.
In deinem Script wird im Prinzip der falsche Weg gegangen, in dem zunächst alle Artikel geholt werden und erst anschließend per PHP versucht wird, einzugrenzen, ob dieser Artikel in einer Minute abläuft oder nicht. Da dieser Weg viel zu umständlich und resourcenlastig ist, macht es auch nicht sonderlich viel Sinn, hier nach einem Fehler zu suchen. Stattdessen solltest du dir die Abfrage so umschreiben, dass bereits aus der Datenbank nur Datensätze geholt werden, die in einer Minute ablaufen. Wenn du beim Erstellen diese Abfrage Probleme hast, wird dir aber sicher gerne dabei geholfen.
Mit Zitat antworten
  #5  
Alt 06.09.2005, 20:58:45
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Zeitfunktion stimmt nicht, hilfe

Hi,

aendere einfach deine Datenbankabfrage

z.B. liefert dir dieser Syntax alle Datensaetze innerhalb einer Minute:

PHP-Code:
SELECT datum FROM tabelle WHERE NOW() >= datum AND DATE_SUB(NOW(), INTERVAL 1 MINUTE) <= datum 
Bye Damir
Mit Zitat antworten
  #6  
Alt 06.09.2005, 20:59:53
JansonChristian JansonChristian ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Landshut
Beiträge: 98
AW: Zeitfunktion stimmt nicht, hilfe

Also sollte ich folgende abfrage ändern :

PHP-Code:
$query "select ends,id,title,photo_uploaded from auctions where closed=\"0\" and suspended=\"0\" order by ends"
Das ende des Artikels wird in der Datenbank 'ends' mit einem Timestamp(14)
gespeichert.

Nächstes problem, wie vielleicht schon bekannt, habe ich extreme probleme
mit datums- und zeitberechnungen, wie kann ich nun also die
abfrage so ändern, das er mir nur die Artikel die noch weniger als eine
minute laufen ausgibt?
Mit Zitat antworten
  #7  
Alt 06.09.2005, 21:10:40
JansonChristian JansonChristian ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Landshut
Beiträge: 98
AW: Zeitfunktion stimmt nicht, hilfe

Ok, habs so geändert:

PHP-Code:
 $query "select ends,id,title,photo_uploaded from auctions where closed=\"0\" and
suspended=\"0\" and NOW() >= ends AND DATE_SUB(NOW(), INTERVAL 1 MINUTE) <= ends order by ends"

hoffe, das es richtig ist??
Mit Zitat antworten
  #8  
Alt 06.09.2005, 21:19:36
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Zeitfunktion stimmt nicht, hilfe

Hi,

ja so ist es richtig aber mein Beispiel funktioniert so nicht mit einem TIMESTAMp(14), sondern nur mit DATETIME. Also entweder du aenderst die Struktur dieser Spalte (mach aber vorher ein Backup) oder der Syntax muss auf TIMESTAMP geaendert werden. Wer die Wahl hat, hat die Qual;-))

Bye DAmir
Mit Zitat antworten
  #9  
Alt 06.09.2005, 22:28:59
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Zeitfunktion stimmt nicht, hilfe

Zitat:
Zitat von Damir
ja so ist es richtig aber mein Beispiel funktioniert so nicht mit einem TIMESTAMp(14), sondern nur mit DATETIME.
Doch, doch. Die Datums- und Zeitfunktionen von MySQL funktionieren auch mit dem Spaltentyp Timestamp.

Geändert von xabbuh (06.09.2005 um 22:29:08 Uhr)
Mit Zitat antworten
  #10  
Alt 07.09.2005, 11:52:22
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Zeitfunktion stimmt nicht, hilfe

Hi xabbuh,

hast recht, funktioniert auch mit einem TIMESTAMP - hatte irgendwie in Erinnerung, das es nicht funktioniert (INTVAL in Zusammenhang mit DATE_SUB und TIMESTAMP). Das naechste mal probiere ich es vorher aus;-))

Bye Damir
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Help!!! Hilfe!!! Presster PHP Grundlagen 1 16.12.2004 21:28:57
Brauche Hilfe Sternchen1973 PHP Grundlagen 4 17.07.2004 21:55:02
Benötige Hilfe für dyn. Abfrage mittles PHP Trialrider PHP für Fortgeschrittene und Experten 70 09.10.2003 11:08:56
HILFE!! Alphabetisch ordnen! php! raph PHP für Fortgeschrittene und Experten 12 20.07.2003 10:23:16
HILFE!! fgets gibt zusätzliche Zeichen aus! karim PHP für Fortgeschrittene und Experten 6 17.06.2003 15:08:53


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:19:40 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt