Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP, MySQL und Datenhandling Probleme

Frage Entwicklung Datenbanken

Mitglied: epole73

epole73 (Level 1) - Jetzt verbinden

03.09.2008, aktualisiert 14:39 Uhr, 5547 Aufrufe, 11 Kommentare

hallo, ich bin im php und mysql bereich absoluter anfänger und habe die aufgabe eine faq datenbank aufzubauen (kein fertigscript) und komme nicht weiter. die funktionen sind denkbar einfach. aber ich habe erst den ersten teil begonnen.

- daten (frage, antwort usw.) per form und php an mysql db übergeben
- daten aus db auslesen und anzeigen
- daten verändern können

die mysql db ist eingerichtet und die zugangsdaten stimmen auch. nun habe ich mich im netz ein wenig umgeschaut und ein script geschrieben. die connection zur db funktioniert, das script scheinbar auch, doch es werden keine daten in der db sichtbar. kann mir jemand helfen? hier der code. vieleicht sieht ja jemand meinen fehler?!

ach ja...ich bekomme beim absenden folgende fehlermeldung:
Notice: Undefined index: Frage in C:\xxx\xxx\xxx\eintrag.php on line 14
Notice: Undefined index: Antwort in C:\xxx\xxx\xxx\eintrag.php on line 15
Notice: Undefined index: Keywords in C:\xxx\xxx\xxx\eintrag.php on line 16
Notice: Undefined index: Bilder in C:\xxx\xxx\xxx\eintrag.php on line 17

index.php
<form action="eintrag.php" method=post>
Frage <br>
<textarea id="Frage" rows=7 cols=50></textarea>
<br>
<br>
Antwort<br>
<textarea id="Antwort" rows=7 cols=50></textarea>
<br>
<br>
Keywords<br>
<input type="Text" size="65" id="Keywords">
<br>
<br>
Bilder<br>
<input type="Text" size="65" id="Bilder">

<input type="submit" value="Send"> <input type="reset" value="Reset">
</form>
eintrag.php
<?php
include 'inc/config.php';
error_reporting(E_ALL);

mysql_connect("$host","$user","$password") or die ("Keine Verbindung");
mysql_select_db("$dbname") or die ("Die Datenbank ist nicht da");

$Frage = $_POST["Frage"];
$Antwort = $_POST["Antwort"];
$Keywords = $_POST["Keywords"];
$Bilder = $_POST["Bilder"];

$eintragen = "INSERT INTO $dbtable VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')";

$eintragen = mysql_query($eintragen);
?>
config.php
<?php
$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$dbtable = "faq";
?>
Mitglied: bytecounter
03.09.2008 um 11:02 Uhr
Hallo,

was steht denn in den Zeilen 14-17 von Eintrag.php. Wenn ich mir den Code hier anschaue, existieren diese Zeilen nur zum Teil.

Aber ich vermute den Fehler in HTML: Das Array $_POST dürfte leer sein, da Deine Formularfelder keine Bezeichnungen haben.

vg
Bytecounter
Bitte warten ..
Mitglied: epole73
03.09.2008 um 12:09 Uhr
dem ist leider nicht so, alles schön benannt.

<form action="eintrag.php" method=post>
Frage <br>
<textarea name="Frage" rows=7 cols=50 title="Frage"></textarea>
<br>
<br>
Antwort<br>
<textarea name="Antwort" rows=7 cols=50 title="Antwort"></textarea>
<br>
<br>
Keywords<br>
<input type="Text" size="65" name="Keywords" title="Keywords">
<br>
<br>
Bilder<br>
<input type="Text" size="65" name="Bilder" title="Bilder">

<input type="submit" value="Send"> <input type="reset" value="Reset">
</form>
Bitte warten ..
Mitglied: epole73
03.09.2008 um 12:11 Uhr
den fehler konnte ich beheben, nun werden die daten auch scheinbar übergeben, allerdings bleibt die datenbank immernoch leer.
Bitte warten ..
Mitglied: bytecounter
03.09.2008 um 12:37 Uhr
In Deinem ersten Posting hatten die Formularfelder nur eine ID, keinen Namen.

Erhälst Du eine Fehlermeldung?

Was gibt denn folgender Code aus:
01.
<?php 
02.
include 'inc/config.php'; 
03.
error_reporting(E_ALL); 
04.
 
05.
mysql_connect("$host","$user","$password") or die ("Keine Verbindung"); 
06.
mysql_select_db("$dbname") or die ("Die Datenbank ist nicht da"); 
07.
 
08.
$Frage = $_POST["Frage"]; 
09.
$Antwort = $_POST["Antwort"]; 
10.
$Keywords = $_POST["Keywords"]; 
11.
$Bilder = $_POST["Bilder"]; 
12.
 
13.
$eintragen = "INSERT INTO $dbtable VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')"; 
14.
 
15.
// SQL Query nur anzeigen 
16.
echo $eintragen; 
17.
//$eintragen = mysql_query($eintragen); 
18.
?> 
Er zeigt Dir die Query, die an die DB geschickt werden soll an, gibt sie aber nicht an die DB weiter.
Bitte warten ..
Mitglied: Arano
03.09.2008 um 12:39 Uhr
Moin,

wie ist denn deine Datenbanktabelle strukturiert ?
Sind: "Frage", "Antwort", "Keywords", "Bilder" alle deine Spalten ?

Ich habe mir mal erlaubt deinen Quelltext etwas zu erweitern:
01.
<?php 
02.
include 'inc/config.php'
03.
error_reporting(E_ALL); 
04.
 
