SQL Daten auslesen

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.255
Hi,
hab mir grad n kleines script gemacht in das werte aus meiner datenbank eingefügt werden sollen! Nur i-wie funktioniert des ganze nicht (zeigt auch keinen fehler na aber macht einfach wenn ich zB einen wert ausgeben garnichts anstelle der zahl hin!)
Hab von SQL gar keinen plan, es geht bestimmt auch einfacher!
Hier mal der eine teil:
PHP:
<?php
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="DATENBANKBENUTZER"; // MySQL-User angeben
$mysqlpwd="DATENBANKPASSWORT"; // Passwort angeben

$connection=mysql_connect($mysqlhost,
$mysqluser, $mysqlpwd);

$sql_ja_1 = "SELECT jahr FROM uebungen WHERE id = 1";
$result_ja_1 = mysql_query($sql_ja_1);
$sql_mo_1 = "SELECT monat FROM uebungen WHERE id = 1";
$result_mo_1 = mysql_query($sql_mo_1);
$sql_ta_1 = "SELECT tag FROM uebungen WHERE id = 1";
$result_ta_1 = mysql_query($sql_ta_1);
$sql_st_1 = "SELECT stunde FROM uebungen WHERE id = 1";
$result_st_1 = mysql_query($sql_st_1);
$sql_mi_1 = "SELECT minute FROM uebungen WHERE id = 1";
$result_mi_1 = mysql_query($sql_mi_1);
$sql_se_1 = "SELECT sekunde FROM uebungen WHERE id = 1";
$result_se_1 = mysql_query($sql_se_1);

mysql_close($connection);
?>

in der anderen Datei wird dies durch include eingefügt und dann überprüft ob des datum (des hier ausgelesen werden soll) schon vergangen ist! wenn ja, füg ich nochwas ein dass er dann schaut ob id 2 vllt nen wert liefert der nochnet vorbei ist!

die datenbank "DATENBANKNAME" beinhaltet bei mir die tabelle "uebungen" (*g* kanns sein dass i-wo der db-name fehlt?)

mfg
to
(benutz immer die zeile
PHP:
echo 'Test '.$result_st_1.' Test';
damit ich seh ob halt n wert ausgegeben wird!)
 
Zuletzt bearbeitet:
Wie du richtig erkannt hast fehlt der Datenbank-Name.. Wie soll mysql wissen in welcher Datenbank er schreiben/lesen soll?

PHP:
//array erzeugen

$_config = array();
    $_config['host'] = 'localhost';  
    $_config['user'] = 'user';        
    $_config['password']  = 'pw'; 
    $_config['database'] = 'datenbank-name';


// Erstellen der Verbindung zur MySQL-Datenbank 
          if( !$connection = mysql_connect( $_config['host'], $_config['user'], $_config['password'] ) ) {
               die( 'Fehler, konnte Verbindung nicht aufbauen.' );
          }

          if( !mysql_select_db( $_config['database'], $connection ) ) {
              die ( 'Kann Datenbank ' . $_config['database'] . ' nicht verwenden. <br />
                       MySQL-Error: <br />' . mysql_error() );
          }
 
Zuletzt bearbeitet:
Also so ganz klappts noch net!
hab jetzt:
PHP:
<?php
$mysqlhost='localhost'; // MySQL-Host angeben
$mysqluser='DATENBANKUSER'; // MySQL-User angeben
$mysqlpwd='DATENBANKPASSWORT'; // Passwort angeben
$mysqldb='DATENBANKNAME'; //Gewuenschte Datenbank angeben

$connection=mysql_connect( $mysqlhost, $mysqluser, $mysqlpwd);

mysql_select_db( $mysqldb, $connection);

$sql_ja_1 = "SELECT jahr FROM uebungen WHERE id = 1";
$result_ja_1 = mysql_query($sql_ja_1);

//hier gehts dann n ganzes Stück noch weiter
//...

$sql_se_1 = "SELECT sekunde FROM uebungen WHERE id = 1";
$result_se_1 = mysql_query($sql_se_1);
echo 'Test '.$result_st_1.' Test';

mysql_close($connection);
?>

So jetz sagt mir meine Testzeile:
Test Resource id #7 Test
Also hab auch mal mit dem MySQLDumper den SELECT-Befehl augeführt-->der macht des (also müsste es von der Datenbank her ja stimmen?!)
 
Irgend wie weis ich nicht was du überhaupt machen willst?

Willst du reine Daten aus der DB lesen und diese dann verarbeiten?

PHP:
//Daten holen und verarbeiten!
$res = mysql_query("SELECT bla FROM bla WHERE id=bla") or die(mysql_error());
$row = mysql_fetch_array($res);
// gibt tabelle bla aus
echo $row["bla"];

Kläre uns auf, was willst du machen? Irgend wie verstehe ich dich nicht.. -.- sry

und..: Wieso -- schreibst du nicht einfach das Datum per time() oder Timestamp() in die DB, so brauchst du nicht alles in eine separate Tabelle hinterlegen!
 
Zuletzt bearbeitet:
Das SELECT-Statement läßt sich zusammenfassen:
PHP:
SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = 1;
oder
PHP:
SELECT * FROM uebungen WHERE id = 1;
Was steht dann drin?
PHP:
$result = mysql_query($sql);
var_dump(mysql_fetch_array($result));
 
volcem schrieb:
Irgend wie weis ich nicht was du überhaupt machen willst?

Kläre uns auf, was willst du machen? Irgend wie verstehe ich dich nicht.. -.- sry

und..: Wieso -- schreibst du nicht einfach das Datum per time() oder Timestamp() in die DB, so brauchst du nicht alles in eine separate Tabelle hinterlegen!


Also es geht um folgendes:
In der Datenbank 'xy' gibt es die Tabelle 'uebungen'!(geht um den Übungsplan einer Feuerwehr)
In dieser Tabelle gibt es die spalten 'id' (AutoWert), 'jahr', 'monat', 'tag', 'stunde', 'minute' und 'sekunde'!(Die werte für die verschiedenen Übungen trage ich per hand in die DB ein)
Also zB ist die erste Übung:
id:1
jahr:2009
monat:5
tag:5
stunde:18
minute:0
sekunde:0
Dann sollen diese Werte (ich hoff der typ von den ganzen feldern 'decimal' (bzw. bei 'id':'int') passt) in mein anderes script eingefügt werden!
Dieses andere Script überprüft erstmal ob die übung mit der id 1 schon war, wenn nein macht er weiter (wenn ja, dann versucht ers mit der id 2) und macht dann nen countdown bist zur nächsten übung.

So hoff so hab ich mich verständlicher ausgedrückt

Jetz kommt halt eben anstatt immer dem wert der eigentlich in der DB ist 'Resource id #7'
Ergänzung ()

pvc-junkie schrieb:
Das SELECT-Statement läßt sich zusammenfassen:
PHP:
SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = 1;

Wie bekomm ich des dann in ne variable/array??(sry noch net viel mit sql gemacht)
 
pvc-junkie schrieb:
Das SELECT-Statement läßt sich zusammenfassen:
PHP:
SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = 1;
oder
PHP:
SELECT * FROM uebungen WHERE id = 1;
Was steht dann drin?
PHP:
$result = mysql_query($sql);
var_dump(mysql_fetch_array($result));

Das mit dem Zusammenfassen NICHT machen^^
Wenn du i-wann mal änderungen am table machst dann ist das ganzes Script fürn Ar***
Also bitte nicht solche Tipps geben -.-'

Zu deinem Problem^^

Um mehrere Daten auszulesen einfach sowas machen:
PHP:
while($daten = mysql_fetch_assoc($result)) {
echo $daten['jahr'];
}
 
Zuletzt bearbeitet:
PHP:
<?php
$mysqlhost='localhost'; // MySQL-Host angeben
$mysqluser='...'; // MySQL-User angeben
$mysqlpwd='...'; // Passwort angeben
$mysqldb='...'; //Gewuenschte Datenbank angeben

$connection=mysql_connect( $mysqlhost, $mysqluser, $mysqlpwd);

mysql_select_db( $mysqldb, $connection);

$result = "SELECT * FROM uebungen WHERE id = 1"; //müsste ja eigentlich die Zeile mit id 1 raussuchen
while($daten = mysql_fetch_assoc($result)) {
echo $daten['jahr'];
}
//müsste eigentlich das ergebnis in array speichern!
/* Bringt mir aber nur:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
/usr/export/www/vhosts/.../hosting/.../anderes/sql_connect.php on line 11
Zeile 11 ist die mit der while-schleife
(hab auch schon probiert vorher $daten zu einem array (mit $daten=array()) zu machen)
*/

mysql_close($connection);
?>
och man ey ich bin am verzweifeln! sql is ja echt nervig^^
keiner ne idee wodran des jetz genau liegt? (des countdown-skript funzt wenn ich einfach mal zahlen angebe anstatt den werten aus der db)
 
Zuletzt bearbeitet:
PHP:
$result = "SELECT * FROM uebungen WHERE id = 1"; //müsste ja eigentlich die Zeile mit id 1 raussuchen 
while($daten = mysql_fetch_assoc($result)) { 
echo $daten['jahr']; 
}

Änder das mal in:

PHP:
$result = "SELECT * FROM uebungen WHERE id = 1"; //müsste ja eigentlich die Zeile mit id 1 raussuchen 
while($daten = mysql_fetch_assoc($result)) { 
print_r($daten); 
}

Und sage bitte was angezeigt wird.
 
omg...
Tut mir leid aber das geht mir langsam echt auf die nerven -.- beschäftige dich mit der manual!
PHP:
$daten1 = mysql_query($result);
while($daten = mysql_fetch_assoc($daten1)) { 
echo $daten['jahr']; 
}
 
@Destruction:
Die Aufzählung von Spalten hat durchaus einen Sinn. Sie beschleunigt nämlich das Statement. Und man erstellt keine Datenbank, um dann permanent Spalten umzubenennen. Der Code aus dem ersten Post ist deiner Meinung nach wohl wesentlich besser?


@te one

Wenn du das probiert hast was ich gepostet habe und du siehst etwas aus der Datenbank hast du es fast geschafft.
PHP:
$sql = "SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = 1;";
$result = mysql_query($sql);
$uebungen = mysql_fetch_array($result);
echo $uebungen['jahr'];
Wenn das nicht funzt, sollte es eine Fehlermeldung geben, mit der man mehr anfangen kann.
 
Zuletzt bearbeitet: (volcem hat recht ^^)
oO Ich brauch nichts probieren, hab keine Probleme und auch den Thread nicht erstellt *fg
Und doing, mysql_query fehlt und nicht gesehen *fg
 
Zuletzt bearbeitet:
@Destruction:
Die Aufzählung von Spalten hat durchaus einen Sinn. Sie beschleunigt nämlich das Statement. Und man erstellt keine Datenbank, um dann permanent Spalten umzubenennen. Der Code aus dem ersten Post ist deiner Meinung nach wohl wesentlich besser?

LOOOOOOOOOOOOOOOOOOOL
Vielleicht ein bischen genauer lesen?
Ich habe gesagt dass man die Spalten aufzählen soll! Jemand anders hat das mit dem * geschrieben und dann hab ich gesagt, dass man die ausschreiben soll...
 
Ich verstehe beim besten Willen nicht, warum bei Verwendung von "SELECT * ..." das Script bei Tabellenänderungen fürn A*** sein soll. Man muß sogar eine Zeile weniger ändern, wenn man daran was positives finden möchte.
 
pvc-junkie schrieb:
@Destruction:
Die Aufzählung von Spalten hat durchaus einen Sinn. Sie beschleunigt nämlich das Statement. Und man erstellt keine Datenbank, um dann permanent Spalten umzubenennen. Der Code aus dem ersten Post ist deiner Meinung nach wohl wesentlich besser?


@te one

Wenn du das probiert hast was ich gepostet habe und du siehst etwas aus der Datenbank hast du es fast geschafft.
PHP:
$sql = "SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = 1;";
$result = mysql_query($sql);
$uebungen = mysql_fetch_array($result);
echo $uebungen['jahr'];
Wenn das nicht funzt, sollte es eine Fehlermeldung geben, mit der man mehr anfangen kann.

Jetz funzts damit^^!
also muss ich erst ne variable mit select... machen, dann die mit mysql_query auf ne andere machen und davon dann mit mysql_fetch_array nen array machn?! Umständlich abba so funktionierts:)
thx gelöst
 
