Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Akzeptiert Variablen Wert nicht an?! nach 3h Suchen und forschen keine Lösung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Akzeptiert Variablen Wert nicht an?! nach 3h Suchen und forschen keine Lösung

    Ich brauche hilfe. Bitte, dieses Ding hier treibt mich noch bald in den Wahnsinn

    Ich muss eine Web-App machen. Die UI habe ich mit hilfe von jQuery und dem anderen üblichen gemacht.

    Die Web-App ist eine simple Notiz (schulaufgabe). Da ich eine 1 anstreben will möchte ich sie so gut wie möglich machen. Aber es klappt leider nicht..

    Aufgabe: Erstelle eine Notiz Anwendung. Der User soll per Button, eine Datenbank erstellen lassen. Dann in ein Textfeld welches auf 150 Zeichen begrenzt ist eine Notiz schreiben. Die Notiz soll per klick automatisch in die Datenbank eingefügt werden. Außerdem soll es ein Menüpunkt geben wo alle Notizen angezeigt werden. Spalten: ID und Notizen.

    Oberflächen Mäßig habe ich alles anhand eines Hamburger Menü gemacht. Aber der PHP Code will einfach nicht funktionieren. Meine Mutter ist mir kurz davor den Computer abzunehmen da meine Augen schon einem Zombie ähneln ^^

    jedenfalls das ist der HTML code:

    HTML-Code:
    <form method="post">
    			Tragen Sie Ihre Kurz Notiz ein. <b> max. 150 Zeichen</b>
    			<br>
    
    			<textarea size="150" maxlength="150" name="no" cols="50" rows="5" >Schreiben Sie hier die Notiz!</textarea></form><br>
    
    
    <!-- jetzt folgen die Buttons/submits -->
    
    <table>
    		<tr>
    		<td>
    		<form action="neuenotiz.php" method="post">
    		<input type="submit" name="ausgabe" value="Neue Notiz!">
    		</form>
    		</td><td>
    		<form action="dberstellen.php" method="post">
    		<input type="submit" name="ausgabe" value="Erstelle DB">
    		</form>
    		</td></tr></table>

    und das ist php:

    PHP-Code:

    <?php
    $ausgabe
    =$_POST['ausgabe'];
    $No=$_POST['no'];

    echo 
    $No;


    $sql_host="localhost"
    $sql_user="root";
    $sql_password="";
    $sql_database="notizblock";
    mysql_connect($sql_host,$sql_user,$sql_password); 



    mysql_select_db($sql_database); 



    $sql_befehl="INSERT INTO meinenotizen (ID, notiz, Datum) VALUES (null, '$No', 'Datetime')";
     
    $result mysql_query $sql_befehl ); 

    mysql_close();

    echo 
    "Notiz erfolgreich hinzugefügt!";

    ?>

    Fehler: Notice: Undefined index: no in C:\xampp\htdocs\Notiz\neuenotiz.php on line 48

    Line 48 ist :

    PHP-Code:
    $No=$_POST['no'
    Ich wäre für jede hilfe dankbar!!

  • #2
    Wie PHP dir schon gesagt hat, gibt es den index 'no' in dem Array $_POST nicht. Das liegt vermutlich daran, dass du in deinem HTML für jedes Eingabefeld und jeden Button ein eigenes Formular erstellst.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Willkommen im Forum.

      Zudem bitte beachten:

      Die mysql-Erweiterung von PHP (nicht das Datenbanksystem selbst) ist veraltet. Nutze mysqli oder PDO.

      - http://php-de.github.io/jumpto/faq/#deprecated-mysql (derzeit die letzte Antwort auf der Seite. Browser scrollt da vermutlich nicht korrekt hin)

      Das Script ist anfällig für SQL-Injections.

      - http://php-de.github.io/jumpto/faq/#sql-injection

      Vermutlich auch immer hilfreich: Debugging von Datenbankqueries:

      - http://phpforum.de/forum/showthread.php?t=240643
      - http://php-de.github.io/jumpto/sql/

      Kommentar


      • #4
        Danke für die Antworten, allerdings muss ich es so nutzen... Unser AE Lehrer bringt es uns so bei.

        Wie kann ich das mit dem <form> ändern? Es sind ja zwei Eingabe Felder mit zwei Links... ich weiß keine andere Lösung. Ich kann ja schlecht zwei Links in ein "form" packen :/

        Kommentar


        • #5
          Zitat von rnex-java Beitrag anzeigen
          Danke für die Antworten, allerdings muss ich es so nutzen... Unser AE Lehrer bringt es uns so bei.
          Nutz einfach PDO, wenn er dich deswegen schlechter bewertet beschwerst du dich beim Schulleiter, dass er veraltete und unsichere Funktionen lehrt und bei benutzung von zeitgemäßen Schnittstellen zur Datenbank schlecht bewertet. Kann ja wohl nicht angehen, sowas

          Zitat von rnex-java Beitrag anzeigen
          Wie kann ich das mit dem <form> ändern? Es sind ja zwei Eingabe Felder mit zwei Links... ich weiß keine andere Lösung. Ich kann ja schlecht zwei Links in ein "form" packen :/
          Du kannst soviele Felder und Buttons ins Form packen wie du willst
          [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

          Kommentar


          • #6
            Moin,
            deine Formular sollten so strukturiert sein.
            PHP-Code:
            <form>
                <
            textarea>
                <
            input>
            </
            form>
            <
            form>
                <
            input>
            </
            form
            Das erste Formular nutzt du ja um deine Notiz zu übertragen, also packst du das Eingabe-Element und den Button zum Absenden da rein.
            Beim zweiten Formular brauchst du nur einen Button um, es soll die Auslösung übertragen werden.

            Zu deinem Layout, man nutzt für so etwas keine Tabellen. (Bei deinen beiden Buttons) Spätestens ab jetzt, wo dein Formular Zeilen und Spaltenübergreifend wirken soll, würde der Code wirklich eklig werden,[nvm this] davon abgesehen ist es schon jetzt kein valides HTML[/nvm this].
            Du kannst dich ja ein wenig an den zweiten Codeabschnitt aus diesem Post orientieren: http://www.php.de/php-einsteiger/112...tml#post827599
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Also zum Thema PDO das fang ich in einer Woche an parallel zu jQuery zu lernen.... Den der Wissensstand meines Lehrer ist echt nicht mehr aktuell :/

              HTML-Code:
              <form method="post">
              			Tragen Sie Ihre Kurz Notiz ein. <b> max. 150 Zeichen</b>
              			<br>
              			<textarea size="150" maxlength="150" name="no" cols="50" rows="5" >
              			Schreiben Sie hier die Notiz!</textarea><br>
              			</div></div>
              					
              		<tr>
              		<td>
              		<form action="neuenotiz.php" method="post">
              		<input type="submit" name="no" value="Neue Notiz!">
              		</form>
              		</td><td>
              		<form action="dberstellen.php" method="post">
              		<input type="submit" name="ausgabe" value="Erstelle DB">
              		</form>
              		</td>
              		</tr>
              
              <!-- wenn ich aber nun dein Layout nutze: habe ich ein offenes form, und in diesem wieder ein form. Wenn ich alles ins <input> packe, passiert der Gleiche Effekt => nichts.
              -->
              
              <input type="submit" name="no" value="Neue Notiz!" action="neuenotiz.php" method="post">
              Hab ich was falsch verstanden?
              Jetzt kommt zwar keine Fehlermeldung. Aber die Verlinkung findet nicht mehr statt.

              Kommentar


              • #8
                PHP-Code:
                <form action="neuenotiz.php" method="post">
                    <
                textarea size="150" maxlength="150" name="no" cols="50" rows="5" >Schreiben Sie hier die Notiz!</textarea>
                    <
                input type="submit" name="no" value="Neue Notiz!">
                </
                form>
                <
                form action="dberstellen.php" method="post">
                    <
                input type="submit" name="ausgabe" value="Erstelle DB">
                </
                form
                Das sind deine beiden Formulare. Für das Layout kannst du dann noch andere HTML-Elemente nutzen, z.B. <fieldset></fieldset>.
                http://www.peterkropff.de/site/html/formulare.htm

                Falls du Lust drauf hast, dieses und das nachfolgende Tutorial beschäftigen sich wohl etwas genauer mit der Formatierung von Formularen: http://www.peterkropff.de/tutorials/...html_css_3.htm
                [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                Kommentar


                • #9
                  Ich habe das jetzt mal kopiert und ersetzt, aber die Fehlermeldung ist wieder da :/ habe ich den, den php code richtig geschrieben?

                  PHP-Code:
                  <?php
                  $No
                  =$_POST['no'];

                  echo 
                  $No;


                  $sql_host="localhost"
                  $sql_user="root";
                  $sql_password="";
                  $sql_database="notizblock";
                  mysql_connect($sql_host,$sql_user,$sql_password); 



                  mysql_select_db($sql_database); 



                  $sql_befehl="INSERT INTO meinenotizen (ID, notiz, Datum) VALUES (null, '$No', 'Datetime')";
                   
                  $result mysql_query $sql_befehl ); 

                  mysql_close();

                  echo 
                  "Notiz erfolgreich hinzugefügt!";

                  ?>

                  Kommentar


                  • #10
                    Wenn du mein HTML so kopiert hast, sollte es eigentlich in Ordnung sein. Kannst du nochmal die vollständigen Scripte vom Formular und der neuenotiz.php posten?
                    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                    Kommentar


                    • #11
                      ich poste einfach mal den ganzen Code:

                      HTML-Code:
                      <!DOCTYPE html>
                      <html>
                      <head>
                          <title>Mobile Menu Hamburger</title>
                          <meta name="viewport" content="width=device-width, initial-scale = 1.0, maximum-scale=1.0, user-scalable=no"/>
                          <!--die jQuery Bibliothek, erreichbar unter www.jquery.com-->
                          <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
                          <script src="https://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script>
                      
                          <script src="jquery.js"></script>
                      
                          <link rel="stylesheet" type="text/css" media="all" href="code.css"/>
                      </head>
                      
                      <body >
                      
                      <!-- Wrapper, container, breite code.css-->
                      <div id="container">
                      
                          <!--Der HamburgerButton -->
                          <header>
                              <div id="hamburger">
                      		<div></div>
                                  <div></div>
                      			<div></div>
                              </div>
                          </header>
                      
                          
                          <nav>
                              <ul>
                                  <li><a href="hamburgerstartseite.html">Neue Notiz</a></li>
                                  <li><a href="meinenotiz.php">Meine Notizen</a></li>
                                  <li><a href="credits.html">Credits</a></li>
                              </ul>
                          </nav>
                      
                          
                          <div id="contentLayer"></div>
                      
                          <!--Inhalt der Seite-->
                          <div id="content">
                      		
                      	
                      		
                              <h1><center>Notizblock</h1></center>
                      <div style="text-align:left; padding-left: 20%; margin-top: 55px">
                              <h2>Willkommen in Ihrer neuen Notiz App! </h2>
                      
                              <p> Angepasst an die neusten Standarst der heutigen Web-Entwicklung!</p>
                      		<p> Immer und Überall zur Hand!</p>
                      		
                      		<p> Willkommen in der Zukunft ;-) Bitte schreiben Sie ihren Text in das unten<br>
                      		stehende Feld. Da dies nur eine Kurznotiz ist, müssen Sie sich auf 150 Zeichen Begrenzen</br>
                      		Leerzeichen werden mitgezählt. Danke für das Nutzen unserens Service! <br>
                      		</p>
                      		<div id="body"><br>
                      		
                      
                      <form action="neuenotiz.php" method="post">
                      <textarea size="150" maxlength="150" name="no" cols="50" rows="5" >Schreiben Sie hier die Notiz!</textarea>
                      <input type="submit" name="no" value="Neue Notiz!" />
                      </form>
                      <form action="dberstellen.php" method="post">
                          <input type="submit" name="ausgabe" value="Erstelle DB" />
                      </form> 
                      </div>
                      
                      </div>
                      </body>
                      </html>
                      Php

                      PHP-Code:
                      <!DOCTYPE html>
                      <html>
                      <head>
                          <title>Mobile Menu Hamburger</title>
                          <meta name="viewport" content="width=device-width, initial-scale = 1.0, maximum-scale=1.0, user-scalable=no"/>
                          <!--die jQuery Bibliothek, erreichbar unter www.jquery.com-->
                          <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
                          <script src="https://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script>

                          <script src="jquery.js"></script>

                          <link rel="stylesheet" type="text/css" media="all" href="code.css"/>
                      </head>

                      <body >

                      <!-- Wrapper, container breite code.css-->
                      <div id="container">

                          <!--The Hamburger Button in the Header-->
                          <header>
                              <div id="hamburger">
                              <div></div>
                                  <div></div>
                                  <div></div>
                              </div>
                          </header>

                          
                          <nav>
                              <ul>
                                  <li><a href="hamburgerstartseite.html">Neue Notiz</a></li>
                                  <li><a href="meinenotiz.php">Meine Notizen</a></li>
                                  <li><a href="credits.html">Credits</a></li>
                              </ul>
                          </nav>


                          <div id="contentLayer"></div>

                          <!--Inhalt der Seite-->
                          <div id="content">
                              
                          
                      <?php
                      $No
                      =$_POST['no'];

                      echo 
                      $No;


                      $sql_host="localhost"
                      $sql_user="root";
                      $sql_password="";
                      $sql_database="notizblock";
                      mysql_connect($sql_host,$sql_user,$sql_password); 



                      mysql_select_db($sql_database); 



                      $sql_befehl="INSERT INTO meinenotizen (ID, notiz, Datum) VALUES (null, '$No', 'Datetime')";
                       
                      $result mysql_query $sql_befehl ); 

                      mysql_close();

                      echo 
                      "Notiz erfolgreich hinzugefügt!";

                      ?>
                              

                          </div>

                      </div>
                      </body>
                      </html>

                      Hoffentlich hilft es :/

                      Kommentar


                      • #12
                        Die Textarea und der Submit-Button haben den selben Namen. Allerdings hat das nichts mit der Notice zutun, die dürfte bei dem Code garnicht kommen.
                        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                        Kommentar


                        • #13
                          Okay nachdem ich den namen geändert habe läuft es! Danke danke an jeden hier

                          Ich hätte da noch ne Frage zu "no database selected". Das ist das selbe Projekt allerdings ne andere Datei, kann man das auch hier schreiben oder neuen Thread aufmachen?

                          Kommentar


                          • #14
                            Zitat von rnex-java Beitrag anzeigen
                            [html]
                            <p> Angepasst an die neusten Standarst der heutigen Web-Entwicklung!</p>
                            An die was? Versprich mal nix was du nicht halten kannst...


                            PHP-Code:
                            $sql_befehl="INSERT INTO meinenotizen (ID, notiz, Datum) VALUES (null, '$No', 'Datetime')"
                            Das Feld ID kannst du weglassen. Achte auf einheitliche Groß- und Kleinschreibung. ID, notiz, Datum? Fehlt nur noch bBLUB...
                            Werte die in einen SQL Query eingefügt werden müssen escapt oder geprüft werden. Versuch mal eine Notiz zu erstellen mit ' im Text... abgesehen davon das das u.U. eine massives Sicherheitsproblem darstellt.
                            Das 'Datetime' ist einfach nur quark. Da muss NOW() für das aktuelle Datum hin.

                            PHP-Code:
                            $sql_befehl="INSERT INTO meinenotizen (notiz, Datum) VALUES ('".mvsrc_real_escape_string($No)."',  NOW())"
                            Das nächste was man nicht macht sind die Datenbankdaten ins eigentliche Programm zu schreiben. Wenn du die ändern möchtest musst du am Ende mehrere Datein bearbieten, das ist fehleranfällig und unnötige arbeit. Also auslagern.

                            db_config.php
                            PHP-Code:
                            $sql_host="localhost"
                            $sql_user="root";
                            $sql_password="";
                            $sql_database="notizblock"

                            PHP-Code:
                            include('db_config.php');

                            mysql_connect($sql_host,$sql_user,$sql_password); 
                            mysql_select_db($sql_database); 
                            Eigentlich gehört der Verbindungsaufbau auch ausgelagert. Eine wichtige Regel beim Programmieren ist sich nicht zu wiederholen. Das könnte aber in dem Fall mit dberstellen.php problematisch werden und bei zwei Zeilen kann man auch drüber streiten. Jedoch ist es aber auch so, dass in der Praxis, ein Verbindungsaufbau zur Datenbank komplexer ist als nur zwei Zeilen. (Fehlerbehandlung, Zeichensatz und sonstige Konfigurationen)

                            Kommentar


                            • #15
                              Was den nicht halten? Design Mäßig ist es auf dem Aktuellen Stand Modern und schlicht. Mehr oder weniger :P

                              Aber zu deiner Korrektur:

                              Wenn ich das hier:

                              PHP-Code:
                              $sql_befehl="INSERT INTO meinenotizen (notiz, Datum) VALUES ('".mvsrc_real_escape_string($No)."',  NOW())"
                              durch meinen alten Code ersetze, kommt das hier raus:

                              Fatal error: Call to undefined function mvsrc_real_escape_string() in C:\xampp\htdocs\Notiz\neuenotiz.php on line 60

                              Kommentar

                              Lädt...
                              X