2 Abfragen zu 1 verbinden bzw. integrieren

Ich weiß ja nicht was du in deinem Fall eintragen willst aber normalerweise sollte es true oder false eintragen.
 
ich will, das mir in die Datenbank der Tag eingetragen wird also z,B. Montag, Dienstag.....
und das hat es ja auch gemacht, aber dann funktioniert die Abfrage nicht mehr.

in demn momentanigen Zustand funktioniert die Abfrage aber in die Datenbank wird nichts geschrieben.
 
1) Wie hast du die Checkboxen jetzt benannt? Hat jede Checkbox ihren eigenen Namen oder arbeitest du mit der "Array-Lösung"?

2) Gebe mal die SQL-Anweisung die du erstellt per echo ("echo $query2") am Bildschirm aus und schau wie sie dann aussieht bzw. stell die Ausgabe hier rein.

3) Für den Fall das es mit dem Eintragen mal klappt. Du übergibst die Werte einfach so ungeprüft an die Datenbank. Suche mal nach mysql_real_escape_string und lies dir durch was man damit macht.

4) Könnte es daran liegen das du ja nie alle Wochentage markiert hast und in diesem Fall die $_POST-Variable auch keinen Wert liefert.
 
Zuletzt bearbeitet:
Hallo Thomas,
jede checkbox hat einen eigenen Namen, der auch so in der Datenbank abgespeicher werden soll.
Denn der Tag (Montag, Dienstag,...) ist wichtig für das Auslesen der Datenbank.

Hie der Code:
Code:
<?PHP
include "verbindung-zur-db.php";

// Variablen aus dem Forumlar übernehmen
		$land=$_POST['land'];
		$vorname=$_POST["vorname"]; 
                 .
                 .
                 .
               $montag=$_POST["tage[0]"];        // so steht es aktuell auf der Seite aber so wird mir in die Datenbank
               $dienstag=$_POST["tage[1]"];      // nichts übertragen
               $mittwoch=$_POST["tage[2]"]; 
               $donnerstag=$_POST["tage[3]"];
               $freitag=$_POST["tage[4]"];
               $samstag=$_POST["tage[5]"];
               $sonntag=$_POST["tage[6]"];



 $query2="INSERT INTO ResBar
      SET
	  land='$land',
      vorname='$vorname',
       .
       .
      montag='$montag',
      dienstag='$dienstag',
      mittwoch='$mittwoch',
      donnerstag='$donnerstag',
      freitag='$freitag',
      samstag='$samstag',
      sonntag='$sonntag',   
    $result2 = mysql_query($query2); 
    if ($result2)
    { 
     print"<p id=textinhalt>
	 <b>$familienname</b><b> $vorname</b> wurde erfolgreich in die Kundendatei aufgenommen. </p>";
    }
    else
    { 
      print "<p id=textinhalt>
	  Datenbankfehler! Kunde konnte nicht aufgenommen werden!</p>";
    } 
  } 

?>


HTML:
            <label for="ruhetag">Ruhetag:</label>
            <br>
<label for="montag">Mo.</label>
 <input name="tage[]" type="checkbox" id="montag" value="Montag" onClick="chkCheckbox(this.id)" />

    <label for="dienstag">Di.</label>
    <input name="tage[]" type="checkbox" id="dienstag" value="Dienstag" onClick="chkCheckbox(this.id)" />

    <label for="mittwoch">Mi.</label>
    <input name="tage[]" type="checkbox" id="mittwoch" value="Mittwoch" onClick="chkCheckbox(this.id)" />

    <label for="donnerstag">Do.</label>
    <input name="tage[]" type="checkbox"  id="donnerstag" value="Donnerstag" onClick="chkCheckbox(this.id)" />

    <label for="freitag">Fr.</label>
    <input name="tage[]" type="checkbox"  id="freitag" value="Freitag" onClick="chkCheckbox(this.id)" />

    <label for="samstag">Sa.</label>
    <input name="tage[]" type="checkbox"  id="samstag" value="Samstag" onClick="chkCheckbox(this.id)" />

    <label for="sonntag">So.</label>
    <input name="tage[]" type="checkbox"  id="sonntag" value="Sonntag" onClick="chkCheckbox(this.id)" />

Code:
  $mo=$_POST["mo"];    //so hat es schon funktioniert aber die Fehlermeldung ging so nicht
   $di=$_POST["di"];       // jeder Tag wurde, wenn er markiert war, in die Datenbank geschrieben
    $mi=$_POST["mi"];
	 $do=$_POST["do"];
	  $fr=$_POST["fr"];
	   $sa=$_POST["sa"];
	    $so=$_POST["so"];

HTML:
      mo='$mo',
      di='$di',
	  mi='$mi',
	  do='$do',
	  fr='$fr',
	  sa='$sa',
	  so='$so',

 <label for="montag">Mo.</label>
    <input name="mo" type="checkbox" id="montag" value="Montag" onClick="chkCheckbox(this.id)" />

    <label for="dienstag">Di.</label>
    <input name="di" type="checkbox" id="dienstag" value="Dienstag" onClick="chkCheckbox(this.id)" />

    <label for="mittwoch">Mi.</label>
    <input name="mi" type="checkbox" id="mittwoch" value="Mittwoch" onClick="chkCheckbox(this.id)" />

    <label for="donnerstag">Do.</label>
    <input name="do" type="checkbox"  id="donnerstag" value="Donnerstag" onClick="chkCheckbox(this.id)" />

    <label for="freitag">Fr.</label>
    <input name="fr" type="checkbox"  id="freitag" value="Freitag" onClick="chkCheckbox(this.id)" />

    <label for="samstag">Sa.</label>
    <input name="sa" type="checkbox"  id="samstag" value="Samstag" onClick="chkCheckbox(this.id)" />

    <label for="sonntag">So.</label>
    <input name="so" type="checkbox"  id="sonntag" value="Sonntag" onClick="chkCheckbox(this.id)" />



