• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Jahr aus $_GET['SQL'] auslesen und mit text bzw. NOW() vergleichen

Hi,

mit der url wird die Variabel SQL versendet in der steht zum beispiel veraenderung_ab_2011
ich möchte das Jahr ausfiltern in dem ich den Text vorher abschneide
Dann möchte ich das Jahr mit dem Monat/Tag vom Jahresanfang bzw Jahresende verbinden.
sprich 20xx-01-01 und 20xx-12-31
Beim aktuellen Jahr möchte ich allerdings nicht den -12-31 setzen sondern das aktuelle Tagesdatum ... NOW()
Von NOW schneide ich hierzu den Monat/Tag ab und vergleiche dann mit dem über Variabel SQL übermittelten wert.

Code:
   /* Datum auflösung  */
   /* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
      aktuelles Datum NOW 20XX-01-01 = 6 zeichen hinten abschneiden */
$startdate = (substr($_GET['SQL']), 2).'-01-01';

if (substr($_GET['SQL'], -18) == substr(NOW(),0, -6)
{$enddate = NOW() ;}
else
{$enddate = (substr($_GET['SQL']), 2).-12-31 ;}
echo "Zeitraum beginn",$startdate;
echo "Zeitraum ende",$enddate;

ich bekomme folgende Fehlermeldung
syntax error, unexpected ','

P.S: für das Jahr 2011 benötige ich auch noch ein besonderes Startdatum 2011-03-04
 
Zuletzt bearbeitet:
Werbung:
OK.

aber beim SELECT
Code:
SELECT   /* Stellungsbezeichnung, Lueckenfueller (ungenutzt) */
'Stellung' as tablename,
Veroeffentlicht_am,
Stellungbezeichnung as ueberschrift,
url,
'Lueckenfueller' as FSK18,
'Lueckenfueller' as inhalt FROM stellungen
WHERE Veroeffentlicht_am <= NOW()
AND Veroeffentlicht_am >= '2013-01-01'
benötige ich NOW()

kann ich dann
Code:
if (substr($_GET['SQL'], -18) == substr(date),0, -6) {$enddate = NOW() ;}

schreiben.
 
Werbung:
Was hast du an

nicht verstanden?


doch das habe ich soweit verstanden.
Ich meinte mit der letzten Frage lediglich das ich die Variabel $enddate (der ich in dem Fall: aktuelles Jahr, den Wert NOW() ) zuweisen muss.
Die Variabel $enddate und $startdate möchte ich dann im SELECT verwenden

Code:
SELECT   /* Stellungsbezeichnung, Lueckenfueller (ungenutzt) */
'Stellung' as tablename,
Veroeffentlicht_am,
Stellungbezeichnung as ueberschrift,
url,
'Lueckenfueller' as FSK18,
'Lueckenfueller' as inhalt FROM stellungen
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate

so kann ich diese Datei für alle Jahre verwenden und benötige nicht mehr eine eigene datei für jedes Jahr.

Eine weitere Frage die für mich noch im Raum steht ist die Fehlermeldung
syntax error, unexpected ','
aus meinem ersten Posting.
 
Eine weitere Frage die für mich noch im Raum steht ist die Fehlermeldung aus meinem ersten Posting.
Da du jetzt an dem Quellcode schon geändert hast, solltest du den aktuellen Quellcode posten. Außerdem bin ich der Meinung, dass man einen Parse-Error auch alleine finden kann, man muss nur mal die Augen aufmachen.
 
Werbung:
Ich konnte den Code nur Zu Hause einsetzen und nicht in der Pause.
Leider auch erst Heute.

Code:
   /* Datum auflösung  */
/* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
   ist SQL = 2011 dann Golive-Date setzen */

if ((substr($_GET['SQL']), -18) == '2011')
{ $startdate = '2011-03-04' ;}  /* Fall Golive */
else
{ $startdate = (substr($_GET['SQL']), 2)'-01-01';}


/* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
   aktuelles Datum Date in Jahreszahl = Y  werte vergleichen */

if ((substr($_GET['SQL'], -18) == date('Y'))
{$enddate = NOW() ;} /* Aktelles Jahr = Ende bei Heutigem Datum */
else
{$enddate = (substr($_GET['SQL']), 2)'-12-31' ;}
echo "Zeitraum beginn",$startdate;
echo "Zeitraum ende",$enddate;


$ergebnis = mysql_query ("SELECT   /* noch zu klären - provisorisch inhaltliches_UpDate */
'inhaltliches UpDate' as tablename,
Veroeffentlicht_am,
'Lueckenfueller' as ueberschrift,
url,
'Lueckenfueller' as FSK18,
inhaltliches_UpDate as  inhalt FROM update_inhalt
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate

Du hast sicher recht mit dem Phrase Error. Aber da ich
substr(Zeichenkette, Anzahl vorn abschneiden, Anzahl hinten abschneiden)
verwenden muss.
Bin ich verwirrt wenn ich die Meldung bekomme das
ich ein unerwartetes Komma in der Zeile habe.

Code:
if (substr($_GET['SQL'], -18) == date('Y')

das Date habe ich nun so verwendet wie ich es verstanden habe. Mit Y für die 4 stellige Jahreszahl.
 
Zuletzt bearbeitet:
Konsequentes Suchen hilft!
Code:
if ((substr($_GET['SQL'], -18) == date('Y')) {$enddate = NOW() ;} /* Aktelles Jahr = Ende bei Heutigem Datum */ else
Und da haben wir WIEDER ein Now() im PHP-Code
 
Konsequentes Suchen hilft!
Code:
if ((substr($_GET['SQL'], -18) == date('Y')) {[B]$enddate = NOW() [/B];} /* Aktelles Jahr = Ende bei Heutigem Datum */ else
Und da haben wir WIEDER ein Now() im PHP-Code

weil ich es für SQL
Code:
WHERE Veroeffentlicht_am <= [B]$enddate[/B]
AND Veroeffentlicht_am >= $startdate
benötige.
Wenn ich
Code:
if ((substr($_GET['SQL'], -18) == date('Y')) {[B]$enddate = 'NOW()[/B]'
schreibe kann SQL das dann als NOW() korrekte verarbeiten?


und der eigentliche Fehler mit dem Komma?
substr(zeichenkette, -zahl)
Substr benötigt ja eines in der Ternnung zwischen der zeichenkette und dem wert wieviele Zeichen abgeschnitten werden sollen.
 
Zuletzt bearbeitet:
Werbung:
So ich konnte nun weiter machen.
Ich habe nun das mit dem date auch verstanden.
Ich dachte das in SQL mit NOW() das aktuelle Tagesdatum übergeben werden muss. Und so bin ich davon aus gegangen das ein date an der stelle in SQL einen fehler ausgeben würde weil SQL mit der Variabel $enddate "date" sieht und nicht das Datum von heute.
Das funktionierte dann und ich erinnerte mich auch gleich das ich strftime("%Y-%m-%d") für den aktuellen tag nehmen muss.

Die Kontroll-echos (im code) geben auch die richtigen Tage im amerikanischen Format aus
Doch nun werden keine Ergebnisse zurück geben.
Vorher als Text war alles klar das lässt mich vermuten das ich die Variabel $enddate bzw $startdate hinter WEHRE anders einfügen muss. Doch wie? ich bin beim suchen auf diese variante gestossen.
Zuvor hatte ich es mit mysql_real_escape_string($startdate) probiert -> Fehler


PHP:
   /* Datum auflösung  */
   /* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
        ist SQL = 2011 dann Golive-Date setzen */

if ( substr($_GET['SQL'], -4) == '2011' )
      { $startdate = "2011-03-04" ; }  /* Fall Golive */
else
      { $startdate = substr($_GET['SQL'], -4). "-01-01";}; /* Standart */


/* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
   aktuelles Datum Date in Jahreszahl = Y  werte vergleichen */

if ( substr($_GET['SQL'], -4) == date('Y'))
   { $enddate = strftime("%Y-%m-%d") ;} 
     /* Aktelles Jahr = Ende bei Heutigem Datum strftime("...") */

else
   { $enddate = substr($_GET['SQL'], -4). "-12-31" ;};  /* standart */

echo "Zeitraum beginn: ",$startdate;
echo "<br /> Zeitraum ende: ",$enddate;
echo "<br /> SQL: ", substr($_GET['SQL'], -4);

  // Inhalt = veränderungen_all_
  // SQL von startdate bis enddate


  /* SELECT für FSK16 und FSK18 */

$ergebnis = mysql_query ("SELECT   /* noch zu klären - provisorisch inhaltliches_UpDate */
'inhaltliches UpDate' as tablename,
Veroeffentlicht_am,
'Lueckenfueller' as ueberschrift,
url,
'Lueckenfueller' as FSK18,
inhaltliches_UpDate as  inhalt FROM update_inhalt
WHERE Veroeffentlicht_am <= '.$enddate.'
AND Veroeffentlicht_am >= '.$startdate.'.....

ORDER BY Veroeffentlicht_am DESC
");

4. Veroeffentlicht_am hat den Datentyp date es hat mit dem aktuellen Tagesdatum nicht zu tun da es auch zur planung in die Zukunf und Rückterminierung dient. Deshalb kein timestamp

5. nein ich hatte damit immer mehr ärger als Nutzen
 
Zuletzt bearbeitet:
  1. Kannst du bitte den Quellcode ordentlich formatieren, sprich, vernünftig einrücken. Das ist ja grausam zu lesen.
  2. Benutzte bitte für PHP die PHP-Tags und nicht die Code-Tags
  3. Irgendwas fehlt da noch bei mysql_query
  4. Was für ein Datentyp hat Veroeffentlicht_am?
  5. Hast du mysql_error eingebaut?
 
  1. Kannst du bitte den Quellcode ordentlich formatieren, sprich, vernünftig einrücken. Das ist ja grausam zu lesen.
  2. Benutzte bitte für PHP die PHP-Tags und nicht die Code-Tags
  3. Irgendwas fehlt da noch bei mysql_query
  4. Was für ein Datentyp hat Veroeffentlicht_am?
  5. Hast du mysql_error eingebaut?
1-3 in Code / PHP eingefügt. Fragen beantwortet darunter
 
Werbung:
5. nein ich hatte damit immer mehr ärger als Nutzen
Bitte was??? :shock: :shock: Wie kann man damit mehr Ärger als Nutzen haben? :( Kopfschüttel :(
PHP:
$result = mysql_query("Select .........")
   or die ("MySQL-Error: " . mysql_error());
Wo kann man da Ärger mit bekommen? OK, wenn man der Meinung ist, dass eine brauchbare Fehlermeldung Ärger macht ...
 
Bitte was??? :shock: :shock: Wie kann man damit mehr Ärger als Nutzen haben? :( Kopfschüttel :(
PHP:
$result = mysql_query("Select .........")
   or die ("MySQL-Error: " . mysql_error());
Wo kann man da Ärger mit bekommen? OK, wenn man der Meinung ist, dass eine brauchbare Fehlermeldung Ärger macht ...

habe ich eingebaut.
Es kommt keine Fehlermeldung zurück.
 
Werbung:
Es kommt keine Fehlermeldung zurück.
Das kann ich mir nicht vorstellen!

PHP:
'inhaltliches UpDate' as tablename
Was soll da der String?

PHP:
inhaltliches_UpDate as  inhalt
Hier ist plötzlich ein Underscore statt Blank drin, ja was denn nun?

PHP:
WHERE Veroeffentlicht_am <= '.$enddate.'
Ich gaube kaum, dass .2012-01-01. ein vernünftiges Datum ist.
 
PHP:
   /* Datum auflösung  */
/* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
   ist SQL = 2011 dann Golive-Date setzen */

if ( substr($_GET['SQL'], -4) == '2011' )
{ $startdate = "2011-03-04" ;}  /* Fall Golive */
else
{ $startdate = substr($_GET['SQL'], -4). "-01-01";};


/* Text aus SQL = veraenderungen_ab_ = 18 zeichen vorn abschneiden
   aktuelles Datum Date in Jahreszahl = Y  werte vergleichen */

if ( substr($_GET['SQL'], -4) == date('Y'))
{$enddate = strftime("%Y-%m-%d") ;} /* Aktelles Jahr = Ende bei Heutigem Datum strftime("...") */
else
{$enddate = substr($_GET['SQL'], -4). "-12-31" ;};

echo "Zeitraum beginn: ",$startdate;
echo "<br /> Zeitraum ende: ",$enddate;
echo "<br /> SQL: ", substr($_GET['SQL'], -4);

   // Inhalt = veränderungen_all_

   // SQL von startdate bis enddate


      /* SELECT für FSK16 und FSK18 */

$ergebnis = mysql_query ("SELECT   /* noch zu klären - provisorisch inhaltliches_UpDate */
'inhaltliches UpDate' as tablename,
Veroeffentlicht_am,
'Lueckenfueller' as ueberschrift,
url,
'Lueckenfueller' as FSK18,
inhaltliches_UpDate as  inhalt FROM update_inhalt
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT /* Storyname, Beschreibung  */
'Fantasie' as tablename,
Veroeffentlicht_am,
Storyname as ueberschrift,
url,
FSK18,
Beschreibung as inhalt FROM story
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Stellungsbezeichnung, Lueckenfueller (ungenutzt) */
'Stellung' as tablename,
Veroeffentlicht_am,
Stellungbezeichnung as ueberschrift,
url,
'Lueckenfueller' as FSK18,
'Lueckenfueller' as inhalt FROM stellungen
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Idee, Lueckenfueller (ungenutzt) */
'Erotikidee' as tablename,
Veroeffentlicht_am,
Idee as ueberschrift,
url,
'Lueckenfueller' as FSK18,
'Lueckenfueller' as inhalt FROM erotikideen
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Titel, Vorschau mit Bild von Amazon */
'Bücher' as tablename,
Veroeffentlicht_am,
Titel as ueberschrift,
url,
'Lueckenfueller' as FSK18,
Vorschaubild as inhalt FROM buecher
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Titel, Vorschau mit Bild von Amazon */
'eBooks' as tablename,
Veroeffentlicht_am,
Titel as ueberschrift,
url,
'Lueckenfueller' as FSK18,
Vorschaubild as inhalt FROM ebooks
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Titel, Vorschau mit Bild von Amazon */
'Audiobücher' as tablename,
Veroeffentlicht_am,
CD_Titel as ueberschrift,
url,
'Lueckenfueller' as FSK18,
Vorschaubild as inhalt FROM hoerspiele
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Titel, Vorschau mit Bild von Amazon */
'Filme' as tablename,
Veroeffentlicht_am,
Titel as ueberschrift,
url,
'Lueckenfueller' as FSK18,
Vorschaubild as inhalt FROM filme
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* Zweittitel, Zusammenfassung */
'Projekt' as tablename,
Veroeffentlicht_am,
Zweittitel as ueberschrift,
url,
'Lueckenfueller' as FSK18,
Zusammenfassung as inhalt FROM projekt
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate
                         UNION
SELECT   /* noch zu klären - provisorisch inhaltliches_UpDate */
'technisches UpDate' as tablename,
Veroeffentlicht_am,
'Lueckenfueller' as ueberschrift,
url,
'Lueckenfueller' as FSK18,
technisches_UpDate as inhalt FROM update_technik
WHERE Veroeffentlicht_am <= $enddate
AND Veroeffentlicht_am >= $startdate

ORDER BY Veroeffentlicht_am DESC
") or die ("MySQL-Error: " . mysql_error());


Ich habe eine UNION mit mehreren Tabellen
'inhaltliches UpDate' damit dies als Benennung ausgeben wird.
inhaltliches_UpDate weil dort das drin steht was ich in der Union-Spalte Inhalt ausgeben möchte

einfach nur $enddate hat auch kein Ergebnis gebracht
 
Das kann ich mir nicht vorstellen!

PHP:
WHERE Veroeffentlicht_am <= '.$enddate.'
Ich gaube kaum, dass .2012-01-01. ein vernünftiges Datum ist.

Ein $enddate hate keine Wirkung.
Und bei '$enddate' bin ich bislang davon ausgegangen das SQL dann nach der Zeichenkette "$enddate" in der Spalte sucht und nicht nach der Zeichenkette bzw dem Datum 2012-01-01.
Doch eben habe ich einen neuen Hinweis gegoogelt in der es so stand.
Alle bisherigen Googel-Ergebnisse haben z.B. '.$enddate.' ausgesagt.
 
Werbung:
Wenn man mit einer einfachen Stringverkettung schon nicht klar kommt, dann sollte man bitte erst mal die Grundlagen lernen!!!
PHP:
<?php

   $var = "1234";
   
   echo "Var = ' . $var . ' <br />";
   
   echo "Var = '" . $var . "' <br />";
?>
Ausgabe:
Var = ' . 1234 . '
Var = '1234'
 
Zurück
Oben