Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

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

Achtung BAUM jossif :-)

MFG
BWA

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wieso, hab ich schon wieder was übersehen? ;D

Heute is eh nich mein Tag ...  :'(

Nur ein scherz.

sorry hat sein müssen.

MFG
BWA

Jepp,....

funzt jetzt!

Setzte mir jetzt mal selber die DAU-Kappe auf, stelle mich in die Ecke und schäm´ mich mal ´ne Runde...

Könnte man bite diesen Threat unter einer meter dicken Betonschicht begraben?!

big big thx...

Daddy

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

@Big-Daddy:
Man lernt nie aus, und Fehler macht man auch immer ;)

@BWA:
Kann ich locker vertragen ;D
Nur gestern war bissl der Ofen aus, und ich hätte mir selber jeden Fehler zugetraut, selbst bei solchen Kleinigkeiten ;)

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 einen unkompilierten Programm-Code einer Software. Der Quellcode ist meist in einer der verbreiteten Programmierspra...

Unicode
Ein Unicode ist ein "Einheitsschlüssel", der als internationaler Standard gilt. Unicode ist ein digitaler Zeichensatz zur Darstellung von weitestgehend jedem Schrift...

QR-Code
Die Abkürzung QR steht für "Quick Response" und besteht aus einer quadratischen Matrix mit schwarzen und weißen Punktren. Zudem sind auch Striche zu sehen...