WinFuture-Forum.de: Geburtstagsliste Php/mysql - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Geburtstagsliste Php/mysql


#1 Mitglied ist offline   TaOps_Heinz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 953
  • Beigetreten: 16. November 03
  • Reputation: 0
  • Geschlecht:Männlich

  geschrieben 11. Januar 2009 - 21:21

Hi @ all,

nach langer Abwesenheit bräuchte ich mal wieder Hilfe.

Im Endeffekt will ich auf einer Joomla 1.5-Seite eine Anzeige aktueller Geburtstage anzeigen lassen. Das ganze wird im Hintergrund mit einer mysql-DB realisiert. Direkt für Joomla verfügbare Module etc. sind unbrauchbar, da nahezu alle auf dem Community Builder aufbauen und ich den nicht installieren will.

Eine passende SQL-Query habe ich hier gefunden: KLICK

Jedoch verzweifle ich irgendwie, wenn ich das ganze nun ausgeben will, denn immer bringt er mir einen
"Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /srv/www/htdocs/web244/html/test.php on line 37"

Habe nun alles möglich zig Mal verändert, überprüft, aber irgendwie stehe ich auf dem Schlauch und bekomme den Fehler nicht weg. Lasse ich nur die Select-Anweiseung im phpMyadmin durchlaufen, funktioniert sie.

So hier mal der komplette Code, den ich da nun stehen habe:

<?php

$mysqlhost="localhost";

$mysqluser="xxx";

$mysqlpwd="xxx";

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die

("Verbindungsversuch fehlgeschlagen");

echo "test";
$mysqldb="xxx";

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

$sql="
SELECT
`id`,
`name`,
`vorname`,
`geburtstag`,
YEAR( CURRENT_DATE( ) ) - YEAR( geburtstag )
age,
DATEDIFF(`geburtstag` + INTERVAL
(YEAR(CURRENT_DATE) - YEAR(`geburtstag`) +
IF(DATE_FORMAT(CURRENT_DATE, "%m%d") >
DATE_FORMAT(`geburtstag`,'%m%d'), 1, 0))
YEAR, CURRENT_DATE) AS `days_to_birthday`
FROM
`geburtstage`
HAVING
`days_to_birthday` <= 6 OR
`days_to_birthday` >= 360
ORDER BY
days_to_birthday";


$result_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

while($row = mysql_fetch_array($result))


mysql_close();

}

?>

Die Zeile mit dem Fehler ist die letzte Zeile der Select-Anweisung.

Ich wäre euch echt dankbar, wenn ihr mir da mal unterstützend unter die Arme greifen könntet. Das ganze soll im Endeffekt fast genau so aussehen, wie im Beispiel unter dem Link hier oben. Leider hat der Autor sein Script nicht mehr verfügbar, hatte mal kurz angefragt.

Grüße

Dieser Beitrag wurde von TaOps_Heinz bearbeitet: 16. Januar 2009 - 17:42

0

Anzeige



#2 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 11. Januar 2009 - 21:32

Könnte das nicht escapete "%m%d" sein.
0

#3 Mitglied ist offline   TaOps_Heinz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 953
  • Beigetreten: 16. November 03
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. Januar 2009 - 16:09

Beitrag anzeigenZitat (MNG: 11.01.2009, 22:32)

Könnte das nicht escapete "%m%d" sein.

Naja wenn ich da "" an statt '' mache, dann zeigt er mir einen Fehler in Zeile 29 an: "
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /srv/www/htdocs/web244/html/test.php on line 29"

Dieser Beitrag wurde von TaOps_Heinz bearbeitet: 12. Januar 2009 - 16:13

0

#4 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 12. Januar 2009 - 19:04

Ich meinte eigentlich ' anstatt ". So wie Du es beim zweiten Auftreten der Funktion DATE_FORMAT gemacht hast. Bis auf die schließende geschweifte Klammer ganz am Ende dürften da eigentlich keine weiteren Syntaxfehler drin sein.
0

#5 Mitglied ist offline   TaOps_Heinz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 953
  • Beigetreten: 16. November 03
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Januar 2009 - 18:29

So die Ausgabe funzt nun erstmal. Danke!

Wenn ich den Code noch etwas angepasst habe und die Ausgabe vernünftig aussieht, poste ich das mal.
0

#6 Mitglied ist offline   TaOps_Heinz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 953
  • Beigetreten: 16. November 03
  • Reputation: 0
  • Geschlecht:Männlich

  geschrieben 16. Januar 2009 - 18:13

