Daten aus DB auslesen und anzeigen

sunflower84

Erfahrenes Mitglied
Hallo

Ich habe eine MySQL Datenbank. Aus dieser Datenbank würde ich gerne Fragen auslesen und mit HTML anzeigen. Das ganze soll nämlich ein Quiz geben.
Bisher habe ich folgendes gemacht aber im Browser ist die Seite leer. Bekomme auch keine Fehlermeldung. Aber wie kann ich ich sie mir anzeigen lassen. Es soll dann mit einem Button auf weiter die nächste Frage erscheinen.

PHP:
<?php
        $questions = $_POST["fragen"];

        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

     mysql_select_db("exactt") or
        die ("MySQL-Fehler: Datenbank nicht gefunden");

	$select = "SELECT * FROM fragen";
	$question = mysql_fetch_array(mysql_query($select));

         echo "$questions";
?>

Lg
Sunflower84
 
Den letzten Mysql-Fehler bekommst du über die Funtion mysql_error().

Wird wirklich gar nichts ausgegeben? Noch nicht einmal die Zeichenfolge Array?
Dann stimmt wahrscheinlich mit deinem Select etwas nicht.
Sind Datenbank und Tabelle richtig benannt?

mysql_fetch_array liefert im übrigen immer nur einen Datensatz als Array zurück.
Um alle gefundenen Datensätze auszugeben musst du das ganze in eine Schleife einbauen:
PHP:
while($daten = mysql_fetch_array(mysql_query(dummdidumm))) {
       echo $daten['DeinFeld1'];
       echo $daten['DeinFeld2'];
}

Auch würde ich empfehlen, deine Befehle extra abzuspeichern, also:
PHP:
$select = "Select .............";
$exec_select = mysql_query($select);

So kannst du dir zusammengestückelte SQL-Anweisungen auch als ganzes ausgeben lassen (echo $select etc).
 
Hi ich probier s einfach mal ohne zu testen.
Is mit seitenzahlen um ein weiter hinzukriegen musste halt einfach die $_GET['seite'] mit einem Link/Button um eins erhöhen :)

EDIT : Naja war wohl zu spät ^^
PHP:
<?php
        $questions = $_POST["fragen"];

        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

        mysql_select_db("exactt") or
        die ("MySQL-Fehler: Datenbank nicht gefunden");

        $count = mysql_query("SELECT * FROM FRAGEN");
	$anzahl = mysql_num_rows($count);
		echo"<div>";
		for($i = 0; $i < $anzahl; $i++){
		$active = "";
		if($_GET['seite'] == $i){
		$active = "style='color:#000000;'";
		}
		echo "<a ".$active." href='index.php?seite=".$i."'>".($i+1)."</a>";
		}
		echo "</div>";
		$i = $_GET['seite'];
		echo"<br>";   
        $select = "SELECT * FROM fragen LIMIT $i,1";
    
        while($question = mysql_fetch_assoc($select){
                echo $question['column']."<br>";
        }
?>
 
Hab das jetzt mal so versucht aber ich bekomme folgende Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Exactt\question2.php on line 13

PHP:
<?php
        $questions = $_POST["fragen"];

        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

     mysql_select_db("exactt") or
        die ("MySQL-Fehler: Datenbank nicht gefunden");

	$select = "SELECT * FROM fragen";
	$question = mysql_fetch_array(mysql_query($select));

while ($xy = mysql_fetch_array($question, $sql))
{
printf ("Frage: %s", $xy[0]);
}

?>

Lg
Sunflower84
 
Versuchs mal so...
PHP:
<?php
        $questions = $_POST["fragen"];

        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

     mysql_select_db(exactt, $sql) or
        die ("MySQL-Fehler: Datenbank nicht gefunden");

    $select = mysql_query("SELECT * FROM fragen");

while ($xy = mysql_fetch_assoc($select))
{
printf ("Frage: %s", $xy[0]);
}

?>
 
Jetzt bekomme ich 20 mal das Wort Frage angezeigt. Es sind auch 20 Fragen in meiner Datenbank, aber die Frage an sich wird nicht angezeigt

Die SQL Anweisung müsste aber stimmen. Ich habe in meiner DB eine Tabelle fragen wo alle Fragen drin stehen

Lg
Sunflower84
 
Versuch das mal

PHP:
<?php 
        $questions = $_POST["fragen"]; 

        $sql = mysql_connect("localhost", "root", "")  or 
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!"); 

     mysql_select_db(exactt, $sql) or 
        die ("MySQL-Fehler: Datenbank nicht gefunden"); 

    $result = mysql_query("SELECT * FROM fragen"); 

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
}

// Statt "Id" schreibst du deinen Spalten namen von der Tabelle rein genauso bei "Name"
// Wenn du mehre Spalten hast mußt du das fortsetzen mit ,$row['Spaltename"]
// Wenn du nur 1 Spalte hast dann auch nur ein $row["und der Spaltename"]
?>

Bwz %s steht nur als Platz halter für einen String in dem fall für $row["id"] je mehr spalten du in der Tabelle hast umso mehr paltzhalter brauchst du wenn du alles ausgeben möchtest.

Ansonsten reicht es wenn du nur die Fragen Spalten ausgibst mit
printf ("Frage: %s ", $row["frage"]);


Erklärung:
MYSQL_ASSOC gibt ein asotiertes Array aus daher kann man mit dem Spaltennamen von der Tabelle das Array damit ansprechen.Der wert im Array sieht dann so aus Spaltename=>Wert

Mit $row['Spaltename"] wird dann der schlüsselname das Array angesprochen der so lautet wie deine Spalte in der tabelle fragen.

Mfg Splasch
 
Zuletzt bearbeitet:
PHP:
<?php
        $questions = $_POST["fragen"];

        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

     mysql_select_db(exactt, $sql) or
        die ("MySQL-Fehler: Datenbank nicht gefunden");

    $select = mysql_query("SELECT * FROM fragen LIMIT 0,1");

while ($xy = mysql_fetch_assoc($select))
{
echo "Frage:".$xy['Spaltenname'];
}

?>
Spaltenname noch mit dem richtigen ergänzen.
so nun sollte es nur noch eine Frage anzeigen ;)
für das weiter schaust du am besten mal in das Script das ich oben gepostet habe ;)
 
Zuletzt bearbeitet:
Hab es eben selbst hin bekommen. Nur hat er mir dann alle Fragen ausgegeben. Deshalb nehme ich dann doch deine Lösung. Ich habe ja auch noch Antworten zu den Fragen. Dafür habe ich auch eine extra Tabelle. Die muss ich wahrscheinlich auch so ausgeben wie die Fragen nehme ich an. Die Antworten sollen zum Schluss ausgewertet werden. Kann ich das alles zum Schluß machen? Ich habe gedacht das ich noch eine Tabelle antworten des Benutzers mache wo alle Antworten gespeichert werden und dann zum Schluss vergleiche ob sie richig sind. Um zur nächsten Frage zu gelangen: Muss ich da nicht ein form action einfügen? Deine Variante verstehe ich nämlich nicht so ganz. Also einfach eine form action die die Seite immer wieder aufruft, oder?

Lg
Sunflower84
 
Zurück