Bestimmte zeile aus daten bank auslesen.

Diskutiere Bestimmte zeile aus daten bank auslesen. im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Folgendes: Ich habe eine Datenbank. In dieser sind meherere Zeilen. ungefähr so: Name | Beitrag | datum | ------------------------ Peter |...
  • Bestimmte zeile aus daten bank auslesen. Beitrag #1
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Folgendes: Ich habe eine Datenbank. In dieser sind meherere Zeilen. ungefähr so:

Name | Beitrag | datum |
------------------------
Peter | bla |1.1.08 |
------------------------
ralf | blubb |2.7.08 |


und wie müsste die Zeile aussehen, um nur den letzten beitrag auszulesen ?

Also
PHP:
$sql = "SELECT * FROM tabelle"
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #2
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
die Datensätze werden Dir im phpmyadmin usw. zwar so angezeigt, in einer Abfrage ist die Reihenfolge aber mehr oder weniger zufällig - auf jeden Fall nicht verlässlich.
Von daher ist "der letzte" schwer zu definieren.

Kluge Köpfe haben sich daher schon früh einfallen lassen, eine zusätzliche ID-Spalte zu verwenden, in der jeder Datensatz eine fortlaufende Nummer bekommt.
Die Nummerierung übernimmt mysql über die Feld-Eigenschaft autoimcrement selbst.
Den "letzten" Datensatz, sprich den mit der höchsten ID gibst Du dann so aus:
Code:
SELECT * FROM tabelle ORDER BY id DESC LIMIT 1
Soll heißen: alle Einträge absteigend nach dem Feld "id" sortieren und die Ergebnisresource auf 1 Zeile begrenzen.
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #3
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
SELECT Beitrag FROM tabelle;

Listet alle Beiträge auf

SELECT Beitrag FROM tabelle WHERE Datum="1.1.2008";
Listet alle Beiträge vom 1.1.2008 auf

SELECT * FROM tabelle WHERE Datum="1.1.2008";

Listet Name, Beitrag und Datum vom 1.1.2008 auf

edit: Futtlui war schneller, sogar mit ID ;)
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #4
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
SELECT * FROM tabelle WHERE Datum="1.1.2008";[/COLOR]
Listet Name, Beitrag und Datum vom 1.1.2008 auf
Das würde ja auch nicht reichen, weil das oben nur ein Beispiel ist und wohl noch weitere Daten drin sind...

@Pflaume
Du könntest auch noch Datum sortieren und auf 1 Datensatz limitieren, dazu müsste Dein Datumsfeld aber in nem ordentlichen, sortierfähigen Format vorliegen, z.B. JJJJ-MM-TT
Das hätte aber dennoch den Schönheitsfehler, dass bei mehreren Einträgen pro Datum kein Unterschied gemacht wird.

Die Variante mit ID hingegen funktioniert 100% problemlos (ist deshalb auch Standard in so gut wie jedem Tut)
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #5
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Kluge Köpfe haben sich daher schon früh einfallen lassen, eine zusätzliche ID-Spalte zu verwenden, in der jeder Datensatz eine fortlaufende Nummer bekommt.
Die Nummerierung übernimmt mysql über die Feld-Eigenschaft autoimcrement selbst.

danke für die schnelle antwort

Das heißt ich muss beim eintragen nicht auch eine extra variable zb.: $id eintragen?
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #6
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
nein, musst Du nicht.
Das Feld muss nur ausreichend groß sein (Länge), ist am besten UNSIGNED, gilt als Primarschlüssel und hat die extra-Eigenschaft auto_increment

letzteres heisst soviel wie automatisch inkrementieren (= erhöhen)

Wie wär's mit ner Einführung in MySQL?
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #7
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Wie wär's mit ner Einführung in MySQL?

ja ich bin ja schon dabei ^^ Aber is gar nicht so leicht!
Außerdem gibt es nicht wirklich gute tutorials für MySQL
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #8
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
Außerdem gibt es nicht wirklich gute tutorials für MySQL
Natürlich!
Gut dass Du mir das sagst, dann kann ich ja mein ganze Wissen zum Thema in die Tonne kloppen. Denn das stammt zum größten Teil aus solchen "nicht wirklich guten" Tutorials.
:iro:

