Thread Author: Columbo
Thread ID: 3260
Thread Info
Es gibt 20 Beiträge zu diesem Thema, und es wurde 3258 mal angesehen.
Wer ist hier? 1 Gäste
 Thema drucken
Eintragen in die DB funktioniert nicht
Columbo
Hallo Leute!

Ich wollte mit Hilfe eines Tutorials (http://www.phpbox.de/php_tutorials/mysql1.php) ausprobieren, etwas in die DB mit einer Seite zu schreiben...

1) Das Erstellen der Datenbank Tabellen hat funktioniert
2) Das Eintragen eines Datensatzes hat leider nicht funktioniert

Code der Seite zum Eintragen (insert.php):

Code 

<?php
//require_once "../maincore.php";
//require_once THEMES."templates/header.php";
?>

<!-insert.php->

<html>

<body>

<?PHP


if ($button==" OK ") {

 include("db.php");

 /*
 // Original vom Tutorial
 mysql_query("INSERT INTO

 cds(titel,interpret)VALUES('$titel','$interpret')");

 mysql_close();
 */
 
 
 // verändert
 mysql_query( "INSERT INTO `cds` (interpret ,titel) VALUES('$titel','$interpret')");
 ?>

 

 Die Daten wurden eingetragen<br>

<a href="insert.php">neuer Eintrag</a><br>

<a href="fetcharr.php">zur Übersicht</a>


 <?PHP

} else { ?>

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

 <input type="text" name="interpret" value="interpret"><br>

 <input type="text" name="titel" value="titel"><br>

 <input type="submit" name="button" value=" OK ">

 </form>

 <?PHP

} ?>

</body>

</html>
<?php
//require_once THEMES."templates/footer.php";
?>



3) Das Auslesen der Datensätze würde funktionieren, wenn das Eintragen funktionieren würde (ich weiß, dass das auslesen funktionieren wird, weil ich einen Datensatz über die DB eingetragen habe, und das Auslesen funktioniert hat)

4) Löschen und bearbeiten funktioniert nicht (ist aber nicht so tragisch).

Erkennt jemand in der insert.php einen Fehler?

Wäre euch sehr dankbar über Hilfe!

Einen schönen Tag noch und liebe Grüße,
Columbo =)

PS:
http://www.columbo.bplaced.net/insert.php (insert.php)
 
SC-Ad-Bot
 
emblinux
Abgesehen, das der komplette Aufbau dieser Datei nichts timmt, musst du natürlich darauf achten, das du auch die Daten, die per FOrmular per GET oder POST gesendet werden, richtig ausliest.

Heutzutage ist bei den meisten Server die Eistellung register_globals auf OFF gestellt, aus Sicherheitsgründen. Somit ergibt sich für das Auslesen, des Buttons nicht $button sondern $_POST['button'].

Schau dir einfach mal eine andere Datei an, die ähnliche Funktionalität aufweist.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Danke emblinux!!! happy

Jetzt funktioniert das Absenden, danke!
Aber leider werden nur 2 leere Felder (auch bei Eingabe) abgesendet Sad

Und beim Auslesen steht dann natürlich auch alles leer:
http://www.columbo.bplaced.net/fetcharr.php

Auf jeden Fall mal danke, schönen Tag noch und liebe Grüße,
Columbo happy
 
emblinux
Hast du denn die anderen beiden Felder für die Eingabe auch entsprechend verwendet ? Also $_POST['title'] und $_POST['interpret'] ? Dann sollte alles richtig funktionieren.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Zählt das auch zu register_global?

Wo müsste ich dann $_POST['title'] und $_POST['interpret'] einfügen? Ist ein HTML-Zeug drin, wie müsste ich es dann auf PHP abändern?

Code 

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

 <input type="text" name="interpret" value="interpret"><br>

 <input type="text" name="titel" value="titel"><br>

 <input type="submit" name="button" value=" OK ">

 </form>



Nochmals vielen Dank! =)
 
emblinux
REGISTER_GLOBALS bezieht sich auf alle Variablen, die per Formular oder auch per LINK gesendet werden.

$_POST['title'] und $_POST['interpret'] musst du dort einsetzen, wo du lesend auf diese Variablen zugreifen möchtest. Also nicht da, wo das Formular ist, sondern dort wo du diese Variablen verwendest.

Ich sehe dir fehlen noch grundlegende Kenntnisse. Bitte beschäftige dich mal eingehen mit HTML-Formularen und Co. Dazu habe ich bei den Weblinks auch einen passenden Link gepostet, der grundlegende Dinge im Umgang mit PHP, Formularen und Datenbanken erklärt.

Denn es macht wenig Sinn, Codeschnipsel zu verwenden, wenn man nicht wirklich weiß, was genau diese bewirken.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
:(

Meinst du das hier?

Code 

<td><?PHP echo $_POST['interpret'];?></td>

 <td><?PHP echo $_POST['title'];?></td>



Jetzt so hatte ich bei 1 mal Daten absenden ungefähr 70 Einträge...

Mit dem hier habe ich es auch schon versucht:
http://www.phpfusion-supportclub.de/weblinks.php?cat_id=4&weblink_id=23

Kam aber auch nichts dabei raus...:(
 
emblinux
Genau diesen Weblink meinte ich. Dieser ist sehr gut, nur muss man sich dafür etwas Zeit nehmen, damit man auch alles versteht.

Eigentlich muß deine PHP-Datei wie folgt aussehen:

Code 

<?php
include("db.php");

if ( isset($_POST('button')) && $_POST('button') =="Speichern")
  {
     $titel = $_POST['titel'];
     $interpret = $_POST['interpret'];
     $result = mysql_query( "INSERT INTO cds (interpret ,titel) VALUES('".$titel."','".$interpret."')");
    if ( $result )
      {
        echo "Die Daten wurden eingetragen <br />";
       }
    else
      {
        echo "Es sit ein Fehler aufgetreten.<br />";
       }
   echo '<a href="insert.php">neuer Eintrag</a><br /><a href="fetcharr.php">zur Übersicht</a>';
  }
else
  {
    echo '<form method="post" action="insert.php">
            Interpret: <input type="text" name="interpret" value="interpret"><br />
            Titel: <input type="text" name="titel" value="titel"><br />
            <input type="submit" name="button" value="Speichern">
            </form>';
  }

?>



Das sollte eigentlich funktionieren.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Danke emblinux! :)

Gibt aber leider noch einen Fehler in Zeile 4:
Fatal error: Can't use function return value in write context in /users/columbo/www/insert.php on line 4

[geshi=php]


if ( isset($_POST('button')) && $_POST('button') =="Speichern")[/geshi]
http://www.columbo.bplaced.net/insert.php
 
emblinux
ups, hab ich mich doch glatt vertippt. Da hättest du aber auch selbst drauf kommen können oder ? ;)

Die Zeile muss natürlich so lauten:

Code 

if ( isset($_POST['button']) && $_POST['button'] =="Speichern" )


Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Zitat ups, hab ich mich doch glatt vertippt. Da hättest du aber auch selbst drauf kommen können oder ? ;)

Oh, die ( ) gegen [ ] austauschen - ich sollte mehr auf die Klammern achten :P

Danke eintragen und auslesen funktioniert jetzt!!! DANKE!!! =)=)

Ähm... jetzt wäre nur noch das Problem mit dem editieren und löschen ... ;)

an der delete.php habe ich schon etwas rumgebastelt, doch dies hat dann doch nicht ganz funktioniert - also hab ichs wieder rückgängig gemacht...

Update.php (Editieren):

Code 

<!-update.php->

<html>

<body>

<?PHP include("db.php");

if ($_POST['button']==" OK ") {

 mysql_query("UPDATE cds SET interpret='$interpret',  titel='$titel' WHERE id='$id'");

 mysql_close();

 ?>

 Die Daten wurden eingetragen<br>

 <a href="fetcharr.php">zur Übersicht</a>

<? } else {

 $query = "SELECT * FROM cds WHERE id='$id'";

 $result = mysql_query($query);
 $line = mysql_fetch_array($result)

 ?>

 <form method="post" action="update.php?id=<?PHP echo $id; ?>">
 <input type="text" name="interpret" value="<?PHP echo $line[interpret]; ?>"><br>

 <input type="text" name="titel" value="<?PHP echo

$line[titel]; ?>"><br>

 <input type="submit" name="button" value=" OK ">

 </form>

<? } ?>

</body>

</html>



* $button hab ich schon mal auf $_POST['button'] geändert ;)

Delete.php (Löschen):

Code 

<!-delete.php->

<html>

<body>

<?php include ("db.php");

// originales aus dem Tutorial
//mysql_query("DELETE FROM cds WHERE id='$id'");
mysql_query("DELETE FROM `cds` WHERE `cds`.`id` = '$id' LIMIT 1");

mysql_close();

?>

 

Die Daten wurden gelöscht<br>

<a href="fetcharr.php">zur Übersicht</a>

<body>

<html>



LG Columbo
Und danke an emblinux=)
Bearbeitet von Columbo am 06.12.2010 um 14:46
 
emblinux
update.php

Code 

<?php
include("db.php");

if ( isset($_POST['button']) && $_POST['button']=="Speichern" && isset($_GET['id']) )
  {
    $interpret = $_POST['interpret'];
    $titel = $_POST['interpret'];
    $id = $_GET['id'];
    $result = mysql_query("UPDATE cds SET interpret='".$interpret."',  titel='".$titel."' WHERE id='".$id."'");
    if ( $result ) echo "Speichern war erfolgreich.<br />";
    else echo "Fehler beim Speichern.<br />";
    mysql_close();
    echo '<a href="fetcharr.php">zur Übersicht</a>';
  }
else
  {
   $id = $_GET['id'];
   $query = "SELECT * FROM cds WHERE id='$id'";
   $result = mysql_query($query);
   $data = mysql_fetch_array($result);

   echo '<form method="post" action="update.php?id='.$data['id'].'">
           <input type="text" name="interpret" value="'.$data[interpret].'"><br />
           <input type="text" name="titel" value="'.$data[titel].'"><br />
           <input type="submit" name="button" value="Speichern">
           </form>';

  }
?>



Die delete.php solltest du jetzt aber alleine hinbekommen.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Gibt da aber leider noch etwas in der update.php ...
Wenn man ein Feld ändert, wird das andere auch geändert, und zwar auf den gleichen Namen.

http://www.columbo.bplaced.net/fetcharr.php

 
emblinux
Ahja, ein typische Copy&Paste-Fehler.

ändere einfach die Zeile

Code 

$titel = $_POST['interpret'];

um in

Code 

 $titel = $_POST['titel'];



Auch das hätest du beim genaueren hinsehen doch selbst feststellen können oder ? *macho*
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
*dau*

In der delete.php habe ich Zeile 12 geändert und 11 auskommentiert, ist aber noch ein Fehler drin...

Code 

<!-delete.php->

<html>

<body>

<?php include ("db.php");

// originales aus dem Tutorial
//mysql_query("DELETE FROM cds WHERE id='$id'");
// mysql_query("DELETE FROM cds WHERE `id` = '$id'");
mysql_query("DELETE FROM cds WHERE interpret='".$interpret."',  titel='".$titel."' WHERE id='".$id."'");

mysql_close();

?>

 

Die Daten wurden gelöscht<br>

<a href="fetcharr.php">zur Übersicht</a>

<body>

<html>

 
emblinux

Code 

$id = $_GET['id'];
mysql_query("DELETE FROM cds WHERE `id` = '$id'");



Nur weil heute Nikolaus ist. ;)

Und bitte schau dir den Weblink, den ich die empfohlen habe, mal etwas genauer an und versuche auch die Sachen zu verstehen. Solche Dinge werden dir öfter vor die Füße fallen, wenn du Webseiten entwickelst.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Columbo
Danke!!! happyhappyhappy

Funktioniert jetzt alles - ich hätte das nicht alleine hinbekommen.
Danke!!

*emblinux ein Abzeichen geb Dickeslachen columbo.bplaced.net/award_star_gold_1.png*

Wünsche noch einen schönen Nikolaus happy
 
Columbo
Hallo,

da wäre noch etwas:
Wie macht man ein mehrzeiliges Eingabefeld?
Mit textarea habe ich es schon probiert in der Eingabeseite aber leider funktioniert es damit nicht Sad

Hat wer eine Idee?
 
Columbo
funktioniert aber leider nicht einzubauen

*Edit: Habs selbst hingekriegt
Bearbeitet von Columbo am 14.12.2010 um 16:01
 
Columbo
Habs jetzt schon selbst hingekriegt, bin kurz danach draufgekommen dass ich innerhalb von echo ' '; auch ' verwendet habe. Also einfach ' wegmachen und durch " ersetzen.
 
Springe ins Forum:

 Ähnliche Themen 

TEST
Thema Forum Antworten Letzter Beitrag
PartnerPagePanel: Banner werden nicht angezeigt. Infusionen 3 02.08.2017 um 07:58
Anzahl Datenbankeinträge nicht abrufbar Allgemeine Support Fragen 3 07.11.2014 um 13:10
Mybuddysystem [Anfragen] nicht richtig angezeigt Infusionen 3 16.01.2014 um 23:21
Mail Funktion konnte nicht initialisiert werden. Allgemeine Support Fragen 10 22.11.2013 um 11:16
Eigene Seiten lassen sich TEILWEISE nicht bearbeiten. Allgemeine Support Fragen 6 05.11.2013 um 21:13
SGI Fusion