Schreiben in MySQL Datenbank über PHP

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Schreiben in MySQL Datenbank über PHP

Postby TheEngineer » 01. February 2006 21:34

Hallo Expertenbemeinde.
Ich habe auf einem Win200 Rechner XAMPP installiert und in MySQL ein paar Datenbanken angelegt.
Nun kann ich über einen ODBC Treiber und Access meine Tabellen auslesen , editieren und beschreiben. So weit so gut.
Nun habe ich mir ein PHP Listenformular erstellt mit dem ich eine Tabelle auslesen kann.
Geht auch.....
ABER ich krieg es nicht hin eine Datenbank über ein php Formular zu beschreiben.
Das erstellte Formular wird 1a dargestellt die Datenbankfelder sind da, ich kann was eintragen... aber es kommt nix in der Datenbank an .

Kann mir da jemand weiterhelfen ?
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 02. February 2006 15:40

Wie willst du denn etwas in deine Datenbank einfügen ?
Was kommt für ein Fehler ?
Wie versuchst du die Variablen Anzusprechen ????
Musst vllt mal ein Beispiel deines UPDATE - Befehls zeigen, dann könnt man vllt weiter helfen.

:roll: :D
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby TheEngineer » 02. February 2006 16:57

Also das einfügen in die Datenbank via verknüpfte Access-Tabell (über ODBC) geht einwandfrei. ich kann auch die Datenbank mit einem Tabellenformular auslesen. Geht auch wunderbar. Nur DAS Eingabeformular geht nicht
Benutzer und Passwort sind "user" Die Datenbank heisse gaestebuch und die Tabelle dort drin eingabe.
Die Formulare erstell ich über NAMO 5.5 hier mal der Code des nicht funktionierenden Eingabeformulares
Im Quellcode fragt er ab ob die Eingabefelder leer sind (if empty)
Aber wenn ich auf übertragen klicke und die Felder leer sind macht er noch nicht mal die Fehlermeldung
Hier mal der Code



<? // Namo WebEditor dbWizard Script.
// Copyright 1999, 2001 Namo Interacive Inc., All Rights Reserved.
// Do not modify this block.

// block_name :
// block_type : page header

// target : Windows, php, MySQL
// page_type : modify
// arg : eingabe.name, string, post, field
// arg : eingabe.text, string, post, field
// arg : processmode, int, post, page

$a_eingabe_name = $eingabe_name;
$a_eingabe_text = $eingabe_text;
$a_processmode = $processmode;

if ($a_processmode != 0) {
$w_checknull = 0;

if (empty($a_eingabe_name)) {
$w_checknull = 1;
echo("eingabe.name is NULL</p>");
}
if (empty($a_eingabe_text)) {
$w_checknull = 1;
echo("eingabe.text is NULL</p>");
}

if ($w_checknull != 0) {
echo("NULL is not allowed.");
exit;
} else {
}
}

$a_eingabe_name = stripslashes($a_eingabe_name);
$a_eingabe_name = str_replace("'", "''", $a_eingabe_name);
$a_eingabe_text = stripslashes($a_eingabe_text);
$a_eingabe_text = str_replace("'", "''", $a_eingabe_text);

require('wed_php_mysql.inc');

// checksum : 43609
?><html>

<head>
<title>eingabe.name(*)</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p>&nbsp;</p>
<? // Namo WebEditor dbWizard Script.
// Copyright 1999, 2001 Namo Interacive Inc., All Rights Reserved.
// Do not modify this block.

// block_name : Eingabe-Formular
// block_type : input

// DataSrcURL : localhost
// DBName : gaestebuch
// server : gaestebuch
// userid : user
// passwd : user
// table : eingabe
// field : eingabe.name, string, not null, 10
// field : eingabe.text, string, not null, 10
// result_url :

if ($a_processmode != 0) {
$w_sqlstr = "INSERT INTO eingabe(text, name) VALUES(" . "'" . $a_eingabe_text . "'" . ", " . "'" . $a_eingabe_name . "'" . ")";

wed_db_process("localhost", "gaestebuch", "user", "user", $w_sqlstr);
echo("Der Eingabeprozess ist vollständig.");
exit;
}

// checksum : 14441
?>
<form method="post">
<table border="1">
<tr>
<td width="485">
<p>eingabe.name(*)</p>
</td>
<td width="485">
<p><? // Namo WebEditor dbWizard Script.
// Copyright 1999, 2001 Namo Interacive Inc., All Rights Reserved.
// Do not modify this block.

// block_name :
// block_type : input str

// arg_name : eingabe.name
// value :
// max_length : 10
// size : 12
// cache : "string"

wed_input_str("eingabe_name", WED_NULL_STR, 10, 12);

// checksum : 59671
?></p>
</td>
</tr>
<tr>
<td width="485">
<p>eingabe.text(*)</p>
</td>
<td width="485">
<p><? // Namo WebEditor dbWizard Script.
// Copyright 1999, 2001 Namo Interacive Inc., All Rights Reserved.
// Do not modify this block.

// block_name :
// block_type : input str

// arg_name : eingabe.text
// value :
// max_length : 10
// size : 12
// cache : "string"

wed_input_str("eingabe_text", WED_NULL_STR, 10, 12);

// checksum : 58958
?></p>
</td>
</tr>
<tr>
<td width="974" colspan="2">
<p><input type="submit"><input type="reset"><input type="hidden" name="processmode" value="2"></p>
</td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</body>

</html>
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 02. February 2006 17:12

