Hi(gh)!
Ich versuche mal wieder, eine Datenbank mitsamt PHP-Eingabemaske zum Laufen zu bringen... nichts Großes, gerade mal sieben Tabellen, klappte bis jetzt auf meinem Windows-Laptop ganz gut (bis auf einen 1054er, aber das ist ein anderes Thema), aber dann exportierte ich die Datenbank nach Linux - und jetzt stelle ich fest, dass der Primärschlüsselwert in einer der Tabellen nicht korrekt gefunden wird, obwohl die Suchkriterien stimmen, kommt immer nur 0 raus... am besten, ich gebe euch mal den ganzen Code, angefangen mit dem MySQL-Dump:
-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 09. August 2013 um 13:32
-- Server Version: 5.0.27
-- PHP-Version: 5.2.0
--
-- Datenbank: `schwingungen`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `interpret`
--
CREATE TABLE `interpret` (
`ID` smallint(5) unsigned NOT NULL auto_increment,
`Name` varchar(80) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
--
-- Daten für Tabelle `interpret`
--
INSERT INTO `interpret` VALUES (1, 'Raukes, Dorothea');
INSERT INTO `interpret` VALUES (2, 'The League Unlimited Orchestra');
INSERT INTO `interpret` VALUES (3, 'Tietchens, Asmus');
INSERT INTO `interpret` VALUES (4, 'McCann, Les');
INSERT INTO `interpret` VALUES (5, 'Großkopf, Harald');
INSERT INTO `interpret` VALUES (6, 'Tangerine Dream');
INSERT INTO `interpret` VALUES (7, 'Scholl, Bernd');
INSERT INTO `interpret` VALUES (8, 'Earthstar');
INSERT INTO `interpret` VALUES (9, 'Blenner, Serge');
INSERT INTO `interpret` VALUES (10, 'Pluta, Jürgen');
INSERT INTO `interpret` VALUES (11, 'von Deyen, Adelbert');
INSERT INTO `interpret` VALUES (12, 'Schulze, Klaus');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `sendung`
--
CREATE TABLE `sendung` (
`ID` smallint(5) unsigned NOT NULL auto_increment,
`Datum` date NOT NULL,
`Status` tinyint(1) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Datum` (`Datum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Daten für Tabelle `sendung`
--
INSERT INTO `sendung` VALUES (2, '1984-01-05', 2);
INSERT INTO `sendung` VALUES (3, '1984-01-19', 2);
INSERT INTO `sendung` VALUES (8, '1984-02-02', 2);
INSERT INTO `sendung` VALUES (5, '1984-01-26', 3);
INSERT INTO `sendung` VALUES (7, '1981-12-24', 1);
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `sendung_titel`
--
CREATE TABLE `sendung_titel` (
`ID` smallint(5) unsigned NOT NULL auto_increment,
`Sendung` smallint(5) unsigned NOT NULL,
`Titel` smallint(5) unsigned NOT NULL,
`Position` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
--
-- Daten für Tabelle `sendung_titel`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `status`
--
CREATE TABLE `status` (
`ID` tinyint(3) unsigned NOT NULL auto_increment,
`Bezeichnung` varchar(20) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Bezeichnung` (`Bezeichnung`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
--
-- Daten für Tabelle `status`
--
INSERT INTO `status` VALUES (1, 'Pilotsendung');
INSERT INTO `status` VALUES (2, 'Regulär');
INSERT INTO `status` VALUES (3, 'Irregulär');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `titel`
--
CREATE TABLE `titel` (
`ID` smallint(6) unsigned NOT NULL auto_increment,
`Name` varchar(80) collate utf8_unicode_ci NOT NULL,
`Interpret` smallint(5) unsigned NOT NULL,
`Veroeffentlichung` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`,`Interpret`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
--
-- Daten für Tabelle `titel`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `typ`
--
CREATE TABLE `typ` (
`ID` tinyint(3) unsigned NOT NULL auto_increment,
`Bezeichnung` varchar(20) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Bezeichnung` (`Bezeichnung`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;
--
-- Daten für Tabelle `typ`
--
INSERT INTO `typ` VALUES (1, 'Album');
INSERT INTO `typ` VALUES (2, 'Compilation');
INSERT INTO `typ` VALUES (3, 'Sampler');
INSERT INTO `typ` VALUES (4, 'EP');
INSERT INTO `typ` VALUES (5, 'Single');
INSERT INTO `typ` VALUES (6, 'Maxi-Single');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `veroeffentlichung`
--
CREATE TABLE `veroeffentlichung` (
`ID` smallint(5) unsigned NOT NULL auto_increment,
`Name` varchar(80) collate utf8_unicode_ci NOT NULL,
`Typ` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`,`Typ`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
--
-- Daten für Tabelle `veroeffentlichung`
--
INSERT INTO `veroeffentlichung` VALUES (1, 'Deutsche Wertarbeit', 1);
INSERT INTO `veroeffentlichung` VALUES (2, 'Love And Dancing', 1);
INSERT INTO `veroeffentlichung` VALUES (3, 'In die Nacht', 1);
INSERT INTO `veroeffentlichung` VALUES (4, 'Layers', 1);
INSERT INTO `veroeffentlichung` VALUES (5, 'Synthesist', 1);
INSERT INTO `veroeffentlichung` VALUES (6, 'Logos Live', 1);
INSERT INTO `veroeffentlichung` VALUES (7, 'Tales Of Fantasy', 1);
INSERT INTO `veroeffentlichung` VALUES (8, 'Humans Only', 1);
INSERT INTO `veroeffentlichung` VALUES (9, 'Magazin Frivole', 1);
INSERT INTO `veroeffentlichung` VALUES (10, 'Communication', 1);
INSERT INTO `veroeffentlichung` VALUES (11, 'Planetary', 1);
INSERT INTO `veroeffentlichung` VALUES (12, 'X', 1);
und das PHP-Skript mit dem oben genannten Problem:
<?php
require("head_schwingungen.php");
head("Schwingungen - Dateneingabe: titel");
?>
<body>
<?
require("navbar_schwingungen.php");
?>
<div style="position:absolute; width:74%; top:0px; left:26%; padding-left:5px">
<h2>Schwingungen: Dateneingabe</h2>
<h3>Datentabelle: titel</h3>
<form method="post" action="titel.php">
<table>
<tr>
<td>
<b>Name: </b>
</td>
<td>
<input type="text" name="Name">
</td>
</tr>
<tr>
<td>
<b>Interpret: </b>
</td>
<td>
<select name="Interpret">
<option value="">Interpret auswählen</option>
<?
dbcall();
$query = "SELECT Name FROM interpret ORDER BY Name";
$result = mysql_query($query);
dberror();
while ($row = mysql_fetch_row($result))
{
dberror();
?><option value="<? echo $row[0]; ?>"><? echo $row[0]; ?>
</option><?
}
?>
</select>
</td>
</tr>
<tr>
<td>
<b>Veröffentlichung: </b>
</td>
<td>
<select name="Veroeffentlichung">
<option value="">Veroeffentlichung auswählen</option>
<?
dbcall();
$query = "SELECT veroeffentlichung.Name, typ.Bezeichnung FROM veroeffentlichung, typ WHERE veroeffentlichung.Typ = typ.ID ORDER BY Name";
$result = mysql_query($query);
dberror();
while ($row = mysql_fetch_row($result))
{
dberror();
$opstring = $row[0]." [".$row[1]."]";
?><option value="<? echo $opstring; ?>"><? echo $opstring; ?>
</option><?
}
?>
</select>
</td>
</tr>
</table>
<p>
<input type="submit" value="Daten absenden">
</p>
</form>
<?
$Name = $_POST['Name'];
$Interpret = $_POST['Interpret'];
$Veroeffentlichung = $_POST['Veroeffentlichung'];
if (!$Name || !$Interpret || !$Veroeffentlichung)
echo "Bitte geben Sie einen Titel, einen Interpreten und eine Veröffentlichung ein!<br>";
else
{
dbcall();
$query = "SELECT ID FROM interpret WHERE Name = '".mysql_real_escape_string($Interpret)."'";
$result = mysql_query($query);
dberror();
$row = mysql_fetch_row($result); // interpret.ID
$ids[0] = $row[0];
// echo $ids[0]."<br>";
dbcall();
$Veroeff = explode(" [", $Veroeffentlichung);
$Veroeffentlichung = $Veroeff[0];
$Typ = str_replace("]", "", $Veroeff[1]);
$query = "SELECT ID FROM typ WHERE Bezeichnung = '".mysql_real_escape_string($Typ)."'";
$result = mysql_query($query);
dberror();
$row = mysql_fetch_row($result);
echo $Typ."<br>";
$query = "SELECT ID FROM veroeffentlichung WHERE Name = '".mysql_real_escape_string($Veroeffentlichung)."' AND Typ = '".mysql_real_escape_string($row[0])."'";
$result = mysql_query($result);
dberror();
$row = mysql_fetch_row($result);
echo $Veroeffentlichung."<br>";
echo $row[0]."<br>";
$ids[1] = $row[0];
$query = "INSERT INTO titel (Name, Interpret, Veroeffentlichung) VALUES ('".mysql_real_escape_string($Name)."','".mysql_real_escape_string($ids[0])."','".mysql_real_escape_string($ids[1])."')";
$result = mysql_query($query);
dberror();
echo "Ihre Eingabe war korrekt und wurde in die Datenbank eingetragen!";
$db = mysql_close();
dberror();
}
?>
</div>
<p style="text-align:center; position:absolute; left:26%; width:74%; top:500px">
<a href="titel_kontrolle.php" target="_blank">Kontrollansicht der Tabelle (in neuem Fenster)</a>
</body>
</html>
und noch die inkludierte Datei mit den Funktionen:
<?php
function head($title)
{
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
echo ' "http://www.w3.org/TR/html4/loose.dtd">';
echo '<html>';
echo ' <head>';
echo ' <title>'.$title.'</title>';
echo ' <meta http-equiv="Content-Type" content="text/html; charset=utf8">';
echo ' <style>';
echo ' p { font-size:12px }';
echo ' </style>';
echo ' </head>';
}
function dberror()
{
if (mysql_errno())
{
switch(mysql_errno())
{
case 1062:
die ("Ein Eintrag mit diesen Daten existiert bereits! Bitte korrigieren Sie Ihre Eingabe!<br>");
break;
default:
die (mysql_errno().": ".mysql_error()."<br>");
break;
}
}
}
function dbcall()
{
$db = mysql_connect("localhost", "root", "Menkalinan");
dberror();
$db = mysql_select_db("schwingungen");
dberror();
}
?>
Ich blicke mal wieder nicht mehr durch! Bin ich zu dumm zum Programmieren?!?
Bis bald im Khyberspace!
Yadgar