Seite 1 von 2

SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 07.11.2009 20:06
von Bones van Helghast
Halli Hallo.
Ich hab folgendes "kleines Projekt" vor.
Ich will ein kleines Script für meine Homepage erstellen das so Funktioniert.
Name und Geburtsdatum wird in einem Formular eingegeben und abgesendet. Das ganze wird in einer SQL-DB gespeichert.
(Die SQL-Datenbank und das Formular zum eintragen funktionierten mittlerweile schon)
Nun möchte ich auf einer Seite die Daten ausgeben die eingetragen werden allerdings wird ja für jeden eingetragenen Namen eine eigene ID erstellt:
in der SQL-DB sieht das so aus:

ID Name Datum

---
So nun möchte ich also das wirklich alle ID's der einen Datenbank (users) auf einer Seite ausgegeben wird das ganze soll dann so aussehen:
(Ansicht als "Quelltext"):

Code: Alles auswählen

<table style="width:100%">
<tr>
<td style="width:33%">Name</td>
<td style="width:33%"></td>
<td style="width:33%">Geburtsdatum</td>
</tr>
<tr>
<td style="width:33%"></td>
<td style="width:33%"></td>
<td style="width:33%"></td>
</tr>
<tr>
<td style="width:33%">USERNAME 1</td>
<td style="width:33%"></td>
<td style="width:33%">DATUM 1</td>
</tr>
<tr>
<td style="width:33%">USERNAME 2</td>
<td style="width:33%"></td>
<td style="width:33%">DATUM 2</td>
</tr>
<tr>
<td style="width:33%">USERNAME 3</td>
<td style="width:33%"></td>
<td style="width:33%">DATUM 3</td>
</tr>
</table>
----usw----
Nach unten soll es Komplett ausgefüllt werden d.H soviele ID's wie's gibt soll es auch in <tr>'s ausgegeben werden.

Leider besteht momentan noch das Problem dass ich mit PHP und MySQL noch nicht soviel zu tun hatte und noch totaler anfänger in dem berreich bin. daher hab ich noch einige schwierigkeiten.

Als basis brauch ich erst mal den DB - Connect also dass verbindung zur Datenbank aufgebaut wird.
Wies weiter geht weiß ich leider nicht darum hoffe ich um hilfe von euch weiß einer von euch was ich einfügen muss dass in der Datei das ganze ausgegeben wird ?

---

Nun zum nächsten über ein Administrations-Berreich (schon erstellt) möchte ich alle Usernamen der SQL-Datenbank ausgeben lassen und dahinter soll ein kleines symbol für "löschen" wenn man aufs symbol klickt wird der eine User aus der SQL-DB entfernt ohne dass man sich bei MySQL-ACP löschen muss...

Wie ich das mach weiß ich leider auch nicht :(

Ich danke schon mal alle die versuchen mir zu helfen.

Liebe Grüße

Bones

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 07.11.2009 20:39
von Bones van Helghast
Okay die Ausgabe der Tabellen ist erfolgreich gelungen durch selber rumprobieren mit echo ausgaben hats am ende doch geklappt :).

Nun komm ich zum nächsten problem da weiß ich aber echt nicht weiter:

Die Oben genannte Tabelle soll 2 Möglichkeiten der Sortierung haben:

1. Sortieren nach dem Alphabet -> Klickt man auf "Name" wird die Tabelle komplett anderst ausgegeben es sollen nun alle Namen nach dem ABC sortiert ausgegeben werden. Dabei ist aber zu beachten dass der Name mit der ID 1 in der Tabelle ebenfalls auch noch das Datum 1 bekommt.

2. Sortieren nach dem Datum -> Klickt man auf "Datum" soll die Tabelle mit dem ältesten anfangen und das jüngste ganz unten stehen dabei ist auch wieder zu beachten dass der Name mit der ID 1 auch das richtige Datum 1 erhält. das ist nun mein problem wo es echt anfängt zu stocken :(

Des weiteren hab ich noch keine ahnung wie ich das mit dem löschen einzelner Tabellen in der DB lösen kann.

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 08.11.2009 15:50
von Intimus
als totaler anfänger bist du schon etwas weiter als ich, denn ich bin überhaupt ein ahnungsloser. ;-)
aber beim punkt der sortierung kann ich dir helfen (denke ich): es gibt einen eigenen sql-befehl, der die sortierung für dich übernimmt: ORDER BY. du brauchst deine überschriften also nur mit entsprechenden links versehen.
ich hoffe, das hilft dir weiter.

lg intimus

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 08.11.2009 19:27
von Bones van Helghast
Schön dass ich hier nicht einziger Anfänger bin :)
Dann tu ich mir nicht alleine so schwer und andere können nebenbei auch noch was lernen.

Hmn richtig schlau werde ich aus der Seite nicht welche du mir gegeben hast...

Ich weiß nicht wo vorne und hinten is bzw was ich wo einfügen muss um das ganze umsortieren zu lassen :(

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 08.11.2009 23:47
von gn#36
Du kannst im SQL Befehl eine Sortierung vorgeben. Ein Beispiel würde so aussehen:

Code: Alles auswählen

SELECT karlheinz, karlotto FROM tabelle WHERE bedingung = 1 ORDER BY karlheinz ASC
Das sortiert die Daten nach der Spalte karlheinz in aufsteigender Reihenfolge. Du kannst das ganze natürlich auch andersrum sortieren:

Code: Alles auswählen

SELECT karlheinz, karlotto FROM tabelle WHERE bedingung = 1 ORDER BY karlheinz DESC
Oder auch nach mehr als einem Feld (wenn ein Feld gleiche Werte bei mehreren Einträgen haben kann):

Code: Alles auswählen

SELECT karlheinz, karlotto FROM tabelle WHERE bedingung = 1 ORDER BY karlheinz ASC, sekundaeres_feld_zur_sortierung ASC
In diesem Fall wird alles erst nach dem Feld karlheinz sortiert, alles was sich dadurch nicht exakt entscheiden lässt wird dann noch nach der Spalte "sekundaeres_feld_zur_sortierung" sortiert. Wie du siehst darfst du auch nach Spalten sortieren die du gar nicht aus der Datenbank holst. Wenn du Daten ausgibst ist es eigentlich immer sinnvoll ORDER BY zu nutzen um genau definiert zu haben in welcher Reihenfolge die Daten erscheinen, du holst die Daten dann in der gewünschten Reihenfolge aus der Datenbank.

Im Kern musst du also nur einen Link verwenden der dem Skript per $_GET angibt wie zu sortieren ist, dann setzt du die Sortierung per ORDER BY im SQL Befehl um.

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 09.11.2009 16:51
von Bones van Helghast
Hat jemand mal so nen Link zufällig irgendwo abgespeichert und könnte ihn mal als beispiel schicken ? :roll:

Wie ich schon sagte ich bin totaler anfänger...

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 09.11.2009 17:00
von gn#36
Minimalistisches Beispiel (kannst ja mal selbst versuchen nachzuvollziehen):

Code: Alles auswählen

<?php
if(isset($_GET['sort']))
{
$sort = $_GET['sort'] == 'ASC' ? 'ASC' : 'DESC';
}
else
{
$sort = 'ASC';
}

$sql = "SELECT * FROM tabelle ORDER BY sortierfeld $sort";
$result = mysql_query($sql);
...

//Link ausgeben, der genau andersrum sortiert wie bisher:

echo "<a href='dateiname.php?sort=" . ($sort == 'ASC' ? 'DESC' : 'ASC') . "'>Sortierung invertieren</a>";
?>

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 10.11.2009 21:39
von Bones van Helghast
Ich bin am verzweifeln.
Ich habe den code angepasst bin mir aber nicht sicher ob es so richtig ist was ich zusammen gepfuscht habe währe darüber froh wenn mir jemand nochmal drüber schauen könnte und mir sagen könnte was ich falsch gemacht habe bzw den code richtig posten.

Die datenbank verbindung steht (schon durch einen anderen code weiter oben der mir die liste unsortiert ausgibt).
Die tabelle heißt users es soll nun die spalte "datum" sortiert werden
ich hab meinen code so angepasst:

Code: Alles auswählen

<?php
    if(isset($_GET['sort']))
    {
    $sort = $_GET['sort'] == 'ASC' ? 'ASC' : 'DESC';
    }
    else
    {
    $sort = 'ASC';
    }

    $sql = "SELECT * FROM users ORDER BY datum $sort";
    $result = mysql_query($sql);

    //Link ausgeben, der genau andersrum sortiert wie bisher:

    echo "<a href='out.php?sort=" . ($sort == 'ASC' ? 'DESC' : 'ASC') . "'>Sortierung invertieren</a>";
    ?>
ich weiß der fehler wird warscheinlich offensichtlich sein aber für so nen anfänger isses verdammt schwer alleine rauszubekommen was man falsch gemacht hat :(

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 11.11.2009 08:11
von gn#36
Mein Beispiel war natürlich nicht vollständig sondern sollte dir nur grob demonstrieren wie man den Sortier-Link einbringt. :roll:

In deinem Skript fehlt ja die komplette Datenverarbeitung und -ausgabe (symbolisiert durch ... in meinem Beispiel), außerdem fehlt der Aufbau der Datenbankverbindung mit Username, Passwort usw. Das einzige was dein Skript jetzt ausgibt ist ein Sortierlink.
Wie die Verarbeitung genau aussieht hängt ganz davon ab, wie genau die Tabelle aussieht und wie du die Ausgabe realisieren möchtest, ob in Listenform oder als Tabelle oder was auch immer.

Hierzu findest du aber eigentlich ohne Ende Beispiele im Internet, die notwendigen Befehle lauten im einfachsten Fall[php:mysql_connect] [php:mysql_select_db] und [php:mysql_fetch_assoc].
Du kannst das natürlich auch alles über die phpBB Datenbankklasse realisieren, dann musst du die Dateien includes/db/dbal.php und includes/db/mysql.php einbinden und erstellst die Verbindung mit

Code: Alles auswählen

$db = new sql_connect($sqlserver, $sqluser, $sqlpassword, $database)
wobei $sqlserver meist 'localhost' ist. In dem Fall realisierst du das Query über $result = $db->sql_query($sql_befehl); und holst Daten über $db->sql_fetchrow($result);

Die Ausgabe der Daten musst du dann schon selbst realisieren, das geht ganz einfach über [php:echo] und manchmal auch [php:print_r] wenn man es sich einfach machen möchte und keine spezielle Formatierung braucht.

Re: SQL-Datenbank in PHP-Datei ausgeben

Verfasst: 11.11.2009 13:38
von Bones van Helghast

Code: Alles auswählen

<?php
$verbindung = mysql_connect("localhost", "homepage" , "-")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("db_01") or die ("Datenbank konnte nicht ausgewählt werden");

$sql = "SELECT ID, username, datum, rang FROM users";
                
    $result = mysql_query($sql) OR die(mysql_error());
    if(mysql_num_rows($result)) {
        while($row = mysql_fetch_assoc($result)) {
            echo "<table style=width:100%>\n";
            echo "    <tr>\n";
            echo "    <td align=center style=width:33%>\n";
            echo $row['username'];
            echo "    </td>\n";
           	echo "    <td align=center style=width:33%>\n";
            echo $row['rang'];
            echo "    </td>\n";
            echo "    <td align=center style=width:33%>\n";
            echo $row['datum'];
            echo "    </td>\n";
            echo "    </tr>\n";
            echo "</table>\n";
        }
    } else {
        echo"<p>Keine Geburtsdaten vorhanden</p>\n";
    }
    ?>
    
        <?php
    if(isset($_GET['sort']))
    {
    $sort = $_GET['sort'] == 'ASC' ? 'ASC' : 'DESC';
    }
    else
    {
    $sort = 'ASC';
    }

    $sql = "SELECT * FROM users ORDER BY datum $sort";
    $result = mysql_query($sql);

    //Link ausgeben, der genau andersrum sortiert wie bisher:

    echo "<a href='out.php?sort=" . ($sort == 'ASC' ? 'DESC' : 'ASC') . "'>Sortierung invertieren</a>";
    ?>
Das ist bisher alles an PHP in meiner Datei die ich hab.
Wie man sieht der connect zur DB besteht durch die eingabe weiter oben.
Würde nun einer so freundlich sein und den code einfach nur zu ende schreiben Das währe einfach nur klasse :-? die eine Seite die du mir gegeben hast hat anscheinend nen Serverausfall weil die verbinung nicht hergestellt werden kann. :(