Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] -like- mehrere variablen ein feld

Einklappen

Neue Werbung 2019

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

  • [Erledigt] -like- mehrere variablen ein feld

    hi
    folgendes...

    PHP-Code:
     WHERE t_tabelle.f_feld1 like '" . $sqldepart2 . "'
            
    and t_tabelle.f_feld1 like '" . $sqldepart1 . "'
            
    and t_tabelle.f_feld1 like '" . $sqldepart . "' 
    part part1 und part3 sind ein textfeld, eine dropdownliste und 4 checkboxen.

    mein problem:
    er gibt jeweils nur das letzte aus also hier was in part aus dem formular ankommt. gebe ich was ins textfeld ein gehts nicht ;-(

    wo liegt der synthax fehler begraben? wie muss ich das anderst schreiben? hab leider nichts vergleichbares gefunden die mysql doku hilft mir nich wirklich ://
    und nein ich kann die mysql abfrage nicht einzeln machen...

    vielen danke der hilfe

  • #2
    Hallo taurus,
    kannst du das bitte nochmal genauer beschreiben?

    Wenn die 3 Variabeln verschiedene Werte enthalten (und keine "Platzhalter" an den richtigen Stellen...) kann das garnicht gehen.
    Das Feld "f_feld1" kann nunmal nicht gleich wie drei unterschiedliche Werte sein. Eventuell willst du OR statt AND?

    Kommentar


    • #3
      ja war war etwas knapp erklärt... )

      ich hab eine form mit mehreren suchmöglichkeiten durch die dann der inhalt mehrerer tabellen in einer tabelle aufgelistet werden.
      füge ich jetzt zum bestehenden query dies hier an:
      PHP-Code:
      and t_kdansparts.f_depart like '" . $sqldepart . "' OR '" . $sqldepart2 . "' 
      s.o. kann ich nur letzeteres benutzten also nur das dropdown menü und nicht die texteingabe.
      bei der texteingabe liestet er dann alles auf auch die zeilen in denen nicht die übergebenen werte enthalten sind.

      zur vollständigkeit der fast komplette code. nehme stark an das liegt am query...

      DAS QUERY
      PHP-Code:
      <?
      $sql='';
        if (($edtKunde != '') || ($cboKunde == '*')) {
          $sqlKunde = '%' ;
          if ($edtKunde != '*') {
            $sqlKunde = $sqlKunde . $edtKunde . '%';
          }
        } else {
          $sqlKunde = $cboKunde;
        }
        
        $sqlPhone = '%' . $edtPhone . '%';

        if ($cboKette == '*') {
          $sqlKette = '%';
        } else {
          $sqlKette = $cboKette;
        }
        
        $sqlSort = $cboSort;
          


              $sqldepart = '%' . $depart . '%'; <--depart zusätzliche variable aus der form.. ich mpsste wie oben noch zwei weitere hinzufügen je nach dem in welchem feld man sucht 
                                                                     (dd menü, checkboxen, textfeld....)


        
        $sql = "select t_kunden.*,
                       t_servicev.*,
                       t_kdansparts.*,
                       zz_kette.f_value as f_hotelkette,
                       zz_reseller.f_value as f_reseller,
                       zz_inbetriebnahme.f_value as f_inbetriebnahme
                  from t_kunden 
                          left outer join t_servicev on t_servicev.f_refkunde = t_kunden.f_idkunde
                                              left outer join t_kdansparts on t_kdansparts.f_refkunde = t_kunden.f_idkunde
                                              
                          left outer join t_customer_datafields zz_kette on zz_kette.f_idkunde = t_kunden.f_idkunde 
                                                                        and zz_kette.f_label = 'Hotelkette' 
                          left outer join t_customer_datafields zz_reseller on zz_reseller.f_idkunde = t_kunden.f_idkunde
                                                                           and zz_reseller.f_label = 'Verkäufer (Firma):'
                          left outer join t_customer_datafields zz_inbetriebnahme on zz_inbetriebnahme.f_idkunde = t_kunden.f_idkunde
                                                                           and zz_inbetriebnahme.f_label = 'Datum Inbetriebnmahme:'
                 where t_kunden.f_kdname like '" . $sqlKunde . "'              
                   and t_kunden.f_telefon like '" . $sqlPhone . "' 
                   and zz_kette.f_value like '" . $sqlKette . "'
                                and t_kdansparts.f_depart like '" . $sqldepart2 . "'
                               and t_kdansparts.f_depart like '" . $sqldepart1 . "'
                               and t_kdansparts.f_depart like '" . $sqldepart . "'  <-- nehme ich nur diese zeile funktionierts. alle drei auf einmal gehen nicht.
      frage: übergeben textfelder und dropdownlisten auch werte wenn sie gar nicht ausgefüllt sind?


                               
                              


                               
              order by $sqlSort ";
      ?>
      Ausschnitt aus der Datei die mir das Query anzeigt:
      PHP-Code:
        if (!empty($_POST)) {

          include(
      "sql/sql_select_ansprech.php");    
          
      //echo $datensatz;
          
          
      $result mysql_query($sql) OR die(mysql_error());        
          
          
      $str '?cboKunde=' $cboKunde .
                 
      '&edtKunde=' $edtKunde .
                 
      '&chkSort=' $chkSort .
                 
      '&cboKette=' $cboKette;

          echo 
      '<p align="right"><a target="_blank" href=""><img border="0" src="gfx/pdf_button.png"></a></p>';
          echo 
      '<p>Anzahl Datens&auml;tze: ' mysql_num_rows($result) . '</p>';
          
          echo 
      '<table width="100%" border="1">
                <tr>
                  <th width="5%" align="left">Hotel</th>
                  <th width="5%" align="left">Kette</th>
                  <th width="12.5%" align="left">Anrede</th>
                  <th width="7.5%" align="left">Name</th>
                  <th width="15%" align="left">Vorname</th>
                  <th width="7.5%" align="left">Abteilung</th>
                  <th width="15%" align="left">Ort</th>
                  <th width="7.5%" align="left">Anschrift</th>
                  <th width="7.5%" align="left">Telefon</th>
                  <th width="5%" align="left">Telefax</th>
                              <th width="7.5%" align="left">Mobil</th>
                              <th width="7.5%" align="left">Email</th>
                              <th width="7.5%" align="left">Hotel-Email</th>
                </tr>'
      ;

          while(
      $row mysql_fetch_assoc($result)) {
      //include("sql/sql_select_ansprech.php"); 


            
      echo '<tr>';

            if (!empty(
      $row['f_hotelkette'])) {
              echo 
      '<td>' $row['f_hotelkette']  . '</td>';
            } else {
              echo 
      '<td>&nbsp;</td>';
            }
            
            echo 
      '<td>'.$row['f_kdnr'].'</td>'

            echo 
      '<td>' $row['f_kdname']  . '</td>'; <-- geht natürlich weiter sind etwa 10 spalten.... 

      ich poste nicht die form und deren sql abfrage da dies einwandfrei funktioniert.. liegt also nur in der sql abfrage!!


      DANKE für Tipps ))

      KURZ GESAGT:
      Ich möchte 4 checkboxen, 1 textfeld und ein dropdownmenü mit in das formular einbinden und entweder die checkboxen ODER das formular ODER die DD benutzten um nur werte anzuzeigen die den definierten wert im feld f_depart haben... mein ansatz würde ich als richtig sehen da ja nur ein wert übergeben wird da ja nur eine form ausgewählt wird.

      Kommentar


      • #4
        Syntax-Fehler

        Erste Info zu dir. Du hast kein Syntaxfehler, sondern ein semantischen Fehler, offensichtlich funzzt ja deine Query, nur nicht so wie du es möchtest. Bei der Verknüpfung mehrerer LIKEs o.ä. mit einer der logischen Operatoren muss man etwas aufpassen, wie man die Query gestalltet und vor allem was in der DB tatsächlich drin ist. Bei der Verknüpfung mit den OR-Operator wird die Query von Links nach Rechts abgearbeitet bis nicht der erste TRUE ist. Das heist das deine vorherigen LIKE-Matches keine Werte finden. Das kann natürlich entweder an fehlenden Werten in den Kolumnen liegen oder an einen semantisch Fehlerhaften LIKE-Match. Es gibt noch die Möglichkeiten mit REGEX, =, IN oder MATCH-AGAINST die du eventuell in Betracht ziehen solltest.
        Ausserdem ist deine Query etwas groß, ich würde sie in kleinere Teile zerlegen und dann Step-Weise die Ursache des Fehlverhaltens suchen und beseitigen.

        Der Fehler bei dir ist aber Offensichtlich. Du verlangst das eine Spalte gleichzeitig drei verschiedene Werte besitzt, das währe so als ob ich von meiner Frau verlangen würde das Sie gleichzeitig eine Blondine, Brünette und Rothaarige ist. Sie kann aber nur eins davon sein, so auch der Spalten-Wert. Der Moderator Adrajag hat dir schon 'ne richtige Antwort gegeben. Setze 'OR' statt 'AND' ein.

        Kommentar


        • #5
          sorry, aber der thread ist 3 jahre alt.. und das Problem schon längst verjährt

          Kommentar


          • #6
            Sorry, habs übersehen

            Sorry habs übersehen: eek:

            Kommentar

            Lädt...
            X