Da ich nun mit der Anpassung der Ausgabe beschäftigt bin, stehe ich nun vor dem nächsten Problem, von daher habe ich auch mal den Thread-Titel angepasst. Oder besser gesagt sind es zwei.

  • Das ganze soll in einer Tabelle ausgegeben werden, was so auch bisher klappt. Jedoch möchte ich die 2. Spalte mit variierendem Inhalt ausgeben. Soll folgendes heißen: Wenn "days_to_birthday" gleich 0 ist, also derjenige heute Geburtstag hat, dann soll in der 2. Spalte ein Smiley zu sehen sein. Und wenn der Geburtstag zb. morgen ist, also "days_to_birthday" gleich 1 wäre, dann soll da nur "morgen" stehen.

    Um das zu realisieren habe ich eine If-Anweisung gebaut, die jedoch ignoriert wird. Aktuell wird also jeder Name mit dem Smiley dahinter ausgegeben, egal ob der heute, morgen oder gestern Geburtstag hat(te).

    Frage: Wo muss ich die If-Anweisung hin schreiben, damit die Ausgabe aufgesplittet wird und ich eine variierende 2. Spalte erhalte?


  • Seit dem ich an der Ausgabe herum gebastelt habe, bekomme ich nun den Fehler "Warning: shell_exec() has been disabled for security reasons in...on line 44", also da wo die If-Anweisung beginnt.
    Da dies am Anfang nicht da war, muss das ja auch wieder irgendwie weg gehen. Was müsste ich dazu umschreiben, um diese "shell_exec()" irgendwie zu vermeiden? Beim suchen bin ich leider nicht ganz fündig geworden. Oder ist die einzige Vermeidung wirklich eine Umstellung am Server? Kann man das nicht vielleicht durch "anderen" Quellcode irgendwie vermeiden? Wenn ich mich recht entsinne, dann kam die Meldung das erste Mal, als ich die If-Anweisung eingebaut habe, um bei der Ausgabe unterschiedliche Textfarben zu realisieren, was ich aber mittlerweile wieder fallen lassen habe. Hängt das nur mit der If-Anweisung zusammen?


Danke für eure Bemühungen.

Hier mein aktueller Code:
<?php


$mysqlhost="localhost"; // MySQL-Host angeben

$mysqluser="xxx"; // MySQL-User angeben

$mysqlpwd="xxx"; // Passwort angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die

("Verbindungsversuch fehlgeschlagen");

$mysqldb="xxx"; // Gewuenschte Datenbank angeben

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

$abfrage="
SELECT
`id`,
`name`,
`vorname`,
`geburtstag`,
YEAR( CURRENT_DATE( ) ) - YEAR( geburtstag )
age,
DATEDIFF(`geburtstag` + INTERVAL
(YEAR(CURRENT_DATE) - YEAR(`geburtstag`) +
IF(DATE_FORMAT(CURRENT_DATE, '%m%d') >
DATE_FORMAT(`geburtstag`,'%m%d'), 1, 0))
YEAR, CURRENT_DATE) AS `days_to_birthday`
FROM
`geburtstage`
HAVING
`days_to_birthday` <= 6 OR
`days_to_birthday` >= 360
ORDER BY
days_to_birthday";

$ausgabe=mysql_query("$abfrage") or die (mysql_error());
while($row=mysql_fetch_row($ausgabe)){

echo "<table border=\"1\">";

if (`days_to_birthday` == 0)
{
echo "<tr>";
echo "<td width=\"250\">".$row[1]." ".$row[2]."</td>";
echo "<td><img src=\"../images/stories/smiley_geburtstag.gif\" alt=\"Smiley Geburtstag\"></td>";
echo "</tr>";
}

elseif (`days_to_birthday` == 1)
{
echo "<tr>";
echo "<td width=\"250\">".$row[1]." ".$row[2]."</td>";
echo "<td>morgen</td>";
echo "</tr>";
}

echo "</table>";

}
mysql_close();


?>

0

#7 Mitglied ist offline   h-a-n-n-e-s 

  • Gruppe: aktive Mitglieder
  • Beiträge: 824
  • Beigetreten: 11. August 06
  • Reputation: 1

geschrieben 16. Januar 2009 - 19:40

Könnte es vielleicht sein das "days_to_birthday" nie 0 ist? Das ist für mich eigentlich der einzige Grund wiso das so ein könnte.

Ich habe mich noch nicht so weit in SQL eingelernt, aber kann man den 'days_to_birthday' einfach so in der while-Schleife ausgeben?
Gruß Hannes
Eingefügtes Bild
0

#8 Mitglied ist offline   TaOps_Heinz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 953
  • Beigetreten: 16. November 03
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Januar 2009 - 09:15

Beitrag anzeigenZitat (h-a-n-n-e-s: 16.01.2009, 20:40)

Könnte es vielleicht sein das "days_to_birthday" nie 0 ist? Das ist für mich eigentlich der einzige Grund wiso das so ein könnte.

Ich habe mich noch nicht so weit in SQL eingelernt, aber kann man den 'days_to_birthday' einfach so in der while-Schleife ausgeben?
Gruß Hannes

Also denkst du, das die If-Anweisung da eigentlich richtig platziert ist, lediglich die Bedingung muss irgendwie angepasst werden?

Den SQL-Code habe ich ja auch nur von der im ersten Beitrag verlinkten Seite, von daher stehe ich ja auch etwas auf dem Schlauch. Ob man das so einfach dort ausgeben kann, weiß ich ja auch nicht, aber gemacht habe ich es einfach mal :) Vielleicht gibt es hier jemanden der de genauer bescheid weiß.

Er gibt mir ja schon die richtigen Namen aus, das haut ja hin, nur alle mit dem Smiley dahinter in der 2. Spalte und alle mit der Fehlermeldung drüber. Hat wegen dieser Meldung noch jemand einen Ratschlag?

Danke.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0