php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 24-02-2003, 22:20
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habs abgeändert aber es ändert sich dadurch nichts am Ergebnis, wenn ich nach ganz normale Textfeldern suche funktioniert die Sache problemlos, aber wenn ich nach einem Feld suche mit arrayinhalt (in der DB steht z.b: Restaurant,Biergarten,Catering= und ich suche nun nach einem Datensatz der den Eintrag Biergarten enthält erscheint obengenannte fehlermeldung
Mit Zitat antworten
  #17 (permalink)  
Alt 24-02-2003, 22:23
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@wurzel

die Fehlermeldung ist jetzt weg, aber dennoch erscheint kein Ergebnis, d.h. die Zeile in der etwas stehen müsste bleibt leer
Mit Zitat antworten
  #18 (permalink)  
Alt 24-02-2003, 22:26
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab gerade gemerkt, wenn ich '$where' schreibe funktioniert nicht einmal mehr die Suche nach PLZ,, komischerweise erscheint dann die Fehlermeldung wie vorher

You have an error in your SQL syntax near 'Achern' ' ORDER BY anz_name ASC' at line


(Suchbegriff war Achern)
Mit Zitat antworten
  #19 (permalink)  
Alt 24-02-2003, 22:30
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

muss das Suchfeld in der html-Datei (also im Suchformular) als array mit kategorie[] gekennzeichnet sein?

Hab ich jetzt gemacht, aber es hat sich dadurch nichts geändert
Mit Zitat antworten
  #20 (permalink)  
Alt 25-02-2003, 08:29
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tjaaaa ... du hast oben in der Where-Zusammenstellung ein
$where.="anz_kategorie='".$_POST['anz_kategorie']."' AND";
weiter unten benutzt du $_POST['anz_kategorie'] als Array ...

Was meinst du, hat wohl where anz_kategorie='Array' zur Folge?

besser:
PHP-Code:
if (!empty($_POST['anz_kategorie']) && count($_POST['anz_kategorie'])
  
$where.="anz_kategorie in ('"implode("', '"$_POST['anz_kategorie'])."') AND"
__________________
mein Sport: mein Frühstück: meine Arbeit:

Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
Mit Zitat antworten
  #21 (permalink)  
Alt 25-02-2003, 08:41
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

noch was: wenn überhaupt kein Parameter gesetzt ist, sieht deine Query so aus:

SELECT * FROM anzeigen where ORDER BY anz_name ASC

gibt auch einen Syntax Error ... mach aus dem

$where=substr($where,0,strlen($where)-4);

das hier:

$where .= ' 1';

noch besser ist natürlich der Code hier
(nicht nur weil er von mir ist; er ist einfach kürzer, übersichtlicher und besser zu warten):
PHP-Code:
// Where-Definition zusammensetzen
$fields = array('anz_plz''anz_ort''anz_preiskat',
  
'anz_livemusik''anz_kueche''anz_freizeit''anz_rubrik'
);
$array_fields = array('anz_kategorie''anz_kategorie2');

$where = array();
foreach(
$_POST as $name=>$wert)
  if (
in_array($name$fields))
    
$where[] = "$name = '"
      
mysql_escape_string(stripslashes($wert)). "'";
  elseif (
in_array($name$array_fields) && count($wert))
    
$where[] = "$name in ('"implode("', '"$wert). "')";
$where_str = (count($where)
  ? 
' where 'implode(' and '$where)
  : 
''
);

$abfrage="SELECT * FROM anzeigen
  $where_str ORDER BY anz_name ASC"

__________________
mein Sport: mein Frühstück: meine Arbeit:

Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
Mit Zitat antworten
  #22 (permalink)  
Alt 25-02-2003, 09:39
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn ich das so mache kommt die fehlermeldung:


Parse error: parse error in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 35

(Zeile 35 ist:

$where.="anz_kategorie in ('". implode("', '", $_POST['anz_kategorie'])."') AND";
Mit Zitat antworten
  #23 (permalink)  
Alt 25-02-2003, 10:06
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schau mal in Zeile 34 ... da wird ne Klammer zu wenig zu gemacht.
Mit Zitat antworten
  #24 (permalink)  
Alt 25-02-2003, 11:44
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab die Klammer reingemacht, aber keine Änderung im Ergebnis:

Bsp.:

ich geben in die Suchbegriffe plz: 77855 und Ort: Achern ein, dann funktioniert es

ich hab einmal ein echo aufs Ergebnis gemacht und es erscheint:

$abfrage hat den Wert: SELECT * FROM anzeigen WHERE anz_plz='77855' AND anz_ort='Achern' ORDER BY anz_name ASC
$where hat den Wert: anz_plz='77855' AND anz_ort='Achern'


gebe ich nun lediglich als Suchbegriff im Feld kategorie: Hotel-Restaurant ein, und lasse alle anderen Felder leer, dann erscheint (ACHTUNG: es gibt einen Datensatz in der Tabelle im Feld Kategorie, der diesen Wert enthält):

$abfrage hat den Wert: SELECT * FROM anzeigen WHERE ORDER BY anz_name ASC
$where hat den Wert: You have an error in your SQL syntax near 'ORDER BY anz_name ASC' at line 1

Woran kanns liegen??
Mit Zitat antworten
  #25 (permalink)  
Alt 25-02-2003, 18:29
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Titus


sorry, hatte Dein posting von 8:41 uhr total übersehen (war wohl wieder mal mit Blindheit geschlagen *g).

Habe nun den code wie unten aufgeführt geändert, aber jetzt liefert mir die Abfrage keine Ergebnisse. Liegt wohl daran, dass in der DB in den einzelnen Feldern etwas steht und die Abfrage so generiert ist, dass beim Abfragen die Felder leer waren.

Die gestellte Suchabfrage lautete. Suche nach dem Feld kategorie mit dem inhalt Hotel-Restaurant daraufhin enthält der $where-Wert folgendes:

$abfrage hat den Wert: SELECT * FROM anzeigen where anz_plz = '' and anz_ort = '' and anz_livemusik = '' and anz_kueche = '' and anz_freizeit = '' and anz_rubrik = '' ORDER BY anz_name ASC
$where hat den Wert: Array



code komplettes Script:

PHP-Code:

<?
// Copyright by M.Heizmann
// Hier keine Veränderungen vornehmen
// Datenbankverbindung

include("config.php");
include(
"db_connect.php");


// Datenbank auslesen


// Where-Definition zusammensetzen

$fields = array('anz_plz''anz_ort''anz_preiskat',

  
'anz_livemusik''anz_kueche''anz_freizeit''anz_rubrik'

);

$array_fields = array('anz_kategorie''anz_kategorie2');



$where = array();

foreach(
$_POST as $name=>$wert)

  if (
in_array($name$fields))

    
$where[] = "$name = '"

      
mysql_escape_string(stripslashes($wert)). "'";

  elseif (
in_array($name$array_fields) && count($wert))

    
$where[] = "$name in ('"implode("', '"$wert). "')";

$where_str = (count($where)

  ? 
' where 'implode(' and '$where)

  : 
''

);



$abfrage="SELECT * FROM anzeigen

  $where_str ORDER BY anz_name ASC"
;



echo 
'<hr />$abfrage hat den Wert: '.$abfrage.'<br />';

echo 
'$where hat den Wert: '.$where.'<hr />';

$ergebnis=mysql_query($abfrage) or die(mysql_error());

// Ergebnisse ausgeben

echo "<html>";
echo 
"<head>";
echo 
"</head>";
echo 
"<body bgcolor=\"#EEECE4\" text=#000000>";
echo 
"<center>";
echo 
"<table border=0 cellspacing=1 width=800 bordercolor=#000000>";
echo 
"<tr><p><font size=-2 color=#000000 face=verdana><b>Nachfolgende Lokalitäten stimmen mit Ihrer Suchdefinition überein.<br>";
echo 
"Zur Detailansicht auf mehr... klicken !</font></p></tr>";
echo 
"<tr>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Bild</b></font></td>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Name</b></font></td>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Ort</b></font></td>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Kategorie</b></font></td>";        
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Kontakt</b></font></td>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Homepage</b></font></td>";
        echo 
"<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Details</b></font></td>";
echo 
"</tr>";


while(list(
$anz_id,$anz_datum,$anz_name,$anz_inhaber,$anz_strasse,$anz_plz,$anz_ort,$anz_land,$anz_staat,$anz_email,$anz_page,$anz_link,$anz_tel,$anz_fax,$anz_partner,$anz_kategorie,$anz_kategorie2,$anz_offen,$anz_preiskat,$anz_livemusik,$anz_stil,$anz_kredkarte,$anz_lieferservice,$anz_zimmerzahl,$anz_zimmerpreis,$anz_sitzplatz,$anz_nebenraum,$anz_ruhetag,$anz_seminar,$anz_biere,$anz_kueche,$anz_spezial,$anz_rubrik,$anz_freizeit,$anz_text,$anz_bild1,$anz_bild2,$anz_bild3,$anz_bild4,$anz_chiffre)=mysql_fetch_row($ergebnis)) { 
if (
$anz_datum){
           
ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$anz_datum$dat);


}
echo 
"<tr align=center>";
      echo 
"<td align=center><font color=#000000 face=verdana size=-2><img src='$anz_bild1' width=\"80\" height=\"60\"></font></td>";
        echo 
"<td align=center><font color=#000000 face=verdana size=-2>$anz_name</font></td>";
        echo 
"<td align=center><font color=#000000 face=verdana size=-2></font>$anz_ort</td>";
        echo 
"<td align=center><font color=#000000 face=verdana size=-2></font>$anz_kategorie</td>";
        echo 
"<td align=center><a href='../script/reply.php?anz_chiff=$anz_chiff&anz_name=$anz_name' target=details ONCLICK=window.open('','details','scrollbars=yes,width=600,height=480')><img src=../image/mail.gif width=17 height=14 border=0></a></td>";
        echo 
"<td align=center><font color=#000000 face=verdana size=-2></font><a href='$anz_page' target='_blank'>$anz_page</a></td>";
        echo 
"<td align=center><font color=#000000 face=verdana size=-2><a href='../script/detail.php?anz_name=$anz_name&anz_id=$anz_id' target=details ONCLICK=window.open('','details','scrollbars=yes,width=800,height=600')>mehr ...</a></font></td>";
   echo 
"</tr>";
         
}
echo 
"<tr><td><br><br><input type=button value=zurück onClick=history.back()></td></tr>";
echo 
"</table><br><br>";
echo 
"<td align=center><img src=\"../../images/teiler.jpg\" width=\"596\" height=\"25\"></td>";


echo 
"</center>";
echo 
"</body>";
echo 
"</html>";

// Datenbank schliessen

mysql_close$link );

?>
Was kann ich tun, damit ein Ergenis erscheint?

Geändert von Martin5000 (25-02-2003 um 19:55 Uhr)
Mit Zitat antworten
  #26 (permalink)  
Alt 26-02-2003, 11:37
Martin5000
 Junior Member
Links : Onlinestatus : Martin5000 ist offline
Registriert seit: Jun 2002
Ort: Achern
Beiträge: 168
Martin5000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab nochmal alles überprüft und festgestellt, dass ich in meiner Suchmaske einen Fehler hatte, wenn ich aber das obige Script ausführe erscheint die Fehlermeldung:

Warning: Bad arguments to implode() in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 36

Warning: Bad arguments to implode() in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 36
$abfrage hat den Wert: SELECT * FROM anzeigen where anz_plz = '77855' and anz_ort = '' and anz_kategorie in ('') and anz_kategorie2 in ('') and anz_preiskat = '' ORDER BY anz_name ASC
$where hat den Wert: Array

----------------------------------------

line 36 ist die folgende:

$where[] = "$name in ('". implode("', '", $wert). "')";
Mit Zitat antworten
  #27 (permalink)  
Alt 26-02-2003, 11:42
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

PHP-Code:
print_r($wert); 
was bringt das?

bad arguments heißt imo dass mindestens einer der parameter falsch is und der erste sieht richtig aus *g*
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:49 Uhr.