Forum
Tipps
News
Menu-Icon

MySQL Abfrage --> INSERT

Folgender MySQL Befehl funzt irgendwie nit, kann mir da mal jemand nen Tip geben?!

INSERT INTO `plan` ( `id` , `zeit` , `Montag` , `Dienstag` , `Mittwoch` , `Donnerstag` , `Freitag` , `Samstag` , `Sonntag` )
VALUES (
'', NULL , NULL , 'Jan', NULL , NULL , NULL , NULL , NULL
)
WHERE `id` = 1;

Fehler angeblich bei der "Where 'id' = 1" - Geschichte.

Danke bereits jetzt!

Gruss

Daddy

Antworten zu MySQL Abfrage --> INSERT:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Bitte ma die Struktur der Tabelle dazu posten.

Generell: Wenn ID auf auto-increment steht (was meist so sein sollte), dann brauchst du das beim Insert nicht berücksichtigen. Und erst recht nicht, wenn du auf einen Record per ID verweist. Du kannst nicht eine ID neu setzen, auf deren Basis du einen Record ansprichst.
Und die ganzen Hochkommata bei den Spaltennamen kannste (musste?) auch weglassen.

greez 8)
JoSsiF

DB Struktur -->

id | zeit | Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
int | time | varchar | varchar | varchar | varchar | varchar | varchar | varchar |

Soll ein Sendeplan werden....

Ich habe ein Formular geschrieben, in dem man per <SELECT> einen Tag und eine Zeit auswählen kann.
Zusätzlich muss der User noch seinen Nickname eingeben.

Dieser Nickname soll dann zu der gewählten Zeit und am gewählten Tag eingetragen werden.

Zum Beispiel so...

<?php
$sql_insert_sonntag 
"INSERT INTO plan ( &#39;id&#39; , &#39;Montag&#39; , &#39;Dienstag&#39; , &#39;Mittwoch&#39; , &#39;Donnerstag&#39; , &#39;Freitag&#39; , &#39;Samstag&#39; ,
&#39;Sonntag&#39; )
VALUES (
&#39;&#39;, NULL , NULL , NULL , NULL , NULL , NULL , &#39;
$_POST[user]&#39;
) WHERE id = 
$_POST[zeit]or die ("Konnte Datensatz am $_POST[tag] nicht einfügen");
?>



ID geht von 1-9 1 steht für 20:00:00 und 9 für 24:00:00
« Letzte Änderung: 27.04.06, 21:55:39 von Big-Daddy »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also das bereits Gesagte mal umsetzen. Interessant wäre noch, ob die Felder, für die du NULL einträgst, auch NULL sein dürfen.

greez 8)
JoSsiF

Poste mal den Code des Formulars, zum besseren Verständnis...

<?php
include "sql_inc.php";
include 
"db_inc.php";

$result_ausgabe mysql_query($sql);


$connect or die ("Fehler: MySQL Verbindung nicht möglich!");
$db or die ("Verbindung zur Datenbank nicht möglich!");
$result_ausgabe or die ("Fehler!");

mysql_close($connect);

echo 
"<form action=&#39;plan.php&#39; method=&#39;post&#39;>
  Nickname:
  <br>
  <input type=&#39;text&#39; name=&#39;user&#39; width=&#39;150&#39;><br>
  <select name=&#39;tag&#39;>
  <option value=&#39;1&#39;>Montag</option>
  <option value=&#39;2&#39;>Dienstag</option>
  <option value=&#39;3&#39;>Mittwoch</option>
  <option value=&#39;4&#39;>Donnerstag</option>
  <option value=&#39;5&#39;>Freitag</option>
  <option value=&#39;6&#39;>Samstag</option>
  <option value=&#39;7&#39;>Sonntag</option>
  </select>
  <select name=&#39;zeit&#39;>
  <option value=&#39;1&#39;>20:00</option>
  <option value=&#39;2&#39;>20:30</option>
  <option value=&#39;3&#39;>21:00</option>
  <option value=&#39;4&#39;>21:30</option>
  <option value=&#39;5&#39;>22:00</option>
  <option value=&#39;6&#39;>22:30</option>
  <option value=&#39;7&#39;>23:00</option>
  <option value=&#39;8&#39;>23:30</option>
  <option value=&#39;9&#39;>00:00</option>
  </select>
  <input style=&#39;background: transparent; border: 0;&#39; type=&#39;submit&#39; value=&#39;Reservieren&#39;>
  <br>
  <table cellspacing=&#39;10&#39; align=&#39;left&#39;>
  <tr>
  <td></td>
  <td>Montag</td>
  <td>Dienstag</td>
  <td>Mittwoch</td>
  <td>Donnerstag</td>
  <td>Freitag</td>
  <td>Samstag</td>
  <td>Sonntag</td></tr>
  <tr>
  "
;

echo 
$_POST[tag];  //Nur zum Test
echo $_POST[zeit];  //Nur zum Test

while($row mysql_fetch_row($result_ausgabe)) {


echo  "</tr>
  <tr><td>"
.$row[1]."</td>
  <td></td>
  <td>"
.$row[2]."</td>
  <td>"
.$row[3]."</td>
  <td>"
.$row[4]."</td>
  <td>"
.$row[5]."</td>
  <td>"
.$row[6]."</td>
  <td>"
.$row[7]."</td>
  </tr>"
;

$i $i+30;
}