Danke wieder einmal,
Gruß
Rainer
 
Zuletzt bearbeitet:
Hallo Rainer,

du müsstest die SQL-Anweisung so erstellen:

PHP:
<?php
if (isset($_POST["submit"])) {
	$query2 = "INSERT INTO ResBar SET vorname = '" .mysql_real_escape_string($_POST["vorname"]) ."', familienname = '" .mysql_real_escape_string($_POST["familienname"]) ."',";
	$query2 .= "land = '" .mysql_real_escape_string($_POST["land"]) ."'";
	if (isset($_POST["tage"])) {
		if (in_array("Montag", $_POST["tage"])) {
			$query2 .= ", montag = 'Montag'";
		}
		if (in_array("Dienstag", $_POST["tage"])) {
			$query2 .= ", dienstag = 'Dienstag'";
		}
		if (in_array("Mittwoch", $_POST["tage"])) {
			$query2 .= ", mittwoch = 'Mittwoch'";
		}
		if (in_array("Donnerstag", $_POST["tage"])) {
			$query2 .= ", donnerstag = 'Donnerstag'";
		}
		if (in_array("Freitag", $_POST["tage"])) {
			$query2 .= ", freitag = 'Freitag'";
		}
		if (in_array("Samstag", $_POST["tage"])) {
			$query2 .= ", samstag = 'Samstag'";
		}
		if (in_array("Sonntag", $_POST["tage"])) {
			$query2 .= ", sonntag = 'Sonntag'";
		}
	}
	echo $query2;
}
?>

Hier wird zunächst geprüft ob überhaupt ein Tag markiert wurde und dann jeweils dieser Wert in die Anweisung aufgenommen.

Die Checkboxen müsstest du nun aber wieder so benennen:

HTML:
<input name="tage[]" type="checkbox"  id="sonntag" value="Sonntag" onclick="chkCheckbox(this.id)" />

Wobei hendl schon recht hat wenn er schreibt das normalerweise True oder False reichen würde. In der Spalte Montag kann ja nur Montag stehen, gleiches gilt entsprechend für die anderen Spalten.
 
Hallo Thomas,
eine Frage dazu,
weshalb hast du nochmals
$query2 .= "land = '" .mysql_real_escape_string($_POST["land"]) ."'";
geschrieben ? würde es nicht einmal reichen und die anderen so schreiben wie
familienname = '" .mysql_real_escape_string($_POST["familienname"]) ."',"
land = '" .mysql_real_escape_string($_POST["land"]) ."'";

Und so wie du es geschrieben hast sind doch die folgenden Anweisungen überflüssig !?
Code:
// Überpruefen ob der Kunde schon vorhanden ist
  $query1 = "SELECT familienname FROM ResBar WHERE familienname LIKE '$familienname'  and blz LIKE '$blz' and vorname LIKE   '$vorname' and plz LIKE '$plz'"; 
  $result = mysql_query($query1); // Fehlermeldung ausgeben, bzw. Kunden einfuegen
  $num=mysql_NumRows($result); 
  if ($num)
  {
     print "<p id=textinhalt>
	  Kunde schon vorhanden!</p>";
  } 
  else 
  { 
    $query2="INSERT INTO ResBar  // ab hier kommt dann dein Code****?
      SET
	  land='$land',
      vorname='$vorname',
      familienname='$familienname',
      plz='$plz',
       montag='$montag',
       dienstag='$dienstag',
	mittwoch='$mittwoch',
	donnerstag='$donnerstag',
        freitag='$freitag',
	 samstag='$samstag',
	 Sonntag='$sonntag',   
    $result2 = mysql_query($query2);  // und ab hier muss es wieder bleiben
    if ($result2)
    { 
     print"<p id=textinhalt>
	 <b>$familienname</b><b> $vorname</b> wurde erfolgreich in die Kundendatei aufgenommen. </p>";
    }
    else
    { 
      print "<p id=textinhalt>
	  Datenbankfehler! Kunde konnte nicht aufgenommen werden!</p>";
    } 
  } 

?>


Gruß
Rainer
 
Also wenn du in PHP einen oder mehrere Strings verketten willst, nimmst du dazu den Punkt:

PHP:
// zwei verschiedene Variablen können so miteinander verbunden werden
$string1 = "Hallo";
string2 = "Rainer";
echo $string1 ." " .$string2;
// um einer Variablen weiteren Text anzuhängen kannst du es so schreiben
$string = "Hallo";
$string = $string ." Rainer";
// oder eben auch so
$string = "Hallo";
$string .= " Raner";

Nichts anderes habe ich mit "dem Land" in der SQL-Abfrage gemacht. Man kann es auch ohne Unterbrechnung in eine Zeile schreiben aber dann ist es nicht mehr so gut lesbar.

Was ich auch nicht verstehe ist warum du in der ersten "Kontrollabfrage" alles mit LIKE prüfst aber das dann ohne "Joker", dann kannst und solltest du auch mit dem Gleichheitszeichen prüfen.
 
Zurück