Ankündigung

Einklappen
Keine Ankündigung bisher.

Keine Ausgabe bei Abfrage

Einklappen

Neue Werbung 2019

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

  • Keine Ausgabe bei Abfrage

    Hallo, probiere schon seit Tagen weshalb meine Ausgabe nicht funktioniert.
    Ich bin Anfänger.
    Ich denke mein Problem liegt bei:
    PHP-Code:
    $ergebnis mysql_query($query
    Ich weiß aber nicht warum?!

    Es sollen Daten aus der db ausgegeben werden, wenn zb 1 3 drei gesucht wird.
    Also Ergebnisse NUR mit Inhalt bei 1 und 3...

    NICHT zb wenn 123 besteht und dann trotzdem 1 und 3 ausgeben wird.
    Da hier 2 existiert, soll das ergebnis nicht angezeigt werden.


    Mein Code:
    PHP-Code:
    <?php

    $db 
    mysql_connect ()
    or die (
    "Fehler drinnen");

    mysql_select_db("xb0329_db1")
    or die(
    "Verbindung zur Datenbank war nicht möglich...");

    $ergebnis mysql_query($query)
    or die (
    mysql_error());
    while(
    $row mysql_fetch_array($ergebnis));

    if (isset(
    $_POST['suchen'])) {


        if (
    $_POST['1'] == '1') {
                die(
    'Fehler');
            if (
    $_POST['2'] == '2') {
                if (
    $_POST['3'] == '3') {
                    
    $query "SELECT * FROM suche WHERE 1=1 AND 2=2 AND 3=3";
                } else {
                    
    $query "SELECT * FROM suche WHERE 1=1 AND 2=2";
                }
            } else if (
    $_POST['3'] == '3') {
                
    $query "SELECT * FROM suche WHERE 1=1 AND 3=3";
            } else {
                
    $query "SELECT * FROM suche WHERE 1=1";
            }
            
        } else if (
    $_POST['2'] == '2') {
            
            if (
    $_POST['3'] == '3') {
                
    $query "SELECT * FROM suche WHERE 2=2 AND 3=3";
            } else {
                
    $query "SELECT * FROM suche WHERE 2=2";
            }
            
        } else if (
    $_POST['3'] == '3') {
            
    $query "SELECT * FROM suche WHERE 3=3";
        } else {
            
    // Nichts ausgewählt
        
    }

    }

    ?>
    Ausgabe:

    PHP-Code:
        ID: <?php echo $row->id;?><br>
        Rezept: <b><?php echo $row->rezept;?></b><br>

    Fertig:

    PHP-Code:
            <?php
    mysql_close 
    ($db);
    ?>

  • #2
    • Du sendest den Query via mysql_query() ab, bevor du den Query definierst. Du sendest einen leeren Query ab!
    • Auch die while-Schleife macht keinen Sinn, wenn ein Semikolon dasteht. Du musst nochmals den Ablauf deiner Applikation durchdenken.
    • Ich habe noch nicht richtig verstanden, was für Datensätze du genau aus der Datenbank holen möchtest. Daher habe ich derzeit auch noch keinen Optimierungsvorschlag. Aber die Art und Weise, wie du derzeit deinen Query setzt, die ist höchst merkwürdig - Dort ist enorme Optimierung möglich. Vielleicht erklärst du nochmals, was du versuchst zu tun.

    Kommentar


    • #3
      und bitte mysqli oder PDO statt mysql_* verwenden

      edit:
      und
      PHP-Code:
      error_reporting(E_ALL);
      ini_set('display_errors',1); 
      an den anfang des scripts schreiben
      liebe Grüße
      Fräulein Dingsda

      Kommentar


      • #4
        Vielen Dank schonmal !

        Du sendest den Query via mysql_query() ab, bevor du den Query definierst. Du sendest einen leeren Query ab!
        also das einfach runter runter setzen?
        PHP-Code:
        $ergebnis mysqli_query($query)
        or die (
        mysql_error());
        while(
        $row mysql_fetch_array($ergebnis)) 
        Auch die while-Schleife macht keinen Sinn
        ; weg?

        Was ich machen möchte, dauert länger zum erklären.
        Ihr kennt das sicherlich von webshops.

        ich möchte möchte zb ein tshirt in farbe rot oder blau suchen.
        also einen suchfilter. es funktionierte schonmal anders, da hatte ich aber das problem, das wenn ich nach shirts in blau und rot suche, kam auch ein shirt in farbe blau/schwarz. weil blau auch dabei ist. es sollte aber nur ausgegeben werden, wenn du abfrage genau übereinstimmt.

        mysqli oder PDO
        mit i am Ende verliere ich die Verbindung

        PDO kenn ich net :P

        Kommentar


        • #5
          so, mysqli_connect funktioniert.

          problem besteht weiterhin bei:

          Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/XAMPP/xamppfiles/htdocs/index.php on line 195

          zeile 195:
          PHP-Code:
          $ergebnis mysqli_query($query

          Kommentar


          • #6
            • Aus deinen Queries im obigen Quellcode lässt sich bereits schließen, dass deine Datenbankstruktur womöglich "unbrauchbar" ist und überarbeitet werden sollte. Dann sollte auch das Suchen bestimmter Farben für bestimmte Produkte kein Problem sein. Du solltest dir also nochmals überlegen, wie die Datenbank aufgebaut werden sollte (Ein nutzbares Tutorial: http://www.peterkropff.de/site/mysql/mysql.htm).
            • Wie mysql_query() angewendet wird, kannst du dir hier anschauen (und auch an zig weiteren Stellen im Netz - einfach mal googlen): http://www.php.net/manual/de/function.mysql-query.php
            • Die API, aus der mysql_query() jedoch stammt, ist bereits seit längerer Zeit als deprecated eingestuft. Daher sollte man zu mysqli bzw. PDO umsteigen. Mit den Links hier und Google solltest du dich einlesen können.

            Kommentar


            • #7
              leider komme ich überhaupt nicht weiter.

              wenn ich folgenden code verwende, funktioniert wenigstens die ausgabe. problem ist, das die verfeinerung fehlt.

              zb inhalt: l23 - wenn nach l und 3 gesucht wird, soll nur die suche ausgegeben werden.

              also nicht zb l23, da ja nach 2 nicht gesucht wurde.

              PHP-Code:
                      if ($_POST['l'] == ''$_POST['l'] = "LEER";
                      if (
              $_POST['2'] == ''$_POST['2'] = "LEER";
                      if (
              $_POST['3'] == ''$_POST['3'] = "LEER";


                      
              $abfrage "SELECT * FROM suche WHERE 
                      l='"
              .$_POST['l']."'
                      OR 2='"
              .$_POST['2']."'
                      OR 3='"
              .$_POST['3']."' ORDER BY id DESC"

              Kommentar

              Lädt...
              X