Homepage selbermachen 7.852 Themen, 35.619 Beiträge

Aus MySQL Datenbank lesen

T E S T E R / 23 Antworten / Baumansicht Nickles

Brauche mal ein ganz einfaches scriptteil:

wie ich in eine mysql datenbank (gäestebuch oder so)
schreibe, ist klar, aber wie lese ich die daten, wenn ich
folgende felder habe

datum
name
titel
eintrag


Harald

bei Antwort benachrichtigen
xafford T E S T E R „Aus MySQL Datenbank lesen“
Optionen

$result=mysql_query("SELECT datum, name, titel, eintrag FROM tabellenname WHERE suchfeld LIKE 'kriterium';");
oder kürzer, wenn alle gelesen werden sollen:
$result=mysql_query("Select * FROM tabellenname;");

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
T E S T E R xafford „ result mysql_query SELECT datum, name, titel, eintrag FROM tabellenname WHERE...“
Optionen

sorry aber es funktioniert nicht ;-((

bei Antwort benachrichtigen
xafford T E S T E R „sorry aber es funktioniert nicht - “
Optionen

was bedeutet "funktioniert nicht" welche fehlermeldung kommt, welchen code hast du genau eingegeben, was ist passiert?

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
T E S T E R xafford „was bedeutet funktioniert nicht welche fehlermeldung kommt, welchen code hast du...“
Optionen

es kommt keine fehlermeldung, aber die daten werden einfach nicht ausgegeben.

bei Antwort benachrichtigen
Zaphod T E S T E R „es kommt keine fehlermeldung, aber die daten werden einfach nicht ausgegeben.“
Optionen

... werden sie nicht ausgegeben oder nur nicht angezeigt?
Was gibt zum Beispiel ein "echo row->name" aus?
Have fun,
Z.

bei Antwort benachrichtigen
xafford T E S T E R „es kommt keine fehlermeldung, aber die daten werden einfach nicht ausgegeben.“
Optionen

dann poste doch bitte mal den genauen code, den du verwendest (alles ab dem punkt wo du mit der datenbank den connect durchführst, bis zu der stelle, an der die daten ausgegeben werden sollen.
ich hoffe mal, du hast nicht direkt versucht die variable $result anzeigen zu lassen.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
T E S T E R Nachtrag zu: „Aus MySQL Datenbank lesen“
Optionen

<?php

if($abschicken)

{

$db=mysql_connect ("localhost","","");
mysql_select_db ("test", $db);

mysql_query ("

insert into testbank
(datum, name, titel, eintrag)
values
(now(''), '$name', '$titel', '$eintrag')

", $db);

if(mysql_affected_rows($db)==1)
echo "Danke";
else echo "Fehler";

}
else

{

print '<form action=index.php4 name="form1" onSubmit="return check()">';
print '<div id="text_normal">Name:</div> <input type=text name=name width=24><br>';
print '<div id="text_normal">Titel:</div> <input type=text name=titel width=24><br>';
print '<div id="text_normal">Ihr Kommentar:</div>';
print '<textarea name=eintrag cols=35 rows=7></textarea><br>';
print '<input type=hidden name=cmd value=enter>';
print '<input type=submit name="abschicken" value=Eintragen>';
print '</form><br><br>';


$result=mysql_query("SELECT datum, name, titel, eintrag FROM testbank;");


//keine ahnung wie ich result ausgeben sollte


}

?>

bei Antwort benachrichtigen
xafford T E S T E R „“
Optionen

hm...was soll der code machen? zum einen mal kann der query überhaupt nicht ausgeführt werden, weil dein connect und select_db in der if-schleife steht und vor dem query überhaupt nicht ausgeführt wird. zum anderen, warum willst du den query in dem bereich ausführen, in dem deine eingabemaske steht?`was willst du damit abfragen/ausgeben?
also wenn du die abfrage in eine extra verzweigung packst, dann sollte sie so aussehen (ungefähr,, je nachdem was du damit machen willst)
$dp=mysql_connect("localhost","","");
mysql_select_db("",$dp);
$result=mysql_query("SELECT datum, name, titel, eintrag FROM testbank;");
while($line=mysql_fetch_row($result)){
print("$line<br>");}
dies gibt dir das ergebnis zeilenweise aus
alternativ kannst du auch mit fetch_array arbeiten falls du mit den daten einzeln weiterarbeiten willst.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
T E S T E R xafford „hm...was soll der code machen? zum einen mal kann der query überhaupt nicht...“
Optionen

aber $line ist doch bei mir nirgends definiert. daher erscheint immer nur

Array
Array
Array
Array
Array

bei Antwort benachrichtigen
xafford T E S T E R „aber line ist doch bei mir nirgends definiert. daher erscheint immer nur Array...“
Optionen

was meisnt du mit nicht definiert? du mußt aus line natürlich die elemente darstellen lassen, die du willst..hm..war wohl mein fehler, daß ich es falsch aufgeschrieben hatte...$line stellt ein array aus den ausgelesenen elementen des jeweilig gefundenen datensatzes dar. also muß die darstelung auch im arrayformat vorgenommen werden:
print("$line[0] $line[1] $line[2] ... <br>");

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
T E S T E R xafford „was meisnt du mit nicht definiert? du mußt aus line natürlich die elemente...“
Optionen

hi, jetzt hab ich gerafft, danke dir vielmals.

nur als kleine erläuterung, da ich den begriff noch nicht kannte, was genau besagt der befehl:
mysql_fetch_row


bei Antwort benachrichtigen
xafford T E S T E R „hi, jetzt hab ich gerafft, danke dir vielmals. nur als kleine erläuterung, da...“
Optionen

mysql_fetch_row liest aus einem ergebnisbezeichner, also dem ergebnis einer abfrage, die einzelnen gefundenen datensätze aus, also im prinzip die zeilen einer datenbanktabelle, die von der abfrage zurückgeliefert wurden, und dies ist ein array, da meist mehr als ein wert pro zeile zurückgelifert wird.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
schooters xafford „mysql_fetch_row liest aus einem ergebnisbezeichner, also dem ergebnis einer...“
Optionen

Hi Xafford, wieso lässt sich eigentlich keine foreach schleife daraus konstruieren??

aus:
$result=mysql_query("SELECT datum FROM testbank;");
while($zeilen=mysql_fetch_row($result))
{ print("$zeilen[0]");
}

soll eine foreach schleife werden:
$result=mysql_query("SELECT datum FROM testbank;");
($zeilen=mysql_fetch_row($result));



foreach ($tabelle as $zeilen)

{

print '$tabelle';

}

bei Antwort benachrichtigen
xafford schooters „Hi Xafford, wieso lässt sich eigentlich keine foreach schleife daraus...“
Optionen

ganz einfach, weil er nur 3 einträge daraus will und eine foreachschleife länger braucht, als eine einfache printanweisung aus einem array heraus. bei vielen elementen, die man anschließend in eine tabelle formatiert ist natürlich eine foreach-schleife besser, aber ebe nciht überall, ein bißchen eigenkreativität kann man ja wohl verlangen ;o)..
übrigens muß es heissen:
foreach($zeilen as $tabelle){//code//}
;o)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
schooters xafford „ganz einfach, weil er nur 3 einträge daraus will und eine foreachschleife...“
Optionen

aber wieso funktioniert die foreach schleife von der form her nicht so wie ich sie gepostet hab wo liegt da der fehler

bei Antwort benachrichtigen
xafford schooters „aber wieso funktioniert die foreach schleife von der form her nicht so wie ich...“
Optionen

hab ich doch geschrieben, du hast die variablen nach foreach verdreht. zuerst kommt die array-variable, dann der schrittbezeichner und nicht umgekehrt. also muß es heißen foreach($zeilen as $tabelle) und nicht umgekehrt.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher xafford „hab ich doch geschrieben, du hast die variablen nach foreach verdreht. zuerst...“
Optionen

Hmm so müsste es doch eigentlich klappen, also bei mir zumindest:

$result=mysql_query("SELECT datum FROM testbank;");
($zeilen=mysql_fetch_row($result));
foreach ($zeilen as $tabelle)
{
echo $tabelle;
}

bei Antwort benachrichtigen
xafford Heinz_Malcher „Hmm so müsste es doch eigentlich klappen, also bei mir zumindest: result...“
Optionen

für einen gefundenen treffer dürfte dies funktionieren, aber was machst du, wenn $result mehr als einen treffer zurückgibt? ;o)
mysql_fetch_row gibt immer nur den ersten eintrag zurück und setzt den pointer eine zeile weiter, deswegen mußt du mit while oder ähnlichen schleifen arbeiten um alle rows durchzuarbeiten.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher xafford „für einen gefundenen treffer dürfte dies funktionieren, aber was machst du,...“
Optionen

hmm, das klingt (wie so vieles von dir) einleuchtend.

ich arbeite aber lieber zusätzlich mit dem befehlchen do
da es meiner meinung nach die while schleife komplettiert:

$result=mysql_query("SELECT eintrag FROM tabellenname limit 2,3;");
do { print("$eintrag[0]"); }
while($eintrag=mysql_fetch_row($result));

bei Antwort benachrichtigen
xafford Heinz_Malcher „hmm, das klingt wie so vieles von dir einleuchtend. ich arbeite aber lieber...“
Optionen

naja...kann man machen, aber ich bevorzuge es persönlich eigentlich code zu sparen wo es geht ;o)...ist aber persönliche vorliebe.
ich finde die do...while form etwas schwerer zu debuggen, da die abbruchbedingung nicht direkt an der ausführung steht, deswegen kann ich da schnell mal was übersehen ;o)...
es gibt natürlich auch leute, die es noch komplizierter mit for-schleifen machen und vorher einen count machen, habe bis heute nicvht verstanden warum, außer wenn man nicht alle gefundenen treffer darstellen will.
was ich natürlich noch favorisiere bei großen datensätzen die nur selektiv angezeigt werden ist die mysql_fetch_array funktion, macht aber auch nicht überall sinn und kann bös auf die serverleistung gehen, dafür kann man sehr selektiv damit arbeiten, z.b. wenn man eine große datengesamtheit hat/braucht, mit der mehrere operationen abhängig vom datensatz angestellt werden.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher xafford „naja...kann man machen, aber ich bevorzuge es persönlich eigentlich code zu...“
Optionen

naja, zu kompliziert sollte mans wirklich nicht machen.

by the way
Kennst du ein gutes Onlineverzeichnis wo die ganzen PHP/Mysql befehle aufgelistet sind?

bei Antwort benachrichtigen
xafford Heinz_Malcher „naja, zu kompliziert sollte mans wirklich nicht machen. by the way Kennst du ein...“
Optionen

naja, zum einen fpr php eben selfphp (nicht vollständig) oder das php-tutorial unter php.net
zum anderen gibt es unter mysql.com ein windows-manual für mysql, ist etwas schlecht strukturiert, aber ziemlich komplett.
ansonsten ist auch in den schlechtesten php büchern meist eine ziemlich komplette appendix mit den php-funktionen.
ansonsten wenn du ein paar monate zeit hast, dann kannst auf meiner webseite nachschauen, habe vor sowas in die richtung aufzubauen ;o)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher xafford „naja, zum einen fpr php eben selfphp nicht vollständig oder das php-tutorial...“
Optionen

na wenn du das machst, raff ichs wenigstens.

aber ich werde mir trotzdem mal das teil von mysql zu gemüte führen

danke

bei Antwort benachrichtigen