if (
$_POST[submit]) {
switch($_POST[tag])
{
case 1:
if ($sql_insert_montag or die ("Fehler: Konnte Datensatz nicht schreiben"))
break;
case 2:
$sql_insert_dienstag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
case 3:
$sql_insert_mittwoch or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
case 4:
$sql_insert_donnerstag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
case 5:
$sql_insert_freitag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
case 6:
$sql_insert_samstag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
case 7:
$sql_insert_sonntag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;
}
}
?>


Schreibt nix rein kommt aber auch keine meiner or die Fehlermeldungen....

K.A. woran das liegt.

P.S. Ja, die sind für NULL ausgelegt...

thx

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Uuuund ich sag's nochmal: erstma das bereits Gesagte umsetzen, dann sehen wir weiter ;)

Sorry wenn ich mich ´n Bischen blöde anstelle (schon 1-2 Bierchen  ;) ), aber ich raff momentan nicht ganz, was Du mit records meinst?!

Wenn ich zum Beispiel am Dienstag um 22:00 meinen Nick posten möchte, dann muss ich in die Spalte Dienstag meiner Tabelle, an id 2 die ?_POST[variable] einfügen.

Also muss ich doch mit WHERE arbeiten oder nicht....?!?!?  ??? :-\

QUASI

INSERT INTO plan ('Dienstag') VALUES ('Nickname') WHERE id = 2;

oder habe ich da grundsätzliche Missverständnisse?!

Danke für Deine Geduld!

Habsch dann bei Die auch mal, wenn nötig  ;)

Daddy

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 ;D mach dir ma keine Sorgen, mein 2. Bierchen is grad alle geworden ;)

Es ist natürlich korrekt, mit der WHERE-Klausel zu arbeiten. Du darfst nur nich im selben Augenblick versuchen, einen Wert für die gleiche Spalte neu zu setzen. Heißt: id aus der Liste der zu setzenden Spalten raus!

Und: nimm die Hochkommata bei den Spaltennamen wech. Hab das vorhin extra nochma über phpmyadmin exemplarisch geprüft: das funzt nich!

greez 8)
JoSsiF

Ich krieg n Affen.....  ::)

INSERT INTO plan( Montag )
VALUES (
'Hallo'
)
WHERE zeit = '00:00:00';

Gibt folgenden Fehler aus,

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE zeit = '00:00:00'' at line 1

Ohne Where klappts....

Habe es auch schon ohne '' mit "" und ganz ohne versucht, nix klappt......

AAArrgh...

Muss noch n Bierchen aufmachen  ;D
INSERT INTO plan( Montag )
VALUES (
'Hallo'
)
WHERE id = 1;

Das gleiche...

Mache für heute erst mal schluss, keine Nervern und keine Bier mehr....  ;)

Wenn noch ´ne Idee da is einfach posten...

xtra big thx!

Daddy

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das is mir aber auch schleierhaft... *Bieraufmach*

Würde sagen wir machen das so: schicke mir einfach einen Dump deiner DB (von mir aus ohne Daten, falls die sensibel sind) per PM, und dann check ich das ma ab...mir fehlen sonst zu viele Infos zur Struktur :)

greez 8)
JoSsiF

Werd ich heute abend mal machen...

THX!!!

Daddy

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi Big-Daddy!

Meine Güte, den Thread darf sich echt keiner durchlesen, das is ja peinlich. Hab den Wald vor lauter Bäumen nicht gesehen:

Wenn du einen Datensatz aktualisieren willst (also einen, den es schon gibt und den du mit der id ansprichst), dann geht das logischerweise _nicht_ mit INSERT (das is nur für neue Datensätze), sondern mit UPDATE. Beispiel:

UPDATE plan SET Montag='Hallo' WHERE id = 1;

greez 8)
JoSsiF

Stimmt...   :-[

Das is peinlich, sorry!

Nichts desto trotz funzt es leider immer noch nicht... ???

PHPMyAdmin nimmt die SQL an, aber in PHP wird es nicht ausgeführt...

if ($_POST[submit]) {
switch($_POST[tag])
{
case 1:
echo "Bin in Case 1";
$sql_insert_montag or die ("Fehler: Konnte Datensatz nicht schreiben");
break;

Mein echo wird auch ausgegeben, jedoch bekomme ich nicht mal meine or die Fehlermeldung...

So sieht meine Testsql aus...

$sql_insert_montag = "UPDATE plan SET Montag='blabla' WHERE id=2";

Ich raff es einfach nicht...

Big thx an JoSsif, für die bisherige Geduld und Hilfe!!!

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Öhm, is klar warum :)

Hast zwar 'ne schöne Query gebaut, aber du solltest schon noch PHP mitteilen, dass es diese an den MySQL-Server schicken soll:

$result = mysql_query($sql_insert_montag) or die ("Fehler: Konnte Datensatz nicht schreiben");

greez 8)
JoSsiF

« Domain nicht im Internet abrufbarFirefox und IE »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...