Also ich muss dir ehrlich sagen das ich mit der Exteension "'wed_php_mysql.inc'" noch nix zu tun hatte.


Und von "generierten" *.php Seiten halte ich auch nicht viel weil die die "Generatoren" rein schrieben was sie wollen.


Ausserdem solltest du mal versuchen die Variablen die er dir hier übergibt einfach mal "ordentlich" anzusprechen. (sprich $_GET['variablenname'], $_POST['variablenname'],...) wie es auch in dem Manual von PHP beschrieben ist.

Oder du suchst im Forum mal nach "register global".


/// EDIT ///
Hab gerade noc hgesehen das das Formular per "POST" abgeschickt wir und du solltest die Variable
Code: Select all
$processmode
in
Code: Select all
$_POST['processmode']
umwandeln.

Deine "input-felder" sehe ich leider hier nicht ? Aber die solltest du genauso behandeln. wenn du die Methode "POST" überall anwendest.
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby TheEngineer » 02. February 2006 19:36

Dank dir erst mal für dein Posting,
ich fange gerade erst an mit PHP und wolte es mir mit dem Formular einfach machen. Werde deine Tips die Tage mal umsetzen
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

LOG

Postby TheEngineer » 02. February 2006 19:39

Gibt es mein XAMPP ein log wo ich evtl auftretende fehlerhaften verbindungen auslesen kann??
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 03. February 2006 08:20

Naja es gibt unter Apache eine errorlog Datei ...

Oder wie oder was willst du da raus lesen ?
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby TheEngineer » 03. February 2006 08:59

Ich dachte mir, da ja bei mir keinerlei Fehlermeldung erscheint kann ich aus einem LOG und einer bestimmten Fehlermeldung villeicht mehr erfahren wo das Problem in meinem Fall liegt
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 03. February 2006 13:15

Wie schon gesagt .. versuch's mal die variablen ordentlich anzusprechen, denn so wie sie hier gepostet sind sind sie logischerweise LEER.

:roll:
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

sschöne Bilder

Postby TheEngineer » 06. February 2006 22:55

Hallo ich habe mal screenshots meiner setings zusammengesammelt. Villeicht kann mal jemand einen Blick werfen

http://people.freenet.de/server2/meinesetings.PDF
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby andreas0063 » 06. February 2006 23:05

so würde ich die Daten übernehmen

Code: Select all
$name = ($_POST['name']);
$vorname = ($_POST['vorname']);


und so in die DB schreiben

Code: Select all
$query = "INSERT INTO tabelle (name, vorname)
         VALUES '$name', '$vorname')";
         $dummy = mysql_query($query);
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Danek Danke

Postby TheEngineer » 07. February 2006 08:32

Hey Andreas ,
danke für deine Info genau sowas habe ich gesucht. Ich bin zu dem Entschluss gekommen, dass es mit so einem Editor viel zu unübersichtlich ist.
Villeicht kannst du mir noch mal einen Code posten wenn ich die Variable $Variable in die Tabelle "Tabelle" der Datenbank"DB" schreiben will. Wie muss der Code aussehen. Ich kann aus deinem Code nicht richtig ersehen was wozu gehört

Danke Gruß
Engineer
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 07. February 2006 09:06

Es steht doch schon vollständig dort ....



Code: Select all
$query = "INSERT INTO tabelle (name, vorname)
         VALUES '$name', '$vorname')";
         $dummy = mysql_query($query);



schau dich mal hier um. Da kannst du dir die SQL-Syntax mal anschaun.

Wie schon gesagt du musst die Variablen die du mir der methode POST abschickst auch mit POST wieder "auslesen"

also nicht wie hier : FALSCH

Code: Select all
$a_processmode = $processmode;


sondern SO : RICHTIG

Code: Select all
$a_processmode = $_POST['processmode'];
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Langsam wirds

Postby TheEngineer » 07. February 2006 14:09

Hey M3g4Star
erst mal vieln Dank , so langsam steig ich durch. Die Post Methode hab ich geändert und es geht. Nur sind noch die Variablen leer. Aber da bin ich noch dran. uns schau was der Editor da "vermurkst" hat.
Wenn ich anstatt in VALUTES $Variable einfach mal "wert" eingebe dann schreibt er wert auch in meine datenbank

Gruß Engineer
TheEngineer
 
Posts: 25
Joined: 01. February 2006 21:17
Location: Braunschweig

Postby M3g4Star » 07. February 2006 14:35

Nein nicht von POST wegghen sondern bleib ruhig da. Lass das so mit
Code: Select all
<form method="post">


das ist schon OK so ... nur ist der Editor wahrscheinlich mit "register globals = on" geschriben worden und die XAMPP-Version die du hast hat das auf "off" gestellt. So wie es auch ordentlich sein sollte.

Also wie schon gesagt ... Alle Variablen die du mit dem Formular : <form method="post"> bis </form> abschickst müssen auf der Seite wieder mit $_POST['variablenname'] ausgelesen werden.

Dann hast du auch wieder inhalte in den einzelnen Variablen.

Dann funktioniert auch das mit VALUES $variable !

Viel Glück ....

ach so : kleiner Tip ... gleich am Anfang deines Scripts :

Code: Select all
$a_eingabe_name = $eingabe_name;
$a_eingabe_text = $eingabe_text;
$a_processmode = $processmode;


in

Code: Select all
$a_eingabe_name = $_POST['eingabe_name'];
$a_eingabe_text = $_POST['eingabe_text'];
$a_processmode = $_POST['processmode'];


ändern. Dann müsste es wieder gehen.
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Next

Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 8 guests