• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

PHP / MySQL -- Frage

Patistar

Braeburn
Registriert
17.01.08
Beiträge
46
Hallo,

ich habe gleich 2 Fragen, zu 2 verschiedenen Themen.

1. Wie geht das, dass wie bei einem PN System alle Datenbank einträge angezeigt werden und per
Klick geöffnet werden könnten. (vll. Scriptbeispiel)

2. Ich möchte per Kontaktformular ein Datum übertragen und später mit dem heutigen vergleichen.
Dieses Datum soll in einer MySQL Datenbank gespeichert werden. Aber wie speicher ich das am
besten? Welchen Spaltentyp soll ich nehmen? Und wie vergleiche ich das dann mit dem heutigen
Datum?



Vielen Dank schon jetzt einmal
Lg. Patistar
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Vielleicht wäre es für Dich sinnvoll, erst einmal Einstiegsliteratur bzw. Sample-Scripts zu PHP/MySQL zu lesen.

Die SQL-Abfrage "SELECT * FROM tabelle" holt Dir alle Datensätze raus. "SELECT name, thema, datum, id FROM tabelle" würde Dir die Felder name, thema datum und id heraussuchen.
Wenn Du z.B. mit dem Feld id einen HTML-Link erzeugst, könntest Du über "SELECT * FROM tabelle WHERE id=$hier_die_Id_Variable_einsetzen" die einzelnen PNs anzeigen.

Du muss bei sowas aber darauf achten, dass die vom User übergebenen Sachen richtig sind und Sicherheitsprobleme wie SQL-Injections durch Gegenmaßnahmen verhindern.
 

Patistar

Braeburn
Registriert
17.01.08
Beiträge
46
Das war auch nicht meine Frage, ich will wissen wie ich auf eine MySQL Tabelle verlink...

Die Befehle kann ich natürlich

aber ich kann ja nicht:

<href="SELECT * FROM tabellenname where soundso = soundso">$row->name</a>

daswar eher meine Frage
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Du musst halt auf ein Script bzw. eine Scriptfunktion verlinken, die die Betreffenden Daten anzeigt.

Sowas in der Richtung "<a href=showdetails.php?action=show&id=3234234>" und dann im Skript anhand der id (oder was auch immer) den Datensatz anzeigen.
 

ZIG-ZAG

Finkenwerder Herbstprinz
Registriert
10.10.07
Beiträge
469
du musst erst die Verbindung zur DB aufbauen, dann eine Abfrage ausführen und dann das Ergebnis ausgeben.

Der Code dafür sieht dann in etwa so aus:

<?php
$host="localhost";
$benutzer="xxxxxxxxx";
$kenn="kenwort";
$db = mysql_connect($host, $benutzer, $kenn);
$query = "use Name der DB";


mysql_select_db("Name der DB",$db) or exit
("Datenbank nicht geöffnet");
....
Ausgabe erfolgt dann über ECHO
?>
 

Patistar

Braeburn
Registriert
17.01.08
Beiträge
46
Ich weiß wie ich verbindung aufbaue, beenden und auch wie ich daten ausgebe und auch update oder lösche oder hinzufüge...

Bananenbieger: Also über GET ?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Bitte sehe uns nach, dass wir davon ausgegangen sind, dass Du das nicht weißt ;)

Na klar über GET. Das ist die Standardmethode, um über Links bestimmte Methoden aufzufufen. Wenn Du auf hier auf "Antworten" klickst, kannst Du ja mal oben in die URL-Leiste schauen :)
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
Zu deiner zweiten Frage: Es gibt als Spaltentyp "TIME". Ich hab mir aber angewöhnt, die aktuelle Zeit als Unix-Timestamp in einer INT(14) zu speichern. Und diesen Timestamp mit der date()-Funktion in den Skripten weiterzuverarbeiten.
 

Patistar

Braeburn
Registriert
17.01.08
Beiträge
46
Kann ich auch als INT speichern und dann mit der jetztigen Zeit vergleichen?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Warum machst Du es nicht einfach so, wie TaTonka vorschlägt? Also entweder über TIME oder über einen INT mit Unix-Timestamp.

Und natürlich kannst Du Zeiten miteinander vergleichen.

http://de.php.net/date
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Und natürlich kannst Du Zeiten miteinander vergleichen.
http://de.php.net/date

Ich hab allerdings gemerkt, dass MySQL vor allem bei solchen Zeit-Operationen, sehr viel schneller als PHP oder Perl ist. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Ich nehme immer DATETIME typen für Zeitangaben, und TIMESTAMP für Zeitpunkte. Meint: Wenn ich ein beliebiges Datum speichern will und damit Rechnen, nehme ich DATETIME und wenn ich den jetzigen Zeitpunkt speichern will,(z.B. bei einem Forum, wenn ein Post gemacht wurde), dann nehme ich TIMESTAMP und setze als Default wert CURRENT_TIMESTAMP oder so, dann muss man gar nicht selbst eintragen, wann der Post erzeugt wurde und MySQL macht es automatisch.

Code:
`text` TEXT,
`last_change` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`creation` timestamp NOT NULL default CURRENT_TIMESTAMP
würde zum Beispiel beim Ersten erstellen (INSERT INTO `bla` (`text`) VALUES ('alt')) `last_change` und `creation` gleichsetzen und dann wenn ich `text` ändere (UPDATE `bla` SET `text`='neu'), nur `last_change` auf den aktuellen Wert setzen.

Aber wie gesagt, zur Berechnung ist DATETIME besser, oben rechne ich ja nicht mit den Werten. (Man kann TIMESTAMP mit FROM UNIXTIME) nach DATETIME umwandeln