1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Via Formular in MYSQL DB speichern.. funkt nicht :(

    • Frage
  • Konrad
  • 14. Mai 2004 um 18:50
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Konrad
    Punkte
    175
    Beiträge
    23
    • 14. Mai 2004 um 18:50
    • #1

    hab ein Script geschrieben mit PHP damit ich für meine XBOX Seite spiele-reviews in MYSQL DB speichern kann usw..

    jedoch wenn ich nun das komplette review speichern will tut sich nichts.. jedoch weiß ich nicht warum.. wenn ich beim Formular auf "Abschicken" drücke dann tut sich nichts... aber warum bloß?

    Gibts ne Beschränkung der Länger des Textes bei einem Formular? gibts ne beschränkung bei Texten in einer MYSQL DB?

    hier das Formular:

    PHP
    <?php
    
    
    echo "<form action=\"add_game2.php\" method=\"GET\">";
    echo "Titel: <input type=\"text\" name=\"titel\"> <br>";
    echo "Gerne: <input type=\"text\" name=\"genre\"> <br>";
    echo "Publisher: <input type=\"text\" name=\"publisher\"> <br>";
    echo "Entwickler: <input type=\"text\" name=\"entwickler\"> <br>";
    echo "Homepage: <input type=\"text\" name=\"homepage\"> <br>";
    echo "Spieler: <input type=\"text\" name=\"spieler\"> <br>";
    echo "Onlinegaming: <input type=\"text\" name=\"onlinegaming\"> <br>";
    echo "Beschreibung: <textarea row=\"4\" cols =\"50\" name=\"beschreibung\"></textarea> <br>";
    echo "Screenshots: <input type=\"text\" name=\"screenshots\"> <br>";
    echo "Movies: <input type=\"text\" name=\"movies\"> <br>";
    echo "Cover: <input type=\"text\" name=\"cover\"> <br>";
    echo "amazon-Id: <input type=\"text\" name=\"amazon\"> <br>";
    echo "Release-Date: <input type=\"text\" name=\"releasedate\"><br>";
    
    
    echo "<input type=\"submit\" value=\"Spiel hinzufügen\">";
    echo "<input type=\"reset\" value=\"Reset\">";
    echo "</form>";
     
     
    echo "<a href=\"admin_index.php\">zurück zum Admin Menü</a>"; 
    
    
    
    
    ?>
    Alles anzeigen


    und nun wie er es in die DB speichert...

    PHP
    <?php
    
    
    include ("config.php");
    
    
    $db_verbindung = mysql_connect ($host, $user, $password);
    
    
    	if ($db_verbindung)
    		{
    			$db_abfrage = mysql_db_query ($dbname , " 
    
    
    									INSERT INTO games (
    
    									titel, 
    									genre,
    									publisher, 
    									entwickler
    
    									) 
    
    									VALUES (
    									'$titel', 
    									'$gerne',
    									'$publisher', 
    									'$entwickler'
    									) " );
    
    
    			$db_eintrag = mysql_db_query ($dbname, $db_abfrage);
    
    
    			echo "Daten erfolgreich eingetragen";
    
    
    
    
    
    		}
    	else
    
    
    		{
    
    
    			echo "nein";
    
    
    		}
    ?>
    Alles anzeigen


    wär cool wenn mir wer helfen könnte.. liegt das Fehler nun im Script oder in der MYSQL DB? die Daten werden in der MYSQL DB als Longtext gespeichert...

  • lerod
    Punkte
    1.620
    Beiträge
    315
    • 14. Mai 2004 um 19:22
    • #2

    hi!


    du solltest in der value klausel die apostrophe ( ' - einfaches Anführungszeichen ) bei den variablen weglassen.
    außer das datenfeld verlangt unbedingt nach einem einfachen anführungszeichen, dann würd ich die variante vorschlagen, strings mittels "concatation" zusammen zu basteln:

    PHP
    "start of any text '" . $var . "' and continue here ..."




    lg

  • winf.wol
    Punkte
    30
    Beiträge
    6
    • 14. Mai 2004 um 20:44
    • #3

    die eingelesenen variablen ($titel etc) sind erst dann verfügbar, wenn du register_globals auf on setzt (siehe link).

    alternativ kannst du auf die variablen auch so zugreifen:
    $HTTP_GET_VARS['titel'] bzw
    $HTTP_POST_VARS['titel'] wenn du method=post setzt

    method=post würd ich dir übrigens schwer empfehlen, da deine beschreibungen bald zu lang für =get werden (get-anfragen werden über die addresse übergeben, z.b. schreib.php?titel=cooles+spiel&beschreibung=bla+bla+bla)

    die einfachen anführungszeichen kannst lassen, die müssen bei string/varchar werten sowieso da sein...

  • maciek
    Punkte
    2.805
    Beiträge
    434
    • 15. Mai 2004 um 00:25
    • #4

    1) brauchst Du das Formular nicht mit PHP aufzubauen, weil da sowieso keine Variablen drinnen vorkommen. Da brauchst Du Dir keine Mühe mit \"bla\" usw. machen. Auch wenn Du mal variablen einbauen solltest, kannst Du in einem PHP Skript kannst Du folgendes machen:

    <?php
    ... php Teil 1 ...
    ?>
    HTML teil
    <?php
    ... php Teil 2 ...
    ?>

    2) was gegen die einfachen Anführungszeichen sprechen soll, wenn Du einen String in die DB einfügen willst, verstehe ich nicht ganz. Du kannst sehr wohl einfach "start of any text '$var' and continue here ..." schreiben.

    3) longtext? Was willst Du da bitte speichern? ;) Schau mal hier. Ein longtext sind 4GB (!) an Zeichen!

    4) bei Schreibbefehlen an die Datenbank sollte man immer POST benutzen.

    5) langer Rede kurzer Sinn: Ich weiß jetzt auf den ersten Blick nicht, wo der Fehler liegen könnte. :D

  • nixor
    Punkte
    50
    Beiträge
    9
    • 15. Mai 2004 um 11:16
    • #5

    seas konrad!

    weis zwar auch nicht genau, wo dein fehler liegt, aber probiers mal so:

    config.inc:

    <?php
    $dbHost = "";
    $dbUser = "";
    $dbPass = "";
    $dbName = "";

    $connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
    $selectDB = @mysql_select_db($dbName) or die(mysql_error());
    ?>

    php file:


    <?
    include("connect.inc");
    $sql = "INSERT INTO games (titel,genre, publisher, entwickler )VALUES ('$titel','$gerne','$publisher','$entwickler') ";
    $ergebnis=@mysql_query($sql, $connect) or die("Konnte keine Daten in die Datenbank schreiben!<br>");
    mysql_close($connect);
    ?>

    funkt bei mir immer!


    tipp:

    if ($db_verbindung)
    {
    echo "Daten erfolgreich eingetragen";
    }
    else
    {
    echo "nein";
    }

    solltest du nicht verwenden um zu überprüfen, ob die daten eingetragen wurden, da du ja nur überprüfst, ob du eine verbindung zu datenbank aufgebaut hast!


    hoffe ich konnte dir weiterhelfen!

    mfg,

    nixor!

  • Konrad
    Punkte
    175
    Beiträge
    23
    • 15. Mai 2004 um 13:34
    • #6
    Zitat von winf.wol

    method=post würd ich dir übrigens schwer empfehlen, da deine beschreibungen bald zu lang für =get werden (get-anfragen werden über die addresse übergeben, z.b. schreib.php?titel=cooles+spiel&beschreibung=bla+bla+bla)

    das war der Fehler.. vielen dank :D:thumb:

  • Konrad
    Punkte
    175
    Beiträge
    23
    • 15. Mai 2004 um 13:39
    • #7
    Zitat von maciek

    1) brauchst Du das Formular nicht mit PHP aufzubauen, weil da sowieso keine Variablen drinnen vorkommen. Da brauchst Du Dir keine Mühe mit \"bla\" usw. machen. Auch wenn Du mal variablen einbauen solltest, kannst Du in einem PHP Skript kannst Du folgendes machen:

    <?php
    ... php Teil 1 ...
    ?>
    HTML teil
    <?php
    ... php Teil 2 ...
    ?>

    2) was gegen die einfachen Anführungszeichen sprechen soll, wenn Du einen String in die DB einfügen willst, verstehe ich nicht ganz. Du kannst sehr wohl einfach "start of any text '$var' and continue here ..." schreiben.

    3) longtext? Was willst Du da bitte speichern? ;) Schau mal hier. Ein longtext sind 4GB (!) an Zeichen!

    4) bei Schreibbefehlen an die Datenbank sollte man immer POST benutzen.

    5) langer Rede kurzer Sinn: Ich weiß jetzt auf den ersten Blick nicht, wo der Fehler liegen könnte. :D

    Alles anzeigen

    ad 1) hmm sstimmt.. ist wirklich eine reines HTML Forumlar.. da hast recht :)

    ad 3) ja ich dachte zuerst daß es an der DB liegt weil er lange Texte nicht speichern konnte... deswegen hab ich von Text auf Longtext umgestellt.. :)

    ad 4) das war auch der fehler.. werd ich auch in zukunft nur noch mit POST machen... danke für den Tipp...

  • beefy
    Punkte
    1.683
    Beiträge
    304
    • 15. Mai 2004 um 16:01
    • #8

    Du mußt auf jeden Fall noch die Variablen vorm Einfügen in die DB durch addslashes() rennen lassen. Ansonsten kannst du keinen Text, der Apostrophe enthält, einfügen. Mag jetzt nicht lang drüber reden, auf jeden Fall mach folgendes:

    PHP
    mysql_query("INSERT INTO table (feld1, feld2) VALUES ('" . addslashes($variable1) . "', '" . addslashes($variable2) ."'";
  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum