Inhalt in DB speichern

smyle

Erfahrenes Mitglied
Hallo ich habe brauche wiedermal eure Hilfe.

Ich habe verschiedene Felder die automatisch bei jedem klick generiert werden. Der inhalt davon müsste ich nun in die DB speichern.
PHP:
if(isset($_POST['save']))
 {
   $sql="DELETE FROM table
		WHERE predicates;";
	mysql_query($sql);
	
	$sql="INSERT INTO table
			(column-1, column-2, ... column-n)
			VALUES
			(value-1, value-2, ... value-n)
			
			INSERT INTO schulnoten
			 (Noten)
			   VALUES
			      ()";
	mysql_query($sql);			
 } 

$SID = "...";  //ID des Fachs
$n = "5";

while($rowNote = mysql_fetch_array($queryNote))
 {
  $note = $rowNote['Note'];
  $gewichtung = $rowNote['Gewichtung'];

  $arraynote[$i++] = $note;					//alle Noten die sich mimentan in der DB befinden
  $arraygewicht[$i++] = $gewichtung;		//alle Gewichtungen aus der DB

 $na =$n++;
													  					  
echo"<input type='text' $desabled size='5' maxlength='5' width='30' value='$note' name='$SID$na' class='decimal'/>";	//Felder werden nach anz. Noten aus DB generiert.
 }																  														
echo"<input type='text' size='5' maxlength='5' width='30' value='' name='".$SID."1' style='visibility:hidden' id='".$SID."1' class='decimal'/>"; //Bei jedem klick eines bestimmten button wird ein neues Feld angezeigt
echo"<input type='text' size='5' maxlength='5' width='30' value='' name='".$SID."2' style='visibility:hidden' id='".$SID."2' class='decimal'/>";
echo"<input type='text' size='5' maxlength='5' width='30' value='' name='".$SID."3' style='visibility:hidden' id='".$SID."3' class='decimal'/>";
echo"<input type='text' size='5' maxlength='5' width='30' value='' name='".$SID."4' style='visibility:hidden' id='".$SID."4' class='decimal'/>";
Da es nun sein kann, das man die werte aus der DB überschreiben möchte, muss ich die neuen Werte in einem neuen array speichern zusammen mit den werten ausserhalb der Schlaufe und die alten mit "delete ... form table....", die alten DB inhalten löschen.

DB Inhalt löschen: (Ich denke das sollte so gehen, hab es noch nicht versucht)
PHP:
   $sql="DELET
			FROM `schulnoten` AS sn, noten_lernende AS nl
			WHERE sn.Semester = '$sem' AND sn.ID = nl.Noten_ID AND nl.Lernende_ID = '$id'";

Meine Fragen sind nun...
- Wie kann ich alle neuen Werte in einem array speichern.
- Wie kann ich das array in meiner DB übernehmen / in die DB speichern.
-Wie kann ich nachdem ich die Noten in der DB abgespeichert habe, derren ID auslesen und diese in einer anderen Tabelle zusammen einer Benutzereide abspeichern?
Tabelle noten und benutzer:
Noten_ID | Benutzer_ID
1 | 1
2 | 1
3 | 1

Kann mir jemand sagen wie ich die drei Punkte machen kann/muss?
 
Zuletzt bearbeitet:
Insert funktioniert nicht

Hi

Könnt ihr mit bestädigen das der folgende Code korrekt ist? Denn es fügt mir immer leere Inhalte in der DB. Obwohl mein Befehl korrekt angezeigt wird:
Hier die echo ausgabe:
INSERT INTO `bericht_unterthemen` (`berichthaupthema_ID`, `Nummer`, `Titel`, `Begruendung`) VALUES ('26', '3', 'Test1', 'Test')
1
und hhier der Code
PHP:
 $beurteilung = "Texte";
 $querytitellernender = hauptteil($beurteilung);
 while($row = mysql_fetch_object($querytitellernender))
{ 
   $haupttitelid = $row->ID;

	for($i=0;$i<5;$i++)
	 {
		  $newNr1 = $_POST["newNr$haupttitelid$i"];
		  $newBK1 = $_POST["newBK$haupttitelid$i"];
		  $newBG1 = $_POST["begruendung$haupttitelid$i"];
		  
			if($newBK1 != "Neuer Eintrag" && $newBK1 != "" && $newBG1 != "")
			 {
			 echo $insert = "INSERT INTO `bericht_unterthemen` 
						   (`berichthaupthema_ID`, `Nummer`, `Titel`, `Begruendung`)  
						  VALUES
						   ('".$haupttitelid."', '".$newNr1."', '".$newBK1."', '".$newBG1."')"; echo"<br>";
			echo   mysql_query($insert); 
			 }
	 }
}

kann mir jemand sagen warum das es nicht funktioniert?

Was vielleicht noch wichtig zu wissen ist, ich habe die echoausgabe in meiner DB eingefüht und ausgeführt. Eins zu eins wie si mir ausgegeben wird. Wenn ich das so mache werden die texte eingefügt.
 
Zuletzt bearbeitet:
Grüße,

zum ersten Beitrag:
1. Wenn du den Eintrag einfach überschreiben möchtest, kannst du auch einfach "UPDATE" benutzen. Du prüfst, ob der Eintrag schon vorhanden ist und veränderst den Wert einfach...viel unkomplizierter als mit Arrays rumzufummeln
2. Meiner Meinung nach, wären 2 Arrays sinnvoll (eines für die Benutzer und eines für die Noten). Danach lässt du eine Schleife durchlaufen, die alle Arrayelemente anspricht und lässt die ausgelesenen Werte in die DB schreiben...

Beispiel:

PHP:
$Benutzer //Stellt ein Array mit den Benutzern dar
$Noten //Stellt ein Array mit den Noten dar

//Wieviele Elemente haben die Arrays
$anzahl = count($Benutzer) //ich beziehe mich hier auf 1 Array, da ich aus deiner Erläuterung schlussfolgere, dass jeder nur 1 Note haben kann

//for-Schleife zum auslesen der Arrays und eintragen in die Datenbank
for($i=0; $i<=$anzahl; $i++) {
	$eintragen = mysqli_query($db, "INSERT INTO test (Benutzer_ID, Noten) VALUES ('$Benutzer[$i]', '$Noten[$i]')");
}

3. Folglich mit einer einfachen Abfrage...

Beispiel:

PHP:
<table>
<?php
$abfrage = mysqli_query($db, "SELECT * FROM test");
while($datensatz = mysql_fetch_array($abfrage)) {
	extract($datensatz);
echo"
<tr>
	<td>$Benutzer_ID</td>
	<td>$Noten</td>
</tr>
";
}
?>
</table>



Weiterhin wirft dein Code mehrere Fragen auf:

PHP:
while($rowNote = mysql_fetch_array($queryNote))
woher kommt in dieser Zeile das $queryNote -> muss ja mal ein SQL-Befehl gewesen sein -> in deinem Code leider nicht erkennbar...

PHP:
echo"<input type='text' $desabled size='5' maxlength='5' width='30' value='$note' name='$SID$na' class='decimal'/>";
das $desabled kann da nicht einfach so rumstehen....

PHP:
$sql="DELETE FROM table WHERE predicates;";  mysql_query($sql);
Wo ist hier die Bedingung zu finden :confused: -> nach predicates kann meines Erachtens nach nicht einfach aufgehört werden -> WHERE predicates = "irgendwas"....

Falls die Antwort nicht deinen Erwartungen entspricht, die Frage einfach nochmal neu formulieren bzw. nochmal detailliert schildern, was du genau machen willst (soll das ein Schulsystem werden oder oder oder).
 
Wenn ich das richtig verstanden habe, ist das nur die Lösung des ersten Prblems. Oder?
Ich bönetige dringend eine Lösung zum zweiten Problem... :( Kannst du mir da auch helfen und erklären weswegen dies nicht funktioniert?

Grüsse
Smyle
 
Wie ist den die Datenbanktabelle aufgebaut? Du schreibst alle Werte als Strings hinein, wäre es möglich das z.B.: berichthaupthema_ID ein numerisches Feld ist?
 
Hmm..

So sieht meine Tabelle aus wenn ich sie aus phpmyadmin in sql exportiere:

SQL:
--
-- Tabellenstruktur für Tabelle `bericht_unterthemen`
--

CREATE TABLE IF NOT EXISTS `bericht_unterthemen` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `berichthaupthema_ID` int(11) NOT NULL,
  `Nummer` float NOT NULL,
  `Titel` varchar(500) NOT NULL,
  `Text` varchar(1500) NOT NULL,
  `Begruendung` varchar(1500) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=192 ;

Es ist seltsam das mein insert befehl nicht funktioniert. den genau das selbe verwende ich an einem anderen Ort und dort funktioniert es:
PHP:
	 $NewNrummer = $_POST['nummerneu'];
	 $NewHaupthema = $_POST['haupttitelneu'];
	 
	 if($NewHaupthema != "" && $NewHaupthema != "Neuer Hauptthema")
	  {
	   $insert = "INSERT INTO `bericht_haupthema` 
					   (`Nummer`, `Titel`, `Beutreilung`)  
					  VALUES
					   ('$NewNrummer', '$NewHaupthema', 'Texte')";
	   mysql_query($insert);
	   $newthemaid = mysql_insert_id();
	   
//---Unterkriterien abspeichern---//
for($i=0;$i<5;$i++)
 {
      $newNr = $_POST["newNr0$i"];
	  $newBK = $_POST["newBK0$i"];
	  $newBG = $_POST["begruendung0$i"];
	  
		if($newBK != "Neuer Eintrag" && $newBG != "")
		 {
		  $insert = "INSERT INTO `bericht_unterthemen` 
					   (`berichthaupthema_ID`, `Nummer`, `Titel`, `Begruendung`)  
					  VALUES
					   ('$newthemaid', '$newNr', '$newBK', '$newBG')";
		   mysql_query($insert); 
 }
		 }
//---Unterkriterien abspeichern ende---//	

	  }
 
 }  
//---Hauptkriterien abspeichern ende---//
Bei diesem Code werden die Inhalte in di DB geschrieben. Beim Problemcode (Zweiter Beitrag) wir zwar eine zeue Zeile in der Tabelle erstellt, jedoch sind die Felder alle leer.
 
Zuletzt bearbeitet von einem Moderator:
Alle bis auf die ID (Primary Key) und berichthaupthema_ID.
Bei der Spalte "Nummer" wird autoamtisch eine 0 gesetzt wenn das Feld leer gelassen wird.

Die Inhalte der einzelnen Textfelder habe ich mir auch ausgeben lassen, trotzdem das die echoausgabe korrekt is. Wird in der DB die Nummer, der Tittel und die Begruendung nicht gespeichert.:

newNr100:1 / newBK100:sdfsdf / begruendung100:sdsdfsdf
INSERT INTO `bericht_unterthemen` (`berichthaupthema_ID`, `Nummer`, `Titel`, `Begruendung`) VALUES ('10', '1', 'sdfsdf', 'sdsdfsdf')
1


Was ich auch noch versucht habe ist, direkt in den INSERT Befehlt, Text einzufügen und diesen durch meine Homepage in die DB zu speichern.
Hat leider auch nicht funktioniert.
 
Zuletzt bearbeitet:
Zurück