05.
mysql_connect($host,$user,$password) or die ('Keine Verbindung'); 
06.
mysql_select_db($dbname) or die ('Die Datenbank ist nicht da'); 
07.
 
08.
// Array zum Speichern der Felder die nicht korrekt ausgefuellt wurden. 
09.
$errorFields = array(); 
10.
 
11.
// Eingaben vor ueberpruefung, wurden die Felder ausgefuellt und bestehen sie nicht aus leerzeichen 
12.
// isset() = wurde das Feld uebertragen (ausgefuellt) 
13.
// trim() entfernt alle leerzeichen am Anfang und Ende der Zeichenkette 
14.
// bedingung ? wahr : falsch     <- eine kurzform von if(){}else{} 
15.
$Frage    = isset($_POST['Frage'])    && trim($_POST['Frage'])!=""    ? $_POST['Frage']    : NULL; 
16.
$Antwort  = isset($_POST['Antwort'])  && trim($_POST['Antwort'])!=""  ? $_POST['Antwort']  : NULL; 
17.
$Keywords = isset($_POST['Keywords']) && trim($_POST['Keywords'])!="" ? $_POST['Keywords'] : NULL; 
18.
$Bilder   = isset($_POST['Bilder'])   && trim($_POST['Bilder'])!=""   ? $_POST['Bilder']   : NULL; 
19.
 
20.
// Detailiertere pruefung der Eingaben 
21.
// Wenn unzureichend wird der Name (o.Titel) des Feldes in das Array $errorFields gespeichert 
22.
if(is_null($Frage)    || strlen($Frage)<3    || strlen($Frage)>100)    $errorFields[] = 'Frage'
23.
if(is_null($Antwort)  || strlen($Antwort)<3  || strlen($Antwort)>100)  $errorFields[] = 'Antwort'
24.
if(is_null($Keywords) || strlen($Keywords)<3 || strlen($Keywords)>100) $errorFields[] = 'Keywords'
25.
if(is_null($Bilder)   || strlen($Bilder)<3   || strlen($Bilder)>100)   $errorFields[] = 'Bilder'
26.
 
27.
// Gab es einen Fehler bei den Eingaben ? 
28.
if(empty($errorFields)){ 
29.
      // Es gabe keine Fehler bei den Eingabedaten - Mach weiter... 
30.
      // Queery zusammensetzen 
31.
      $query  = "INSERT INTO `$dbtable
32.
                             (`Frage`,`Antwort`,`Keys`,`Bilder`) 
33.
                      VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')"; 
34.
      // Query an Datenbank schicken. Das @ unterdruekt die Fehlermeldungen die wir ja eine Zeile spaeter selber pruefen. 
35.
      $result = @mysql_query($query); 
36.
      // Antwort ueberpruefen 
37.
      if($result===TRUE){ 
38.
            echo 'Alles erfolgreich eingetragen !<br>'
39.
      } else
40.
            echo 'Es gab einen Fehler beim eintragen in die Datenbank: #'.mysql_errno().'<br>'.mysql_error().'<br>'
41.
42.
} else
43.
      // Fehler bei den Eingabedaten - Stoppe ! 
44.
      echo 'Die Felder "'.implode('", "',$errorFields).'" wurden nicht korrekt ausgef&uuml;llt !<br> 
45.
            <a href="./index.php" title="zum Eingabeformular">zur&uuml;ck zum Eingabeformular</a><br>'; 
46.
47.
?>
Gruß Arano
Bitte warten ..
Mitglied: epole73
03.09.2008 um 13:29 Uhr
folgendes gibt er nun aus, trägt aber nix in die db ein:

INSERT INTO faq VALUES ('test', 'test', 'test', 'test')
Bitte warten ..
Mitglied: epole73
03.09.2008 um 13:41 Uhr
hier meine db:

CREATE TABLE `faq` (
`ID` int(11) NOT NULL,
`Frage` text collate latin1_general_ci NOT NULL,
`Antwort` text collate latin1_general_ci NOT NULL,
`Keywords` varchar(100) collate latin1_general_ci NOT NULL,
`Bilder` varchar(100) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

werde mich jetzt mal durch deinen netten eintrag arbeiten ;)
Bitte warten ..
Mitglied: bytecounter
03.09.2008 um 14:05 Uhr
Also was mir so auffällt:
ID sollte autoincrement sein.

Ich halte es auch für besser, immer die Feldnamen mit zu übergeben, wie es in den Beispiel von Arano ist.
Bitte warten ..
Mitglied: epole73
03.09.2008 um 14:06 Uhr
nach eingabe des scriptes bekomme ich nun folgenden fehler:

Es gab einen Fehler beim eintragen in die Datenbank: #1054
Unknown column 'Keys' in 'field list'
Bitte warten ..
Mitglied: epole73
03.09.2008 um 14:22 Uhr
HEJ...auf einmal läuft es...na dann muss ich jetzt mal nachvollziehen was Arano da gebaut hat...und dann werde ich mich bestimmt wieder melden wenn es darum geht die daten aus der db auszugeben und verändern zu können. aber vieleicht schaffe ich es ja auch mal selbst. ganz lieben dank!
Bitte warten ..
Mitglied: epole73
03.09.2008 um 14:39 Uhr
ok, es funktioniert! top klasse und danke für die tipps.
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

PHP
gelöst PHP-MySQL - mysqli liefert einen Datensatz zu wenig (3)

Frage von Windows-Spieler zum Thema PHP ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...