mysql_query führt das SELECT-Statement aus, dabei entstehlt eine "Tabelle" mit mehreren Spalten und Zeilen, die in $result gespeichert wird. mysql_fetch_array liest eine Zeile aus dieser Tabelle aus und übergibt sie an $uebungen. Da durch deine WHERE-Klausel die "Tabelle" nur eine Zeile hat, reicht das. Ansonsten kann man alle Zeilen auslesen, indem man immer wieder mysql_fetch_array aufruft, bis dies keine Zeile mehr zurückgibt.


PS: Bei Statements die eine Zeile zurückliefern, kann man auch alles zusammenfassen.
PHP:
$uebung = mysql_fetch_array(mysql_query("SELECT * FROM uebungen WHERE id = 1;"));
echo $uebung['jahr'];
 
ah ja ok!

Hab jetz noch was ändern wollen abba i-wo passt was noch net (aber i-was passt noch nicht weil er jetz solang die for-schleife glaub ich durchmacht, bis er keinen datensatz mehr findet und macht dann mit ''(also nix) weiter!

PHP:
?php
include( 'sql_connect.php' );
$test = mktime( 0, 0, 0, 1, 1, 1970);
$aktuellezeit = mktime();
for ( $anzahl=1; $test < $aktuellezeit; $anzahl++) {
if ( $anzahl <= 100) {
$sql = "SELECT jahr, monat, tag, stunde, minute, sekunde FROM uebungen WHERE id = ".$anzahl.";";
$result = mysql_query($sql);
$uebungen = mysql_fetch_array($result);
$test = mktime( $uebungen['stunde'], $uebungen['minute'], $uebungen['sekunde'], $uebungen['monat'], $uebungen['tag'], $uebungen['jahr']);
}
//^^damit möcht ich erreichen dass er die variable $test mit dem wert überschreibt
else {
break;
}
}
//Hier kommt dann die ausgabe von den ganzen sachen
include( 'sql_disconnect.php' );
?>
wo liegt da mein fehler??kann ich die vllt net einfach so überschreiben die variable mit mktime??
ps in datenbank gibts immer id 1, 2, 3, 4,... dann soll halt erst überprüft werden ob des mit id 1 schon rum ist, dann ob 2 schon rum ist,...

edit: ah sorry leute hat sich erledigt! als ich dne code hierrein kopiert hab, ist mir aufgefallen dass ich $aktuellezeit und $test verwechselt hatte (also hatten sie die falschen werte)
jetz funzts
*SORRY*
 
Zuletzt bearbeitet:
Zurück
Oben