Spezieller Bilder-Upload und Spielabsagen mit Datenbank verknüpfen

Habs jetzt auseinandergenommen. Hab Angst vor einer Normalformverletzung ;)

Den Abschnitt mit TIMESTAMP hab ich noch nich ganz überrissen, meinst du damit den Spaltentyp? Hab ich jetzt DATE, bzw. würd ich eventuell sogar DATETIME nehmen um die Uhrzeit noch unterzubringen. Wobei hier das Problem ist, dass mir das Umwandeln des Datumsformats ins deutsche Format noch nicht gelingen mag...schaff ich aber noch :)
 
Timestamp sagt man (oder sage ich) wenn man die Zeit "irgendwie" (meist in Sekunden seit 1.1.1970 - Unix-Zeit - glaube ich) abspeichert.

DateTime ist aber ein guter Typ.
Diesen Wert speicherst du einfach in SQL, egal wie (my)SQL in Formatiert.
Beim rausholen solltest du das Format erst umwandeln. Der Weg zum Ziel sind "Datums-Zeit-Funktionen von PHP" ;)

(steigern wir mal den Schwierigkeitsgrad etwas und geben nur das Thema an zur Funktion und nicht mehr die Funktion selbst, nur mal ein Versuch. Ich sag dir gern direkt welche, falls du sie nicht findest)
 
Hach, ich bin ganz stolz auf mich.

PHP:
$sql = " SELECT DATE_FORMAT(datum,'%d.%m.%Y %H:%i') AS datum1,Id,text FROM termine";
bringt die Lösung. Hat aber ein bisschen gedauert, bis ich das gefunden hab. Zuerst hatte ich einen Weg eingeschlagen das englische Format in Timestamp umzuwandeln, um das dann wieder in deutsches Format umzuwandeln - völliger Quatsch natürlich.

Nun folgen weitere Arbeitsschritte. Zunächst mal hab ich meinen Plan geändert, die E-Mail-Adressen der Gegner irgendwie miteinzugliedern. Stattdessen soll das ganze dann nur an eine fixe E-Mail-Adresse geschickt werden (Ligenleitung) und zusätzlich in eine DB-Tabelle gespeichert werden, damit ich das dann an anderer Stelle wieder abrufen kann (in Form von einer kleinen Tabelle auf der Startseite "Abgesagte Spiele").

Dann frag ich mich, wie ich diese neue Tabelle, wo nun alle Spiele reinsollen, am besten fülle. Direkt über phpMyAdmin scheint es mir fast etwas umständlich zu sein, extra ein Eingabeformular zu basteln ist aber auch wieder viel Arbeit. Ansonsten besteht noch die Möglichkeit, das ganze über ein Script zu machen, ähnlich dem Anlegen der Benutzer in diesem Login-Tutorial.
Was sagt die Erfahrung? ;)
 
Hach, ich bin ganz stolz auf mich.

PHP:
$sql = " SELECT DATE_FORMAT(datum,'%d.%m.%Y %H:%i') AS datum1,Id,text FROM termine";
bringt die Lösung. Hat aber ein bisschen gedauert, bis ich das gefunden hab. Zuerst hatte ich einen Weg eingeschlagen das englische Format in Timestamp umzuwandeln, um das dann wieder in deutsches Format umzuwandeln - völliger Quatsch natürlich.

Da kannst echt stolz sein! Du hast etwas gefunden, an das ich kurzfristig nicht gedacht habe, aber viel einfacher ist. Den Lehrer übertreffen, gibt selbstverständlich 1+ ;)

Stattdessen soll das ganze dann nur an eine fixe E-Mail-Adresse geschickt werden (Ligenleitung) und zusätzlich in eine DB-Tabelle gespeichert werden, damit ich das dann an anderer Stelle wieder abrufen kann (in Form von einer kleinen Tabelle auf der Startseite "Abgesagte Spiele").

Das mit dem speichern in eine DB ist OK aber an eine fixe E-Mail senden? Ne du.
Schau mal:
Ich stelle mir das so vor, dass hinter jeder angezeigten Begegnung ein Kontrollkästchen zu sehen ist, wo der User ein Häckchen machen kann. Unter den Begegnungen dann ein Button "Absagen". Hat er z.B. zwei Begegnungen mit dem Häkchen markiert und geht dann auf Absagen, soll eine automatische E-Mail an die dementsprechenden Gegner und die Teamleitung (Teamleitung ist immer die selbe Adresse) verschickt werden.

Mit dem Klick auf "Absagen" kann PHP eine Mail an den Gegner senden:
http://de.php.net/manual/de/function.mail.php
und das ganze in deiner DB aktualisieren (http://sql.1keydata.com/de/sql-update.php oder http://dev.mysql.com/doc/refman/5.1/de/update.html) bzw. eintragen (per INSERT).

Sind damit nicht alle Probleme deines ersten Anliegens gelöst?

(Ich frag nur weil ich grad nen Pegel hab, der klares Denken nicht mehr zulässt :p )
Jut Nacht.
 
Naja, nur wie verknüpfe ich die Gegner mit den richtigen E-Mail-Adressen? Ich hatte da schonmal was vorbereitet, was (glaube ich) auch funktioniert nur eben mit einer fixen Adresse:

PHP:
<?
$Empfaenger = "email@email.de";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['team']) || empty($_REQUEST['datum1']))
   {
      echo"Bitte gehe <a href=\"javascript:history.back();\">zurück</a> und fülle alle Felder aus!";
   }
   else
   {
      $Mailnachricht = "Folgende Spielabsage wurde soeben über die Homepage verschickt: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send")
         {
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Mailnachricht .= "\nDatum/Zeit: ";
      $Mailnachricht .= date("d.m.Y H:i:s");
      $Mailbetreff = "Spielabsage";
      $Mailbetreff .= $_REQUEST['Betreff'];
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['EMail']);
      echo"<center><font size=4>Vielen Dank für deine Absage!<br><br><a href=\"spielplan.php\"><font color=blue>zurück</font></a>";
   }
}
else
{
   echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"absagen.php\">Seite</a>.";
}

?>

Von Excel her würde mir dafür ein ewig langes wenn(x;y;z) einfallen, mit vielen verschachtelten wenns und danns ;). Kann aber hier irgendwie nicht die Lösung sein oder?

Beziehungsweise für das Speichern in der DB:

PHP:
<?php
$verbindung = @mysql_connect("localhost","****","****");
$db_selected = mysql_select_db('*****', $verbindung);
   if (!$db_selected) {
    die ('Kann DB nicht benutzen : ' . mysql_error());
}
$begegnung = $_POST[team];
$datum = $_POST[datum1];
$ersatz = $_POST[ersatz];

    $sql = "INSERT INTO absagen
                        (Mannschaft,Datum,Ersatz)
                         VALUES
                         ('$begegnung',
                         '$datum',
                         '$ersatz')";
    if (mysql_query($sql)) {
        echo "";
    } else {
        echo "" . $sql;

    }
mysql_close();

}
else{
echo "Falsches Passwort";
}

?>
 
Zuletzt bearbeitet:
SQL ist dein Freund seit kurzem und in aller Zukunft.

PHP:
$Empfaenger = "email@email.de";

Die E-Mail-Adresse holst du dir aus einer geeigneten Tabelle:
Teams
TeamID, Name, ..., E-Mail

Deine Tabelle mit allen Teams musst du um die Spalte der E-Mail-Adressen erweitern oder falls schon vorhanden: Nutzen.

Es kommt von deinem Formular das Feld "team", was du sicherlich so in eine 'SQL-Abfrage' umsetzen kannst, dass die E-Mail-Adresse ausgelesen wird.

Statt $_REQUEST verwende bitte $_POST oder $_GET, je nachdem wie dein Formular übertragen wird. Weil bei der Benutzung von $_REQUEST eine Sicherheitslücke entsteht.
 
Frage
Ich hab nun ne Abfrage geschrieben, die auch die richtige E-Mail-Adresse ausgibt (unten). Mit dem Ergebnis kann ich aber nur innerhalb der while-Schleife umgehen. Dort kann ich's als Variable speichern usw. Aber wie bekomm ich die Variable aus der while-Schleife raus, so dass ich die Variable auch an anderer Stelle nutzen kann? Ich denke da kommt jetzt ein Array ins Spiel?

PHP:
$sql = "SELECT Mail from benutzerdaten ";
$sql .= " WHERE Id = ";
$sql .= " '".$_SESSION['user_id']."' ";
$empfaenger1 = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($empfaenger1))
    {
$teamadresse=$row[0];
    }
die(mysql_error());

edit: Schon wieder ein Denkfehler. Ich bekomme bei o.g. Abfrage die E-Mail-Adresse des absagenden Teams, statt der des Gegners. Vom Prinzip her muss es heißen:
"SELECT Mail from benutzerdaten WHERE Gegnername (hab ich vorher als $row->text abgefragt) dem Teamnamen (als Spalte "Teamname" in der Tabelle benutzerdaten) entspricht"
 
Zuletzt bearbeitet:
"SELECT Mail from benutzerdaten WHERE Gegnername (hab ich vorher als $row->text abgefragt) dem Teamnamen (als Spalte "Teamname" in der Tabelle benutzerdaten) entspricht"

Meine erstes Problem besteht vor allem darin, $row->Text mit dem Formular zu übergeben. Nur so kann ich die Abfrage richtig gestalten (Stichwort subquery?).

Irgendwie in die Richtung:

PHP:
$sql = "SELECT Mail from benutzerdaten WHERE $row->Text = (SELECT text,Id FROM termine WHERE Id = $_SESSION[user_id]) ";
 
Zuletzt bearbeitet:
Willst du nur die Mail haben?
Oder was hast du mit dem $row->Text vor?

SQL:
"SELECT `mail`
FROM `Team_Tabelle`
WHERE `team` = '" . $_POST["team"] . "'"
 
Zurück