hilfdirselbst.ch
Facebook Twitter gamper-media
jobst1111
Beiträge: 5
7. Sep 2002, 15:38
Beitrag #1 von 8
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP



Hallo ! ;-)


Ich habe hier ein kleines Problem. Ich bin mit PHP und MySQL noch ganz neu. ... Sicher ist das hier nur ein sehr kleines Problem .
Vielleicht kann mir ja jemand helfen.

Es handelt sich um ein einfaches in PHP geschriebenes Gästebuch.
Die Daten werden auf 'sign.php' eingegeben :


<?php include ("dbconnect.php"); ?>
<h2>Signieren Sie mein Gästebuch !!!</h2>
<form method=post action="create_entry.php">
<b>Name:</b>
<input type=text size=40 name=name>
<br>
<b>Ort:</b>
<input type=text size=40 name=ort>
<br>
<b>E-Mail:</b>
<input type=text size=40 name=email>
<br>
<b>URL:</b>
<input type=text size=40 name=url>
<br>
<b>Kommentar:</b>
<textarea name=kommentar cols=40 rows=4 wrap=virtual></textarea>
<br>
<input type=submit name=submit value="submit">
<input type=reset name=reset value="Löschen">
</form>


Es sollte dann 'create_entry.php' die Daten in MySQL einfügen :


<?php include("dbconnect.php"); ?>
<?php

if ($submit == "submit")
{
$query = "insert into gaestebuch "
." (name,ort,email,url,kommentar) values "
."('$name', '$ort', '$email', '$url', '$kommentar')"
;
//mysql_query($query);
safe_query($query);
echo mysql_error();
?>
<h2>Danke!!</h2>
<h2><a href="view.php">Sehen Sie mein Gästebuch an!!!</a></h2>
<?php
}
else
{
echo mysql_error();
include("sign.php");
}
?>


Das Problem ist, daß sich einfach keine Daten in die Datenbank einfügen lassen.
Dagegen funktioniert die Ausgabe mittels z.B.:"select * from ..." anstandslos.Nur funktioniert die "insert"-anweisung nicht, es werden keine Daten in die Datenbank eingefügt.
Es könnte sich nun um einen Fehler im PHP-Script handeln, ich vermute mittlerweile aber eher, daß es sich hier um das altbekannte Problem der Benutzerrechte handelt ....Benutze ich die Datenbank "test" samt tabellen tut sich nichts und es gibt auch keine Fehlermeldungen.
Nun habe ich mich unter
mysql_connect("localhost", "jobst@localhost" , "")- als jobst@localhost (ohne Passwort) versucht einzuloggen. MySQL habe ich die Anweisung "grant all on *.* to jobst@localhost" gegeben. Auf jeden Fall müßte ich nun doch als jobst@localhost auch auf andere Datenbanken als die "test"-Datenbank Zugriff haben ?

Versuche ich nun das PHP-Script für die Datenbank 'gaestebuch' auzuführen, erhalte ich die Fehlermeldung :
"Access denied for user: '@localhost' to database 'gaestebuch'"
(weshalb erhalte ich die Fehlermeldung für @localhost und nicht für jobst@localhost ?).
Hat hier jemand eine Ahnung wie oder wo ich etwas verändern muß um von meinem PHP-Script aus in die Datenbank schreiben zu können ?

Vielen Dank im Voraus für Eure Hilfe,

Grüße, Jobst ;-)
Top
 
X
Miro Dietiker
Beiträge: 699
8. Sep 2002, 00:30
Beitrag #2 von 8
Beitrag ID: #10891
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Schon mal nachgeschaut, ob die Dateien der Datenbank fälschlicherweise das Attribut "W" (Schreiben) deaktiviert haben??
(Im Explorer nachschauen...)

http://www.hilfdirselbst.ch/...15&topic_id=2032

GR: MDi
als Antwort auf: [#10881] Top
 
Anonym
Beiträge: 22827
8. Sep 2002, 08:35
Beitrag #3 von 8
Beitrag ID: #10895
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Hallo und besten Dank für die Antwort ! ;-)

Was genau meinst Du mit 'im Explorer nachschauen' ?
Meinst Du den Browser ? Also wenn Du das meinst, - ich arbeite unter Linux.
Die Idee klingt sehr gut mit den deaktivierten Schreibrechten. Das Problem habe ich aber nur vom PHP-Script aus ...
Von der Konsole kann ich mittels 'Insert' Daten in die Datenbank eingeben.
Kannst Du mit genauer sagen welche Datei es wäre die ich auf ihre Schreibrechte zu untersuchen hätte ?

Grüße, Jobst ;-)
als Antwort auf: [#10881] Top
 
Miro Dietiker
Beiträge: 699
9. Sep 2002, 00:38
Beitrag #4 von 8
Beitrag ID: #10916
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Der Link nicht einfachso, sondern da wurde das Thema "read only"
bereits kurz und bündig besprochen (incl. Pfad zu den Files!) .)

In Deinem Falle aber wird dies sicher nicht das Problem sein und
ich frage mich sehr was es wohl sein könnte, denn deine Beschreibung
kommt mir wirklich seltsam vor - Sorry

Bleib dran! Miro
als Antwort auf: [#10881] Top
 
Anonym
Beiträge: 22827
9. Sep 2002, 08:43
Beitrag #5 von 8
Beitrag ID: #10921
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Hallo Miro !

Ich denke langsam komme ich der Lösung des Problems näher ... ;-)

Ich habe wieder ein paar Sachen zur Problemlösung probiert.
Für den Benutzername habe ich 'root' und auch 'jobst' probiert. Beides wurde angenommen. Aber ohne Erfolg.
Dann habe ich die Variablen-Kennzeichnung
$_POST['$name'] = $name; umgedreht zu
$name = $_POST['$name'];
Auch das wird angenommen, aber ohne Erfolg.

Die Fehlermeldung habe ich eingefügt. Es werden aber keine Fehler beim Ausführen angezeigt.
Dabei kam mir Idee innerhalb der SQL-Anfrage einfach mal imaginäre Sachen reinzuschreiben - wie es dann so mit den Fehlermeldungen aussieht ........
Und siehe da :
Ich kann den größten Unsin
n reinschreiben und es gibt keine Fehlermeldungen !!!!!!!!!!!!!!!!!!!!!
Eigenartig dabei ist daß dies nur bei 'create_entry.php' so der Fall ist. Beim funktionierenden Script 'view.php! (siehe weiter unten) zum Anzeigen des Tabellen-Inhalts kann ich keine Fehler einbauen. Dort werden sie sofort erkannt .....

O.k., wie gesagt, den Inhalt einer Tabelle kann ich mir anzeigen lassen. Dieses Script funktioniert dabei ohne Probleme :

'view.php' :

<?php include("dbconnect.php"); ?>

<h2>Gästebuch!!</h2>

<?php

$result = mysql_query("select * from gaestebuch") or die ("Fehler");
if ($result)
{
while ($row = mysql_fetch_array($result))
{
print "<b>Name:</b>";
print $row["name"];
print "<br>\n";
print "<b>Ort:</b>";
print $row["ort"];
print "<br>\n";
print "<b>E-Mail:</b>";
print $row["email"];
print "<br>\n";
print "<b>URL:</b>";
print $row["url"];
print "<br>\n";
print "<b>Kommentar:</b>";
print $row["kommentar"];
print "<br>\n";
print "<br>\n";
print "<br>\n";
}
mysql_free_result($result);
}
?>
<h2><a href="sign.php">Signieren Sie mein Gästebuch!!</a></h2>

Das Problem liegt dann wohl eher irgendwo hier in diesen beiden Scripten über die die Daten per 'INSERT' in die Datenbank eingefügt werden sollen :


'sign.php' :


<?php include ("dbconnect.php"); ?>

<h2>Signieren Sie mein Gästebuch !!!</h2>

<form method=post action="create_entry.php">

<b>Name:</b>
<input type=text size=40 name=name>
<br>
<b>Ort:</b>
<input type=text size=40 name=ort>
<br>
<b>E-Mail:</b>
<input type=text size=40 name=email>
<br>
<b>URL:</b>
<input type=text size=40 name=url>
<br>
<b>Kommentar:</b>
<textarea name=kommentar cols=40 rows=4 wrap=virtual></textarea>
<br>

<input type=submit name=submit value="Signieren!">
<input type=reset name=reset value="Löschen">
</form>



und 'create_entry.php' :



<?php include("dbconnect.php"); ?>
<?php

if ($submit == "submit")
{

$name = $_POST['name'];
$ort = $_POST['ort'];
$email = $_POST['email'];
$kommentar = $_POST['kommentar'];


$query = "insert into gaestebuch "
." (name,ort,email,url,kommentar) values "
."('$name', '$ort', '$email', '$url', '$kommentar')"
;
mysql_query($query)
or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
?>
<h2>Danke!!</h2>
<h2><a href="view.php">Sehen Sie mein Gästebuch an!!!</a></h2>
<?php
}
else
{
include("sign.php");
}
?>


So, also daß keine Fehlermeldungen angezeigt werden, gibt ja vielleicht noch einen Hoffnungsschimmer ;-)


Erst mal bis dann,

Grüße, Jobst ;-) ;-) ;-)

als Antwort auf: [#10881] Top
 
jobst1111
Beiträge: 5
11. Sep 2002, 15:56
Beitrag #6 von 8
Beitrag ID: #11102
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Hallo Leute ! ;-)

Ich habe die Lösung gefunden !
Ich bin sowas von erleichtert, es ist aber auch ganz schön peinlich,
wie man sowas übersehen kann ..........................
Aber ohne Euch hätte ich keine Chance gehabt .........


Ich hatte die Variablen-Kennzeichnung erst vor kurzer Zeit auf $_POST geändert,
nachdem ich erfuhr daß dies mit PHP >= 4.2 nötig wäre.
Der einzige Fehler den ich jetzt nur noch gemacht habe war für den
Button nicht "Signieren!" sondern "submit" anzugeben.
Ich kann jetzt mit INSERT Daten in die Datenbank einfügen !
Die Änderung sieht jetzt so aus und die ganze Sache läuft wie Zucker ;-) .



if ($_POST[submit] == "Signieren!")
{

$name = $_POST['name'];
$ort = $_POST['ort'];
$email = $_POST['email'];
$url = $_POST['url'];
$kommentar = $_POST['kommentar'];


Auf jeden Fall VIELEN DANK für die Hilfe und Eure Bemühungen !!!


Grüße, Jobst ;-) ;-) ;-)
als Antwort auf: [#10881] Top
 
Miro Dietiker
Beiträge: 699
11. Sep 2002, 18:57
Beitrag #7 von 8
Beitrag ID: #11123
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Da können wir ja bereits schon fast sagen, dass die ganze Diskussion
für die Katz war wenns denn ein solcher fehler war ;)

Auf mehr Erfolg punkto so blöden Fehlerchen, ich kenn das nur zu gut,
wie lästig die sind. Mein persönlicher Tipp für harte Fälle:
Bereits diverse male musste ich jede 2. Zeile mit einem echo oder
print füllen um zu überprüfen, ob ein Script auch wirklich das macht
was ich mir vorgestellt habe. Und bei diesen Prints da muss man auch
nicht sparen denn rausgelöscht sind sie schnell und sie bringen alles
zutage ,)

Viel Spass!
GR: MDi
als Antwort auf: [#10881] Top
 
Anonym
Beiträge: 22827
15. Sep 2002, 01:35
Beitrag #8 von 8
Beitrag ID: #11412
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

INSERT - Problem unter PHP


Hallo Miro !

Das ist eine sehr gute Idee mit den 'Prints' und den 'Echos'. Werd ich mir merken und sicherlich noch häufig anwenden ;-)

Besten Dank auf jeden Fall nochmals !

Grüße, Jobst ;-)
als Antwort auf: [#10881] Top
 
X