Ankündigung

Einklappen
Keine Ankündigung bisher.

Undefined variable

Einklappen

Neue Werbung 2019

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

  • Undefined variable

    Hallo zusammen

    Mein Problem ist, dass ich ohne einer WHERE Abfrage Ergebnisse erhalte und mit der Abfrage eine Fehlermeldung:

    Script ohne Fehlermeldung:
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    ?>

    <?
    $db_host="localhost";
    $db_user="xxx";
    $db_pass="xxx";
    $db_name="usr_xxx_15";
    $link=mysql_connect($db_host,$db_user,$db_pass);
    if (! $link)
    die ( "Keine Verbindung zu MySQL !");
    mysql_select_db($db_name)
    or die ( "Keine Verbindung zur Datenbank $db_name :".mysql_error() );


    $abfrage="SELECT * FROM bb_adresse";
    echo "
    <table valign=top width=400 border=1 cellspacing=0 cellpadding=0>
    <tr>
    <td>Hallo</td>
    </tr>
    </table>
    ";

    $ergebnis = mysql_query($abfrage);
    while($row=mysql_fetch_array($ergebnis))
    {
    extract($row);
    echo "
    <table valign=top width=400 border=1 cellspacing=0 cellpadding=0>
    <tr>
    <td>$a_name </td>
    </tr>
    </table>

    ";
    }
    mysql_close( $link );
    ?>

    gleiches Script mit WHERE Abfrage:

    WHERE a_name='$a_name'

    Fehlermeldung:

    Notice: Undefined variable: a_name in /home/www/xxx/html/faktura/abfrage.php on line 18

    Dies ist mir ein Rätsel.
    Danke für eure Hilfe.
    Gruss
    coolphp

  • #2
    <td>$a_name </td>
    Was soll denn $a_name sein ?

    Kommentar


    • #3
      Notice: Undefined variable: a_name in /home/www/xxx/html/faktura/abfrage.php on line 18
      Ist das eine Fehlermeldung von mysql oder von php? mysql bekommt sicher keine 18 Zeilen Code zu Gesicht, wird also auch nicht "on line 18" melden.
      Es ist also ein php-Problem. Warum steht es dann im mysql-Forum?

      Ist es vielleicht das beliebte, sehr alte, sich ständig wiederholende "Problem" mit register_globals? http://de3.php.net/manual/de/security.globals.php

      Kommentar


      • #4
        Danke,
        wenn ich wüsste ob es ein PHP oder MSQYL Problem ist, würde ich dies sicherlich nicht einfach so irgendwo hinschreiben, sondern der guten Ordnungshalber im richtigen Forum. Somit keine Absicht.
        Die register_globals sind auf on gestellt.
        Der Link hilft LEIDER nicht, da meine Kenntnisse
        nicht ausreichen und ich der Meinung war, dass hier inm Forum auch
        Anfängern geholfen wird.

        Also muss ich weiter hoffen oder eine andere Lösung suchen.
        Auf jeden Fall, Danke.
        Gruss
        coolphp

        Kommentar


        • #5
          Notice: Undefined variable: a_name
          Es ist ein PHP-Problem.
          Du rufst eine Variable auf ( $a_name ) die aber nicht definiert ist.
          Was ist jetzt das Problem ?

          Kommentar


          • #6
            OK schon etwas wichtiges gelernt. Danke.

            Das Problem ist, dass ich kein Ergebniss erhalte.
            Mit dem html Code (kurzform):

            <form name="form1" method="post" action="abfrage.php">
            <input type="text" name="a_name">
            <input type="submit" name="Abschicken" value="Abschicken">
            <form>

            möchte unter dem eingegebenen Namen Daten einsehen.
            Leider erhalte bis auf die Fehlermeldung nichts und wie bereits erwähnt
            erhalte ich ohne WHERE Abfrage alle Namen.
            Ich hoffe diese Erklährung ist verständlich.
            Gruss
            phpcool

            Kommentar


            • #7
              Dir fehlt die Variable $a_name. Dass Du sie zufällig in einem sql-Statement verwenden willst, tut nichts zur Sache. Vergiss sql für einen Moment und konzentriere Dich auf die Variable.

              <input type="text" name="a_name">
              mit register_globals on erzeugt das beim entsprechenden request vor Ausführung des Skripts die Variable $a_name.
              a) register_globals ist wirklich auf ON gesetzt? Ganz, ganz sicher? Wie hast Du das überprüft?
              b) Die Warnung wird wirklich beim entsprechenden Request angezeigt, sprich: das Formular wird abgeschickt und dann und nur dann kommt die Warnung?

              Kommentar


              • #8
                Also gut,
                ich habe den Provider gefragt, da ich so was bereits gelesen habe aber über keine ausreichende Kenntnisse verfüge. Dies wurde auch bestätigt, daher bin ich mir sicher.
                Nebenbei, da es nicht ins MYSQL Forum gehört, wäre dies richtig beim PHP Forum für Anfänger?
                Gruss
                coolphp

                Kommentar


                • #9
                  ch habe den Provider gefragt, da ich so was bereits gelesen habe aber über keine ausreichende Kenntnisse verfüge.
                  PHP-Code:
                  <?php phpinfo(); ?>
                  ausführen und nach register_globals suchen.
                  On:
                  <input type="text" name="a_name"> sollte sich als $a_name "bemerkbar" machen.

                  Off:
                  Abhängig von der http-Methode entweder $_GET['a_name'] oder $_POST['a_name'];
                  <form name="form1" method="post" also $_POST['a_name']

                  aber natürlich nur, wenn die Formulardaten auch mit diesem Request mitgeschickt wurden.
                  falsch:
                  PHP-Code:
                  <?php
                  echo 'form name="form1" method="post" action="abfrage.php">
                  <input type="text" name="a_name">
                  <input type="submit" name="Abschicken" value="Abschicken">
                  <form>'
                  ;
                  // php wartet hier jetzt NICHT darauf, dass das Formular abgeschickt wird
                  echo $_POST['a_name'];
                  ?>
                  richtig:
                  PHP-Code:
                  <?php
                  if (isset($_POST['a_name'])) {
                      echo 
                  $_POST['a_name'];
                  }
                  else {    
                      echo 
                  'form name="form1" method="post" action="abfrage.php">
                      <input type="text" name="a_name">
                      <input type="submit" name="Abschicken" value="Abschicken">
                      <form>'
                  ;
                  }
                  ?>

                  Kommentar


                  • #10
                    Entschuldige, ich war kurz fort.

                    Ich habe es versucht mit:

                    <?php
                    if (isset($_POST['a_name'])) {
                    echo $_POST['a_name'];
                    }
                    else {
                    echo '<form name="form1" method="post" action="abfrage.php">
                    <input type="text" name="a_name">
                    <input type="submit" name="Abschicken" value="Abschicken">
                    </form>';
                    }
                    ?>

                    Leier erhalte ich immer noch die gleiche Meldung:
                    Undefined variable: a_name

                    Auch erhalte ich sehr wenige Daten mit der php Info Abfrage.
                    Kein Hinweis auf die Stellung.
                    Gruss
                    coolphp

                    Kommentar


                    • #11
                      Du hast das Codestück einfach davorgeklatscht, aber Dein Zeugs in der Datei gelassen?
                      Denn nur mit dem letzten Codestück erhälst Du diese spezielle Fehlermeldung garantiert nicht.

                      Auch erhalte ich sehr wenige Daten mit der php Info Abfrage.
                      Kein Hinweis auf die Stellung.
                      Auch das verwundert micht stark.
                      Du kannst es noch einmal explizit mit
                      PHP-Code:
                      <?php phpinfo(INFO_CONFIGURATION); ?>
                      versuchen.
                      Wenn das auch nicht funktioniert, will ich garnicht wissen, was Dein Provider noch von php verkrüpelt hat.
                      Empfehlung: Eigenen Entwicklungsserver aufsetzen. http://www.apachefriends.org/de/xampp.html

                      Kommentar


                      • #12
                        Salü und Danke.
                        Codestück davorgeklatscht? Versteh ich nicht.
                        Ich habe gar kein "Zeugs" in der Datei gelassen; was den?

                        Neue Abfrage ergab ein Ergebnis:

                        register_globals Off (Local Value) On (Master Value)

                        Gruss
                        coolphp

                        Kommentar


                        • #13
                          Na so was.

                          Ich liebe die Ehrleichkeit. Nur frage ich mich, ob mein Anliegen nicht ernst genommen wird oder ich mich zu blöd verhalte, eben wie ein Anfänger.
                          Jedoch ist die Empfehlung ein eigenen Server anzulegen sehr erstaunlich, da bereits die Rede war von Provider etc.
                          Ich verzichte auf eine genauere Erläuterung.
                          Schön wäre es gewesen eine klare Antwort zu erhalten, man hilft oder man will nicht mehr weiterhelfen.
                          Ich hätte dies zumindest von Experten erwartet.
                          Gruss
                          coolphp

                          Kommentar


                          • #14
                            vielleicht
                            solltest du dieses Tutorial ........... http://tut.php-q.net/index.html
                            dir einmal in aller Ruhe
                            von Vorne bis Hinten
                            reinziehen ???

                            ~dilemma~
                            ---sorry---

                            Kommentar


                            • #15
                              Online entwickeln ist in der Regel die dümmste Methode.
                              Eigenen Server auf dem eigenen Rechner einrichten und da die Skripte fertigfrickeln und testen. Erst wenn alles läuft, auf das Echtsystem überspielen.
                              Grund: Du hast das System unter Kontrolle, kommst einfach an die Konfigurations- und Protokolldateien ran und kannst Dir einen Debugger installieren.
                              Mit xampp geht das eins-zwei-hopp.
                              Gleich phpinfo() befragen, in welcher php.ini error_reporting=E_ALL und display_errors=On gesetzt werden muss, ändern und den Server neustarten.
                              Du ersparst Dir und uns viel Stress.

                              Zitat von coolphp
                              Salü und Danke.
                              Codestück davorgeklatscht? Versteh ich nicht.
                              Ich habe gar kein "Zeugs" in der Datei gelassen; was den?
                              Mein Code gibt garantiert kein "undefined variable a_name" aus. Deiner schon.

                              Zitat von dilemma
                              vielleicht
                              solltest du dieses Tutorial ........... http://tut.php-q.net/index.html
                              dir einmal in aller Ruhe
                              von Vorne bis Hinten
                              reinziehen ???
                              Jo, kaum etwas ist zeitraubender als Fehler an der falschen Stelle zu vermuten.
                              Deshalb Grundlagen pauken, nchmal Grundlagen und dann gleich nochmal.

                              Kommentar

                              Lädt...
                              X