Mal im ernst: nur weil Du keine gefunden hast oder es auf den ersten Blick nicht so einfach erscheint wie HTML (ist eben ein mächtiges Thema) kannst Du sowas nicht einfach behaupten.

:rolleyes: :rolleyes: :rolleyes: :rolleyes:

Probier's mal damit:
http://tut.php-quake.net/mysql.html
http://www.sql-und-xml.de/sql-tutorial/index.html

oder für absolute Einsteiger: http://www.schattenbaum.net/php/mstart.php
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #9
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Ok danke für die links werd sie mir mal anschauen.

Jaa, es geht wie ich es wollte!^^

Was halte ihr von einem Spam schutz, der nicht die IP,s vergleicht sondern den Inhalt des Beitrags?

Ich hab das jetzt so gemacht, weil ich das mit der seltsammen IP-sperre net hinbekommen hab. Also es wird verglichen ob der inhalt vom letzten Post der gleiche ist wie der Post, der jetzt gepostet werden soll. Wenn das der fall ist bricht er ab und wenn nicht läuft er ganz normal durch.

Meint ihr das ist sicher ?
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #10
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
nein.
Wenn jemand anderes (vielleicht sogar ein 2. Spammer) zwischen des exakt identischen Einträgen von Spammer1 postet nützt Dir das garnichts.
Und auch sonst find ich das nicht besonders effektiv.

Aber die Begründung, warum Du diese Strategie wählst ist ja (wenn ich ehrlich sein darf) auch nicht so der Ober-Hammer...
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #11
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Ich vermute mal, einfach so als PHP-Noob, dass es genauso effektiv ist , wie wenn ich nen cookie setz oder wirklich diese IP-Sperre hinbekomm. Man kann alles umgehen und es gibt glaube ich auch keine 100% sicherheit ?!
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #12
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
natürlich nicht, aber - und das wirst Du auch als "PHP-Noob" einsehen - die IP-Sperre bedarf einer bewussten Manipulation durch den User, die nur durch Trennung und Wiederaufbau seiner Verbindung möglich ist (= aufwändig) während Dein Ansatz ein viel größeres Potenzial, überhaupt nichts zu bewirken schon mitbringt.
Mach Dir ruhig die Arbeit, ich garantiere Dir, dass es weniger bringen wird.
Und das ist keine Vermutung und ich bin (glaub ich) auch kein N00b.

Warum sonst sind IP-Vergleiche wesentlich stärker verbreitet als ein Inhaltsvergleich mit dem letzten DB-Eintrag?
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #13
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Ok ich glaube dir mal. Ich denke du hast da mehr Erfahrung als ich. Ich hab das jetzt nochmal getstet. dabei hab ich zwei dinge festgestellt.

1.) Meine IP ist nach ca. 10 minuten eine andere!
2.) Es wird keine zeit in die Datenbank eingetragen!

Ich hab das aber meines Erachtens richtig geschrieben.
Die Datenbank spalte ist so eingestellt.
name: timefeld type: TIMESTAMP null: NEIN Standart: 0000-00-00 00: 00 :00

müsste doch eigentlich so stimmen.

und in meinem code sieht das so aus:
PHP:
$ipget = $_SERVER['REMOTE_ADDR'];
			$zeitget = time();
			$sql = "INSERT INTO ipsperre (ip,timefeld) VALUES ('".$ipget."', '".$zeitget."')";
			$queryvar = mysql_db_query ($dbname,$sql)or die (" </br>Query $sql failed : ".mysql_error());

also ip wird eingetragen aber die zeit net ?!
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #14
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
naja, schau Dir doch mal an, was $zeitget eigentlich enthält.
Zur Zeit steht da 1200943560 drin während Dein SQL-Feld das ganze in Form von 2008-01-21 20:26:00 erwartet...

Entweder Du konvertierst die PHP-Zeit in einen kompatiblen String, änderst das Feld in VARCHAR (oder INT) und speicherst die Sekunden wie sie sind oder Du verwendest die MySQL-Funktion NOW()

Und zum Thema geänderte IP: Bist Du Dir sicher? Und wenn ja: hast Du ein Problem mit Deinem Modem/Router das zur ständigen Neu-Verbindung führt?
Normal ist das nicht.
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #15
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Jetzt hab ich das feld auf INT gestellt.

Aber was ich net versteh, warum INT oder VARCHAR und nicht TIMESTAMP?

Im tutorial steht auch timestamp?!
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #16
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
im Tutorial steht aber bestimmt nicht, dass Du dort eine Zahl (die Sekunden seit 01.01.1970) als Timestamp (!) speichern sollst - denn das geht nicht.
Anscheinend war mein ganzes Posting unverständlich, oder??

Also nochmal in Kurzform:

  • TIMESTAMP ist ein Datum!
    (das Format 0000-00-00 00:00:00, das Du oben gepostet hast!)
  • time() ermittelt aber eine Zahl, und kein Datum!
    (siehst Du z.B. mit echo time())
  • Deshalb brauchst Du entweder
    INT = der Feldtyp für eine ganze Zahl
    oder
    VARCHAR = der Feldtyp für einen beliebigen String, d.h. auch eine Zahl

Wenn das nicht hilft solltest Du mein Posting oben vielleicht nochmal durchlesen, vor allem den 1. Absatz.
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #17
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Das ist doch alles seltsam!

Ich hab deinen Beitrag schon Verstanden. Aber dann Versteh ich das Tutorial nicht!?

Da steht echt auf der ersten Seite eine Datenbank
Also zuerst brauchen wir mal wieder eine Tabelle in einer Datenbank wo wir die Daten ablegen. Es reicht hierbau eine Tabelle mit 2 Spalten :
Spaltenname typ
ip varchar(15)
timefeld timestamp
Mit dem Befehl :
CREATE TABLE iptest (
ip varchar(16) default '0',
timefeld timestamp(14) NOT NULL)

und da wird auch mit time() gerechnet.

Naja es geht ja jetzt. Ich werd mir das mal genauer irgendwo nachschlagen. Weil ich hab festgestellt das mit time() steht auch in meim schlaun PHP-Buch.

Ach noch eins. gibt es ein tutorial oder eine Sammlung mit daten, wie ich so ne Datenbank Tabelle richtig einstelle? Also wo steht, wenn ich ne Zeit eintragen will welchen typ und kollation ich da benutzen sollte ?

Und wegen meiner IP hab ich das nochmal getestet und die endert sich echt os alle 15 minuten...keine ahnung warum
 
  • Bestimmte zeile aus daten bank auslesen. Beitrag #18
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
und da wird auch mit time() gerechnet.
Kann sein, aber time() wird sicher nicht unformatiert in die Datenbank geschrieben.
Ach noch eins. gibt es ein tutorial oder eine Sammlung mit daten, wie ich so ne Datenbank Tabelle richtig einstelle? Also wo steht, wenn ich ne Zeit eintragen will welchen typ und kollation ich da benutzen sollte ?
Von phpmyadmin aus kommst Du direkt in die entsprechenden Kapitel des MySQL-Handbuchs. Da steht alles drin.
Datentypen sind zum Beispiel hier kurz zusammengefasst: http://www.grammiweb.de/uebersichten/mysql-datentypen.shtml
Es gibt da aber auch noch so ne andere Seite, "Gugel" oder so ähnlich, dort findet man mit ein zwei Suchbegriffen massig von diesen Übersichten.
:iro:
Und wegen meiner IP hab ich das nochmal getestet und die endert sich echt os alle 15 minuten...keine ahnung warum
Na solange du nicht auf die Rückfragen zum Thema eingehst können wir nur raten, woran das liegt. Dazu hab ich aber momentan keine Lust.
 
Thema:

Bestimmte zeile aus daten bank auslesen.

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben