Datenbank Forum - für Anfänger und Profis

Willkommen im Datenbank Forum von Datenbanken-verstehen.de - Das Datenbank, Data Warehouse & Business Intelligence Forum!

Das Datenbank Forum für Anfänger und Profis ist eine Community zu den Themen Datenbanken, Data Warehouse & Business Intelligence. Nimm teil an der Community von Datenbanken-verstehen.de und tausch dich mit deinen Fragen und Lösungen mit anderen Nutzern aus.

Als registrierter Benutzer genießt Du viele Vorteile, wie

  • den vollen Zugang zu allen Foren und Unterforen
  • Kostenloses Lernmaterial inkl. Lösungen zum Thema Datenbanken
  • Zugriff auf DB-Tutorials, Best Practices und SQL-Snippets

Bevor Du einen Beitrag verfassen möchtest, kannst Du dich einfach kostenlos registrieren.

oder Einloggen mit



Beachte bitte die Forenregeln von Datenbanken-verstehen.de. Wir wünschen Dir viel Spaß im Datenbank Forum! - Dein Datenbanken-verstehen.de-Team

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

Alles zur Datenbankentwicklung im MySQL-Umfeld...

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

Beitragvon Konstant » 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: Alles auswählen
//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: Alles auswählen

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!
Konstant
 
Beiträge: 3
Registriert: Do 19. Jan 2017, 14:55

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

Beitragvon SQLUnion » 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
SQLUnion
 
Beiträge: 116
Registriert: Fr 1. Nov 2013, 15:54

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

Beitragvon Konstant » 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.
Konstant
 
Beiträge: 3
Registriert: Do 19. Jan 2017, 14:55

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

Beitragvon SQLUnion » 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
SQLUnion
 
Beiträge: 116
Registriert: Fr 1. Nov 2013, 15:54

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

Beitragvon Konstant » 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: Alles auswählen
<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
Konstant
 
Beiträge: 3
Registriert: Do 19. Jan 2017, 14:55


Zurück zu MySQL

 


  • Related topics
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

  • Jetzt Fan werden
  • Newsletter abonnieren? Hier anmelden!

    Alle Informationen aus dem Portal, Blog und Forum in einem Newsletter!

    E-Mail-Adresse: