Design mit persönlichem Touch!

Mein Notizblock

Hier schreibe ich alle möglichen Dinge auf, die ich mir im Zusammenhang mit Webdesign und sonstigem Design merken möchte. Falls jemand hier was Brauchbares für sich findet, fein! Falls jemand zu einem Thema weitere Vorschläge oder Verbesserungen weiß, nur her damit!

Back
Daten aus DB abfragen und aendern
December 23rd, 2014 11:42 pm
Nun habe ich mir ein kleines Support Tool gebaut und - ich bin völlig hin und weg: es funktioniert. 
 

Zunächst mal die Datenabfrage aus der SQL Datenbank: 

  • Zuerstmal wieder die Datenbank-Verbindung aufbauen und die Datenbank wählen
  • Dann stellt man eine SQL Query, ich hab die in eine Variable gepackt.
  • Info am Rande: im Folgenden Listing zeigen die -...- nur an, was da stehen muß, die -...- gehören nicht zur Anfrage...
 
$variable = "SELECT  -was man haben will, bei mehreren DB Spalten getrennt mit Kommas (vorname, name, auto, ...)- FROM -datenbankname- ";
 
  • Diese Daten kann man auch mit ORDER BY - spaltenname - sortieren lassen, zum Beispiel
  • $Variable enhält nun nur die Anfrage, noch keine Ergebnisse. Die Ergebnisse schreibt man am besten wieder in eine neue Variable: 
$ergebnisse = mysql_query($Variable);
 
  • Also - ich hab mir das jetzt so vorgestellt, dass da jetzt allerdigns noch ein riesiges Chaos herrscht... Will man also nun die Ergebnisse ausgeben, macht man das am besten mit einer Schleife und einer weiteren Variablen... Bspw: 
while ($neueVariable = mysql_fetch_array($ergebnisse)) 
echo $neueVariable['-DB Spalte, die man haben will-'] . "<br>";
}
 
  • Das hier erzeugt jetzt einfach nur eine Ausgabe, geändert hat man so noch nix.... 
 

Daten ändern:

  • Als erstes muß man Daten wählen und ausgeben lassen, die man ändern will. Ich hab das über ein einfaches HTML Formuar gelöst. In der Eingabezeile gebe ich einen Wert an aus einem Datensatz, den ich ändern will. Das ganze übergebe ich mit Hilfe von "post" an eine neue Datei. Das geht bestimmt auch einfacher, aber für mich war das mit copy & paste easy so und die Trennung in eine neue Datei ist auch am Anfang einfacher, denk ich... Zumindest hab ich so den Überblick behalten...
  • Also - ich hab nun in der neuen php Datei einen Wert erhalten, den ich gleich in eine Variable stopfe: 
$eingabe = $_POST["eingabe"];
 
  • dann stell ich wieder eine SQL Anfrage, wie vorher auch und pack die wieder in eine Variable - bspw: 
$texte = "SELECT id, text, headline FROM -Datenbankname- WHERE headline='".$eingabe."'";
 
  • das pack ich wieder in eine ergebnis-Variable, die dann ein Array beinhaltet, mit den Spaltennamen als Feldbezeichner und den Werten aus der Datenbank:
$ergebnis = mysql_query($texte);
 
  • Um das mit der Datenänderung verständlich hinzukriegen, geb ich die Daten in einem Formular aus... Das war gar nicht so einfach... Ich hab mich für folgende Lösung entschieden: 
if ($ergebnis)
{
    while($reihe=mysql_fetch_assoc($ergebnis))
       { 
 über "echo" geb ich nun in der Schleife den Code meines Formulars aus und die Werte aus $reihe gleich mit. Beispielsweise: 
 
echo '<br>';
echo '<form action="-Datei.php-" method="post">';
echo '<table border="0">';
echo '<tr>';
echo '<td><strong>Headline:</strong></td>';
echo '<td colspan="2"><input name="headline" type="text" id="headline" size="90" maxlength="200" value="'.$reihe['text'].'"></td>';
echo '</tr>';
 
usw...
 
  • Was mir zu schaffen gemacht hat, war die Werte richtig einzufügen... daher hier kurz eine Erklärung, wie das für die unterschiedlichen Formular Felder geht: 
  • normales Eingabefeld: - siehe Bsp oben, der value Wert gibt hier den Wert der Variablen aus 
  • Textarea: hier sieht das so aus: 
<textarea name="text" id="text" rows="10" cols="100">'.$reihe['text'].'</textarea>
  • Der Wert kommt also direkt in die Textarea...
  • Eine Drop Down Auswahl: die vorselektiert sein soll: Hier wird's kompliziert, da man jede Option prüfen muß... da ich nicht viele Optionen habe, hab ich das über else/if gelöst - (!das Beispiel passt jetzt nicht mit obiger Anfrage zusammen, es soll lediglich die Struktur zeigen!)
if ($reihe['Option'] == "Optionsname") {
 
echo '<option value="'.$reihe['Option'].'" selected>'.$reihe['Option'].'</option><option>Anderer Optionname</option><option>Noch ein Optionsname</option><option>Sonstiges</option></select></td>';
 
 
else if ($reihe['Option'] == "Anderer Optionsname") {
 
echo '<option>Optionsname</option>'.'<option value="'.$reihe['Option'].'" selected>'.$reihe['Option'].'</option><option>Noch ein Optionsname</option><option>Sonstiges</option></select></td>';
 
 
  • ....hier kommen dann die weiteren else if Anweisungen für die anderen Optionen.... und am Schluß kann man noch eine "else" Anweisung einfügen, wenn man mag. Sollte allerdings auch ohne gehen, wenn ich das aus allem, was ich gelesen habe, richtig interpretiert hab.... 
  • Checkbox: ich hatte nur eine Checkbox Abfrage drin, die auch als Boolean in der DB gespeichert ist. Damit konnt ich hier eine einfache if Abfrage machen: (Beispiel wieder nur zur Veranschaulichung)
if ($reihe['gelesen'] == "1") {
 
echo '<td colspan="2"><input type="checkbox" name="gelesen" checked="checked" value="1"></td>';
 
}
 
else {
 
echo '<td colspan="2"><input type="checkbox" name="gelesen" value="1"></td>';
 
}
 
  • Das war's im Prinzip, ich übergebe das ganze wieder mit "Absenden" an eine neue PHP Datei, nachdem ich alle Daten abgeändert hab.... Wichtig noch zu erwähnen: um den Eintrag der DB zu identifizieren, der upgedated werden soll, hab ich mir die ID ausgeben lassen in meiner Anfrage. Diese ID übergebe ich wieder mit. Ich hab dafür einfach ein Textfeld in dem Formual eingebaut, in das ich die ID schreib... Daten übergebe ich ja hier mit "post" und da ist dann die ID mit dabei... 

Änderungen in DB speichern: 

 
So, fast geschafft...  
 
  • wie gehabt: DB Verbindung herstellen, DB auswählen... Die Post-Daten in Variablen packen, wie bereits hier beschrieben: - also sowas: $text=$_POST["text"];... usw. für alle übertragenen Felder...
  • Dann pack ich mir wieder meine Query in eine Variable:
$aenderung= "UPDATE -Datenbankname- SET text='$text', headline='$headline', ....usw WHERE id='$id'";
  • mit dem WHERE gebe ich also die Bedingung an, welcher DB Eintrag geändert werden soll.... 
$aenderung = mysql_query($aendern) or die(mysql_error());
 
-> FERTIG :)
 

Nützliche Infos: 

Design by Uta Kaemper