php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2008, 00:06  
Erfahrener Benutzer
 
Benutzerbild von taurus
 
Registriert seit: 01.11.2008
Beiträge: 825
PHP-Kenntnisse:
Anfänger
taurus ist zur Zeit noch ein unbeschriebenes Blatt
Standard [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
taurus ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2008, 00:58  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

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?
agrajag ist offline   Mit Zitat antworten
Alt 30.11.2008, 08:35  
Erfahrener Benutzer
 
Benutzerbild von taurus
 
Registriert seit: 01.11.2008
Beiträge: 825
PHP-Kenntnisse:
Anfänger
taurus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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ücheckboxentextfeld....)


  
  
$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.

Geändert von taurus (30.11.2008 um 15:15 Uhr).
taurus ist offline   Mit Zitat antworten
Alt 26.11.2011, 18:17  
Neuer Benutzer
 
Registriert seit: 26.11.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
komnenos befindet sich auf einem aufstrebenden Ast
Standard 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.

Geändert von komnenos (26.11.2011 um 18:31 Uhr).
komnenos ist offline   Mit Zitat antworten
Alt 26.11.2011, 18:25  
Erfahrener Benutzer
 
Benutzerbild von taurus
 
Registriert seit: 01.11.2008
Beiträge: 825
PHP-Kenntnisse:
Anfänger
taurus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, aber der thread ist 3 jahre alt.. und das Problem schon längst verjährt
taurus ist offline   Mit Zitat antworten
Alt 26.11.2011, 18:32  
Neuer Benutzer
 
Registriert seit: 26.11.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
komnenos befindet sich auf einem aufstrebenden Ast
Standard Sorry, habs übersehen

Sorry habs übersehen: eek:
komnenos ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Limit auf Ergebnissumme mehrerer Tabellen Frank Datenbanken 8 02.09.2008 11:33
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
komplizierte SQL-Abfrage keinplanvonnix PHP Tipps 2008 3 23.04.2008 15:42
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
Abfrage mit NOT LIKE funktioniert nicht wirklich PsychoEagle Datenbanken 6 26.09.2006 11:45
LIKE und Suche nach Escape-Sequenzen bicpi Datenbanken 0 20.09.2006 13:39
Such-Statement-Problem Timo Trallala Datenbanken 1 22.07.2006 13:48
SOUNDS LIKE, SOUNDEX und LIKE ClaBo3 Datenbanken 10 23.03.2006 22:17
Abfrage von mehreren Werten mit Hilfe von LIKE? PHP Tipps 2005-2 4 12.09.2005 19:19
Array nach Feld sortieren PHP Tipps 2005-2 2 07.08.2005 23:00
NOT LIKE Abfrage bringt kein Ergebnis in leerem Feld PHP Tipps 2005 4 26.03.2005 15:25
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
inhalt aus einem imput feld mit variablen Namen auslesen HTML, Usability und Barrierefreiheit 4 08.01.2005 00:43
Diskussion zu Tutorial MySQL-Datenbank durchsuchen Guradia Off-Topic Diskussionen 9 22.10.2004 19:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql like mehrere werte, sql not like mehrere werte, sql mehrere like, php like mehrere, sql like mehrere, sql db einträge mehrere werte in einem feld, php where like variable, where like mehrere werte, sql abfrage nach mehreren werten einer variablen, sql not like mehrere werte mit platzhalter, mehrere variablen in eine php, mysql abfrage like % feldname, mysql feld mehrere werte like, php mehrere variablen in ein feld, ähnliche mit soundex mysql zwei felder, php where like mehrere variablen, mehrere variablen aus der datenbank in ein textfeld schreiben, sql where like mehrere, mysql mehrere variablen ein feldt, sql like variable abfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum