Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Nach ENTER nächsten Eintrag anzeigen

Einklappen

Neue Werbung 2019

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

  • Hügel
    hat ein Thema erstellt [Erledigt] Nach ENTER nächsten Eintrag anzeigen.

    [Erledigt] Nach ENTER nächsten Eintrag anzeigen

    Moin,

    hab da mal ein ganz billiges Problem, welches mich aber zur Verzweiflung und Ihr wißt schon

    Ich frage aus einer Datenbank 18 Elemente ab. Dem User soll nun das jeweils nächste Elemente angezeigt werden, nachdem er ENTER gedrückt hat.

    Also so solls aussehen.

    Pizza Salami
    ENTER
    Pizza Napoli
    ENTER
    Pizza Tonno


    $Abfrage = mysql_query ("Select * from Pizzas ");
    while ($row=mysql_fetch_array($Abfrage) )
    {
    $Name= $row[Name];
    $Nummer = $row[Nummer];
    echo '<br>'.$Name;
    }

    Wie muss ich wo einen Submit Button einbauen?

    Danke für Eure Hilfe.
    Gruß

    Hügel

  • rkr
    antwortet
    Wildcard (*) in SQL: http://programmers.stackexchange.com...#answer-147287

    Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
    Choosing an API
    Warum man mysql* generell nicht (mehr) nutzen sollte.
    Wie man von mysql* auf PDO umsteigt
    Wissenswertes zum Thema SQL-Injection

    Zum Codestyle:
    http://www.php-fig.org/psr/psr-2/

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Zitat von monolith Beitrag anzeigen
    Ein paar Anmerkungen:
    - Du schreibst zunächst $_POST["Auswahl"] und dann darauf $_POST[Auswahl]. Bitte immer $_POST["Auswahl"] und das bei allen Array-Zugriffen, also bspw. $row["Fragen"] statt $row[Fragen]. Fragen wird sonst eigentlich als Name einer Konstanten und nicht als String interpretiert! Aber eine Konstante namens Fragen gibt es ja nicht bzw. ist nicht gemeint, daher muss es als String gekennzeichnet werden. PHP ist (leider) sher tolerant was solche Fehler angeht und versucht dann zu erraten, was eigentlich gemeint ist.
    - Anstatt
    PHP-Code:
    $ID mysql_real_escape_string$_POST[ID]); 
    kannst du in dem Fall auch kürzer schreiben
    PHP-Code:
    $ID = (int) $_POST['ID']; 
    sofern ID ein Integer ist. Durch das casten nach int wird das Ergebnis "sicher" und muss nicht escaped werden.
    - Wie gesagt wurde, schau dir mysqli an. http://php.net/manual/de/book.mysqli.php
    Die Verwendung ist sehr ähnlich zur mysql-Extension, du musst also relativ wenig umlernen.

    EDIT: uha war schneller...
    Auch dir einen besten Danlk für deine Erklärung.
    Die blöden Hoch oder sonstwie doppel oder einfach Kommas gehen mir gehörig auf den . . . .

    Ich gelobe Besserung.

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Zitat von uha Beitrag anzeigen
    Select * passt nie! Auch in deinem Fall nicht!

    Du benutzt eine Konstante, die nicht existiert, PHP ist dann so gnädig und interpretiert das dann als String. Beispiel: $row[Fragen] ändern in $row['Fragen']

    Und was soll die while-Schleife, die ist sinnlos.
    Danke, das ist doch mal ne tolle Hilfe. Wenn es "nur" die Hochkommas sind, sollte ich das hinbekommen.

    Nochmals DANKE

    Einen Kommentar schreiben:


  • Ma27
    antwortet
    PDO wäre auch ne alternative
    http://php.net/manual/de/book.pdo.php

    Einen Kommentar schreiben:


  • monolith
    antwortet
    Ein paar Anmerkungen:
    - Du schreibst zunächst $_POST["Auswahl"] und dann darauf $_POST[Auswahl]. Bitte immer $_POST["Auswahl"] und das bei allen Array-Zugriffen, also bspw. $row["Fragen"] statt $row[Fragen]. Fragen wird sonst eigentlich als Name einer Konstanten und nicht als String interpretiert! Aber eine Konstante namens Fragen gibt es ja nicht bzw. ist nicht gemeint, daher muss es als String gekennzeichnet werden. PHP ist (leider) sher tolerant was solche Fehler angeht und versucht dann zu erraten, was eigentlich gemeint ist.
    - Anstatt
    PHP-Code:
    $ID mysql_real_escape_string$_POST[ID]); 
    kannst du in dem Fall auch kürzer schreiben
    PHP-Code:
    $ID = (int) $_POST['ID']; 
    sofern ID ein Integer ist. Durch das casten nach int wird das Ergebnis "sicher" und muss nicht escaped werden.
    - Wie gesagt wurde, schau dir mysqli an. http://php.net/manual/de/book.mysqli.php
    Die Verwendung ist sehr ähnlich zur mysql-Extension, du musst also relativ wenig umlernen.

    EDIT: uha war schneller...

    Einen Kommentar schreiben:


  • uha
    antwortet
    Zitat von Hügel Beitrag anzeigen
    Select * paßt hier, weil ich wirklich alle Spalten auslese.
    Select * passt nie! Auch in deinem Fall nicht!
    Zitat von Hügel Beitrag anzeigen
    Fehlermeldung: Notice:
    Use of undefined constant Name - assumed 'Name' in Dateiname.php on line 6
    Du benutzt eine Konstante, die nicht existiert, PHP ist dann so gnädig und interpretiert das dann als String. Beispiel: $row[Fragen] ändern in $row['Fragen']

    Und was soll die while-Schleife, die ist sinnlos.

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Zitat von nikosch Beitrag anzeigen
    So ein Müll.
    Danke, sehr hilfreich.

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Zitat von uha Beitrag anzeigen
    GRAUSAM!!!

    Schreibe mal an den Anfang diese beiden Zeilen
    PHP-Code:
    error_reporting(E_ALL);
    ini_set("display_errors"true); 
    und dann viel Spaß mit den Meldungen.
    Außerdem solltest du die MySQL-Extension nicht mehr nutzen, sondern auf MySQLi umsteigen.

    16.14. Warum soll ich nicht SELECT * schreiben?
    http://home.mengelke.de/html-php-mys...ql-select.html
    Select * paßt hier, weil ich wirklich alle Spalten auslese. Ansonsten völlig richtig.

    Fehlermeldung: Notice:
    Use of undefined constant Name - assumed 'Name' in Dateiname.php on line 6

    Toll. was bringt das? Sorry, mache das hobbymäßig, ohne dass irgendjemand da mit Geschwindigkeitsproblemen kommen darf. Solange ich keine riesigen Sicherheitsprobleme einbaue kann ich damit leben.

    Bitte hilf mir trotzdem, wie kann ich das verbessern?

    Mit dem MySQLi werde ich mich beschäftigen.

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Ergebnis anschauen??

    Gehst Du www.manbergen.de und klickst auf Mittelalterquiz
    Viel Spaß

    Einen Kommentar schreiben:


  • uha
    antwortet
    GRAUSAM!!!

    Schreibe mal an den Anfang diese beiden Zeilen
    PHP-Code:
    error_reporting(E_ALL);
    ini_set("display_errors"true); 
    und dann viel Spaß mit den Meldungen.
    Außerdem solltest du die MySQL-Extension nicht mehr nutzen, sondern auf MySQLi umsteigen.

    16.14. Warum soll ich nicht SELECT * schreiben?
    http://home.mengelke.de/html-php-mys...ql-select.html

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    So ein Müll.

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Zitat von Hügel Beitrag anzeigen
    Ich poste das Ergebnis später.
    So, hier das Ergebnis.

    Ich habe die Abfrage so geändert, dass er nur den letzen leeren Eintrag anzeigt.

    Nach ENTER schreibt er dort etwas rein und schon zeigt er mir den nächsten Eintrag.
    Gut in der falschen Reihenfolge, aber das stört mich nicht.
    PHP-Code:
     $Abfrage mysql_query ("Select * from ges_antworten WHERE Name = '$Name' and Antwort = ''");
         while (
    $row=mysql_fetch_array($Abfrage) )
         {
         
    $Fragen $row[Fragen];
         
    $ID $row[ID];
         }
    echo 
    '<table border = 1 CELLSPACING=3 CELLPADDING=3>
         <form action="" method="post">
         '
    .$Fragen.'
         <tr><td><textarea name="Antwort" cols = 55></textarea>
         <input type="hidden" name="ID" value="′.$ID.′">
         <tr><td><input type="submit" name="Auswahl" value="Antworten">
         <⁄table><⁄form>'
    ;    


    IF (
    $_POST["Auswahl"]=="Antworten") {
       
    $Antwort mysql_real_escape_string$_POST[Antwort]);
       
    $ID mysql_real_escape_string$_POST[ID]);
       
    mysql_query ("Update ges_antworten set `Antwort` = '$Antwort'
       where `ID` = ′
    $ID′ ");
       echo 
    '<meta http-equiv="refresh" content="0 URL=Datei.php?Name='.$Name.'">';

    Ok, meta refresh is nicht ganz sauber . . Aber so gehts.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Zitat von Hügel Beitrag anzeigen
    Danke,
    Das hatte ich fast befürchtet. Muss ich halt die Abfrage mehrfach aufrufen.
    Ich poste das Ergebnis später.
    Das wäre die schlechteste Variante.
    Nutz dann doch lieber ne Session...

    Einen Kommentar schreiben:


  • Hügel
    antwortet
    Danke,
    Das hatte ich fast befürchtet. Muss ich halt die Abfrage mehrfach aufrufen.
    Ich poste das Ergebnis später.

    Einen Kommentar schreiben:

Lädt...
X