Switch to full style
Alles zur Datenbankentwicklung im MySQL-Umfeld...
Antwort erstellen

Daten auslesen - zusammenfügen - abspeichern // PHP+SQL

Do 19. Jan 2017, 15:18

Hallo zusammen :D

Nach mehreren Tagen googeln habe ich mich entschieden euch hier die Ohren voll zu "heulen".

Es geht um ein Projekt wo aus einer Tabelle "Tabelle 1" mit dem Primary Key "nr" die Daten in eine Liste generiert wird. Diese Liste wird automatisch bis jetzt mit einer Checkbox ausgestattet.

Code:
//Tabellenstruktur
echo "<center><form action='copynew.php'>";
echo "<table border=0>";
echo "<center><tr><th>Datenbank Nummer</th><th>Kurzbeschreibung</th><th>Aufgabe</th><th>Lösung</th><th>Cr-Datum</th><th>Mod-Datum</th><th>Kategorie</th><th>Kopieren</th></tr></center>";

while($row=mysqli_fetch_array($ergebnis, MYSQLI_NUM))
 {   
   $copy="<input type='checkbox' name='copy[]' value='$row[0]'>"; //Value wird einfach hochgezählt
    array_push($row, $copy);   //fügt die Checkbox an das Ende des Arrays an
   $trow='<tr><td>'.implode('</td><td>', $row).'</td></tr>'; //Array zu String
    echo $trow;
    }

echo "</table>";
echo "<br><input type='submit' value='copy'>";
echo "</form>";


Als nächstes sollen die ausgewählten Datensätze zusammengefasst werden. Das bedeutet das die in Spalten eingetragenen Daten hintereinander gesetzt werden. Bild

Weiterhin soll dies dann in eine andere Tabelle "Tabelle 2" gespeichert werden. Dieser neue Eintrag soll eine neue "nr" bekommen und kein Datensatz überschreiben (INSERT).
Nun das Problem________________________________________________
Ich habe zunächst das Problem das ich keine Ahnung habe wie ich die mit der Zusammenführung umgehen soll, den die Checkboxen geben nur ein Value Wert raus. Ich dachte an
Code:

include_once "login.php";

$nr=mysqli_insert_id($verbindung);

if(isset($_GET['copy']))
 {
    foreach ($_GET['copy'] as $nr)
     {
       $sql="INSERT * INTO aufgabe FROM frage";
        $result = mysqli_query($verbindung,$sql);
     }
     echo "<center>Perfekt!</center>";
 }
 
 else {echo"<center><br>Fehler!</center>";}


Dies klappt aber nicht. :roll: Hat jemand eine Idee? Ich bin auch besorgt das es zu Datenanomalien kommt wenn die Werte(Text von bist zu 300 Zeichen) einfach so zusammengeführt werden. Gerne also auch per Join. :?

Vielen Lieben Dank!

Re: Daten auslesen - zusammenfügen - abspeichern // PHP+SQL

Fr 20. Jan 2017, 18:42

Hallo Konstant,

$sql="INSERT * INTO aufgabe FROM frage";

Das geht leider gar nicht :?

Kannst Du nicht über PHP jede CheckBox ansprechen, den Wert in eine Variable speichern, konkatenieren und dann in die MySQL-Datenbank schreiben?

Du hast natürlich nachher Anomalien im System, da deine Tabelle nicht mehr in der 1. Normalform vorliegen wird. Willst Du das wirklich so implementieren? Welches Ziel verfolgst Du damit?

Kannst Du mir evtl. das Big Picture mal kurz erläutern?

Gruß,
SQLUnion

Re: Daten auslesen - zusammenfügen - abspeichern // PHP+SQL

Fr 20. Jan 2017, 22:01

SQLUnion hat geschrieben:Das geht leider gar nicht :?


Wieso geht das nicht? Meinst du das "*"?

Kannst Du nicht über PHP jede CheckBox ansprechen, den Wert in eine Variable speichern, konkatenieren und dann in die MySQL-Datenbank schreiben?


Also das jede Frage ein definierten Value für die Checkbox bekommt?

Du hast natürlich nachher Anomalien im System, da deine Tabelle nicht mehr in der 1. Normalform vorliegen wird. Willst Du das wirklich so implementieren? Welches Ziel verfolgst Du damit?


Das eigentliche Ziel ist, dass die man Fragen aus der einen Tabelle zusammenklickt und dann daraus in einer anderen Tabelle eine Aufgabe wird (Aufgabe besteht aus mehreren Fragen). Ich hatte an eine Abspeicherung der Primary-Nr. aus der Fragen-Tabelle in die Aufgaben-Tabelle gedacht, sodass per Join immer auch Änderungen an den Fragen in den schon vorhanden Aufgaben sind.

Re: Daten auslesen - zusammenfügen - abspeichern // PHP+SQL

So 22. Jan 2017, 20:00

Konstant hat geschrieben:
SQLUnion hat geschrieben:Das geht leider gar nicht :?


Wieso geht das nicht? Meinst du das "*"?

Weil SQL so nicht tickt... :D

Konstant hat geschrieben:
SQLUnion hat geschrieben:Kannst Du nicht über PHP jede CheckBox ansprechen, den Wert in eine Variable speichern, konkatenieren und dann in die MySQL-Datenbank schreiben?


Also das jede Frage ein definierten Value für die Checkbox bekommt?

Ja, genau. Am besten baust Du dir ein Tabelle, wo ein Datensatz alle Eigenschaften aller aktuellen CheckBoxes repräsentiert.
Mit dem Zusammenfügen von Strings und Co. wirst Du dir nur Ärger ins Datenmodell holen.
Auch das Joinen wird dann später viel leichter.

Ein möglicher Weg wäre:
1. IDs immer von der Datenbank erstellen lassen
2. Überlegen, wie viele Eigenschaften Du per CheckBox abfragen willst.
3. Eine Tabelle bauen, wo jede Checkbox durch eine Spalte repräsentiert wird als z.B. Bit (0 oder 1)
Beispiel: 3 CheckBoxes mit Id, CheckBoxFlag1,CheckBoxFlag2 und CheckBoxFlag3
4. Dann das Lesen und Schreiben implementieren
5. Fertig :D

Re: Daten auslesen - zusammenfügen - abspeichern // PHP+SQL

Mo 23. Jan 2017, 12:59

Ja, genau. Am besten baust Du dir ein Tabelle, wo ein Datensatz alle Eigenschaften aller aktuellen CheckBoxes repräsentiert.


Also meinst du das ich die z.B.
Code:
<input type="checkbox" name="1" value="1">
in die Datenbank mit reinschreiben lasse? Aber wie kann ich dies automatisch erstellen lassen, da beim eintragen einer neuen Frage nicht der Benutzer dies manuell eingeben lassen soll.

Ein möglicher Weg wäre:
1. IDs immer von der Datenbank erstellen lassen
2. Überlegen, wie viele Eigenschaften Du per CheckBox abfragen willst.
3. Eine Tabelle bauen, wo jede Checkbox durch eine Spalte repräsentiert wird als z.B. Bit (0 oder 1)
Beispiel: 3 CheckBoxes mit Id, CheckBoxFlag1,CheckBoxFlag2 und CheckBoxFlag3
4. Dann das Lesen und Schreiben implementieren
5. Fertig :D


1. IDs werden schon automatisch erstellt (auto_increment).
2. abgefragte Eigenschaft ist: ausgewählt ja/nein und zu welcer Frage gehört die Checkbox
3. Checkboxen sollen am Ende oder Anfang einer Zeile und nicht Spalte stehen
Bild
4. klingt so leicht aber zunächst erstmal die ersten Schritte meistern :cry:
5. wäre ich gerne schon :lol: :lol: :lol:

Danke dir schonmal für die ganze Müh :D
Antwort erstellen