PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   explode einzelne Daten aus DB (https://www.php-resource.de/forum/php-developer-forum/16721-explode-einzelne-daten-aus-db.html)

Martin5000 22-02-2003 11:45

explode einzelne Daten aus DB
 
hallo Leute,

habe in DB mittels implode Daetn in einem Feld mit der Bezeichnung anz_kategorie stehen, und zwar in der Form Name1,Name2,Name3,....

ich möchte nun dieses Feld über eine Suchfunktion abfragen, und zwar soll der User aus mehreren Möglichkeiten wählen (Name1 oder Name2 oder....)

Kann man das mit explode lösen, und wenn ja wie?

bisher habe ich folgenden code:

while(list($anz_id,$an_kategorie)=mysql_fetch_row($ergebnis)) {


$kat=explode(",",$anz_kategorie);

.......


echo "<td align=center><font color=#000000 face=verdana size=-2></font>$kat</td>";

Gruss

Martin

mrhappiness 22-02-2003 11:47

hilft dir in_array weiter?

Martin5000 22-02-2003 12:41

sorry, hilft mir momentan noch nicht entscheidend weiter

mrhappiness 22-02-2003 12:49

der user gibt z.b. "hasu" und "auto" ein. diese usereingabe hast du in deinem skript im array $_POST['gesucht'] stehen.
PHP-Code:

while(list($anz_id,$an_kategorie)=mysql_fetch_row($ergebnis))
{
  
$kat=explode(",",$anz_kategorie);
  for (
$i=0;$i<count($_POST['gesucht']);$i++)
    if (
in_array($_POST['gesucht'][$i],$kat)
    {
      
$gefunden=true;
      break;
    }


so in etwa? oder willst du was anderes?

Martin5000 24-02-2003 19:26

habe den code lt. Angabe verändert in

Usereingabe:


PHP-Code:

if (!empty($HTTP_POST_VARS['anz_kategorie']))

  
$where.="anz_kategorie='".$HTTP_POST_VARS['anz_kategorie']."' AND "


PHP-Code:


while(list($anz_id,$anz_kategorie)=mysql_fetch_row($ergebnis)) { 
if (
$anz_datum){
           
ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$anz_datum$dat);

{
$kat=explode(",",$anz_kategorie);
for (
$i=0;$i<count ($HTTP_POST_VARS['anz_kategorie']);$i++)
     if (
in_array($HTTP_POST_VARS['anz_kategorie'] [$i],$kat)
     {
               
$katgef=true;
               break;
     }
}





Der echobefehl für diese Zeile lautet:

echo "<td align=center><font color=#000000 face=verdana size=-2></font>$katgef</td>";




Es ersccheint folgende Fehlermeldung:

Fatal error: Call to unsupported or undefined function in_array() in /home/strato/www/ho/www.ho......................./search.php3 on line 99

Zur Verdeutlichung nochmals:


1. In der DB stehen im feld anz_kategorie mehrere Werte durch , getrennt.

2. Im Suchscript kann der User aus der Vielzahl der Werte einen einzigen aussuchen.

3. Daraufhins soll das Feld anz_kategorie nach dem gewählten Wert auf sein Vorkommen durchsucht werden , und wenn er gefunden wird mittels echo-Befehl ausgegeben werden.

Ich hoffen, dass ich mich verständlich machen konnte und mir jemand weiterhelfen kann.

Bis dann

Martin

mrhappiness 24-02-2003 20:27

was für ne php-version hast du?

Martin5000 24-02-2003 20:28

php3

mrhappiness 24-02-2003 20:33

und da willst du nicht updaten?

naja, probier's mal damit
PHP-Code:

function in_array($needle,$haystack)
{
  foreach (
$haystack as $key => $value)
           if (
stristr($value$needle))
              return 
true;
  return 
false;


PHP3 is übrigens uralt, sicher dass du nicht vielleicht doch 4.x hast?

Martin5000 24-02-2003 20:39

mein provider bietet auch php 4 an, aber die file, die ich als Grundlage für mein prog habe sind alle *.php3.

Frage kann ich die 3er und 4er Version mischen?

Versteh zwar im Moment nur Bahnhof, versuchs aber gleich einmal mit dem neuen code, vielleicht bekomm ichs ja hin.

Danke

Martin

mrhappiness 24-02-2003 20:40

benenne die um in *.php, dann sollte es gehen

Oder hast du nen speziellen grund dafür, php3 zu nutzen?

Martin5000 24-02-2003 21:51

habe die Dateien und die Verweise innerhalb der Dateien von *.php3 in *.php umbenannt und den erstgeposteten code eingefügt:

nachfolgend einmal der komplette code

PHP-Code:

<?
// 
// Hier keine Veränderungen vornehmen
// Datenbankverbindung

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

// Löschen von alten Anzeigen

// include("expire.php");

// Datenbank auslesen

// echo '$HTTP_POST_VARS:<br />';

// var_dump($HTTP_POST_VARS);

// echo '<hr />$HTTP_POST_VARS:<br />';

// var_dump($HTTP_POST_VARS);

$where='';

if (!empty(
$HTTP_POST_VARS['anz_plz']))

  
$where.="anz_plz='".$HTTP_POST_VARS['anz_plz']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_ort']))

  
$where.="anz_ort='".$HTTP_POST_VARS['anz_ort']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_kategorie']))

  
$where.="anz_kategorie='".$HTTP_POST_VARS['anz_kategorie']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_kategorie2']))

  
$where.="anz_kategorie2='".$HTTP_POST_VARS['anz_kategorie2']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_preiskat']))

  
$where.="anz_preiskat='".$HTTP_POST_VARS['anz_preiskat']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_livemusik']))

  
$where.="anz_livemusik='".$HTTP_POST_VARS['anz_livemusik']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_kueche']))

  
$where.="anz_kueche='".$HTTP_POST_VARS['anz_kueche']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_freizeit']))

  
$where.="anz_freizeit='".$HTTP_POST_VARS['anz_freizeit']."' AND ";

if (!empty(
$HTTP_POST_VARS['anz_rubrik']))

  
$where.="anz_rubrik='".$HTTP_POST_VARS['anz_rubrik']."' AND ";

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

$abfrage="SELECT * FROM anzeigen WHERE $where 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);

{
$kat=explode(",",$anz_kategorie); 
for (
$i=0;$i<count ($HTTP_POST_VARS['anz_kategorie']);$i++) 
if (
in_array($HTTP_POST_VARS['anz_kategorie'] [$i],$kat

$katgef=true
break; 
     }
}

}
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>$katgef</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 );

?>

es erscheint folgende Fehlermeldung:

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


Zeile 100 ist das

{

vor
$katgef=true;

mrhappiness 24-02-2003 21:56

hast eine schließende runde klammer vergessen (zeile 98)

if ( in_array( ) )

du hast: if (in_array()

Martin5000 24-02-2003 22:06

Danke war wohl mal wieder zu schnell, und hab noch einen Fehler gefunden

in der Zeile

echo "<td align=center><font color=#000000 face=verdana size=-2></font>$katgef</td>";

muss es heissen

echo "<td align=center><font color=#000000 face=verdana size=-2></font>$anz_kategorie</td>";


Wenn ich nun z.B. nach PLZ suche erscheint das Formular mit den richtigen Einträgen

suche ich aber z.B. exklusiv im Feld kategorie, dann kommt

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

Woran kann das liegen?

mrhappiness 24-02-2003 22:11

kommtm ir irgendwie bekannt vor *g*

beim ersten mal lags glaub ich dadran, dass ich dir gesagt hab: "verwende $_POST"
das ging nicht, da es als PHP3 interpretiert wurde

PHP4 wird wahrscheinlich nix mit $HTTP_POST_VARS anfangen können

Wurzel 24-02-2003 22:13

versuchs mal mit:

PHP-Code:

$abfrage="SELECT * FROM anzeigen WHERE '$where' ORDER BY anz_name ASC"

vorausgesetzt in where steht drin was drin stehen soll :D

gruss wurzel


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:14 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG