Suchskript

Dolphon

Erfahrenes Mitglied
Moin.

Ich bin am verzweilfen. Ichbekomme dieses Skript einfach nicht zum laufen.
Ich geben den Suchbegriff ein, und erspuckt mir nichts aus. Drch debuggen hab ich herausgefunden, das er garnicht in die IF Schleife springt. den Suchbegriff kann ich nämlihcvor der Schleife ausgeben, nur in der SChleife nicht.
Und somit kann ich auch nicht testen, ob der Code in der Schleife funktioniert.

PHP:
if ($_POST['1']) //ueberprueft ob der submit button gedrückt wurde
{ 
echo $_POST['begriff'];

   if (strlen($_POST['begriff']))
   {
     $array = explode(' ',$_POST['begriff']);

     $conditions = array();
     foreach ($array as $value)
     {
       $data  = "(vorname_kunden like '%$value%' OR ";
       $data .= "nachname_kunden like '%$value%' OR ";
       $data .= "ort_kunden like '%$value%')";
       $conditions[] = $data;
     }

     $query = 'SELECT id, vorname_kunden, nachname_kunden, ort_kunden FROM kunden';

     if (count($conditions))
     {
        $condition = " where " . implode (" or ", $conditions);

        $query .= $condition;
     }

     echo $query;

    $result = mysql_query($query);

    if (mysql_errno()) die ("MySQL-Error: " . mysql_error());

    while ($data = mysql_fetch_array())
    {
       $kunden_id = $data['id'];
       $vorname   = $data['vorname_kunden'];
       $nachname  = $data['nachname_kunden'];
       $ort       = $data['ort_kunden'];
      
       echo '<a href="intern.php?site=kunden&kunden_id=' . $kunden_id . '">';
       echo $vorname . ' ' . $nachname . ' ' . $ort . '</a><br>\n'; 
    } 
  }
}
?>

<form action="intern.php?site=searchkunden" method="post">
<p align="center"><b>Hier können sie den Namen, Nachnamen oder Ort des Kunden eingeben den Sie suchen!<br>Bitte geben Sie den Suchbegriff ein:</b> <p>
<b><font color="#336699">Suchbegriff:</b><br>
<input type="text" name="begriff" size="35"><br>
<input type="submit" name="1" value="Eintragen">
<input type="reset" value="Löschen">
</form>
 
Mit
Code:
if ($_POST['1']) //ueberprueft ob der submit button gedrückt wurde
....prüfst du nicht das Vorhandensein von $_POST['1'], sondern ob $_POST['1'] den Wert true hat.

probier mal
Code:
if (isset($_POST['1']))
.....die Existenz von Variablen prüft man per isset().
 
Original geschrieben von fatalus
Mit
Code:
if ($_POST['1']) //ueberprueft ob der submit button gedrückt wurde

....prüfst du nicht das Vorhandensein von $_POST['1'], sondern ob $_POST['1'] den Wert true hat.
Hm, bist Du Dir da sicher?

Code:
<form name="tmp" action="tmp.php" method="post">
    <input type="submit" name="1" value="Eintragen"> 
</form>
PHP:
<?php
if($_POST['1']) {
    echo "1: ok<br />";
} else {
    echo "1: fehler<br />";
}

if($_POST['2']) {
    echo "2: ok<br />";
} else {
    echo "2: fehler<br />";
}?>
Sobald eine Variable gesetzt ist, gibt sie automatisch den Wert true. Es sei denn, Du überprüfst Die Variable folgendermaßen:

PHP:
if($_POST['1'] === true) {
    /* mach was */
}
 
Leider klappt es nicht.
Er springt wieder nicht in die If Schleife. Das selbe Prob, hab ich bei nem anderen Skript auch
 
PHP:
$result = mysql_query($query) OR die("MySQL-Error: " . mysql_error());
while ($data = mysql_fetch_array($result)) {
    /* ... */
}
 
Hm, bist Du Dir da sicher?
jo, bin ich.
Du kannst ja mal versuchen, eine nicht vorhandene Variable mit
Code:
if($variable)
zu prüfen....das gibt zumindest eine Notice.

Dass das in dem Beispiel trotzdem funktioniert, liegt daran, wie PHP "true" definiert....

Warum das beim Dolphon nicht funktioniert, weiss ich allerdings nicht(am isset() liegts zumindest nicht).

@dolphon

bist du sicher, dass die Variablen begriff und 1 ankommen?
Vielleicht hilft ja nen anderer Namer für den Submit-Button, 1 ist nicht grad so prickelnd:-)
 
@fatatlus: Nicht zwangsweise man kann serwohl einfach auf TRUE / FALSE prüfen ohne damit Probleme zu haben....

Das einzige was man hier verändern kann ist dieses if ($_POST['1']) gleich zu
if ($_POST['begriff']), denn wenn kein Suchbegriff angegeben wurde wurde das Formular gar nicht oder leer gesendet. Ist ein Suchbegriff da, muss es wohl gesendet worden sein. Somit fällt auch gleich das strlen($_POST['suchgegriff'] weg.
 
@ Ben Ben
Jetzt klappts endlich. Hab einfach die Sache gemacht, die du vorgeschlagen hast.

Hier einfach nochmals der Code:

PHP:
if($_POST['begriff'])  //ueberprueft ob der submit button gedrückt wurde
{ 

   
     $array = explode(' ',$_POST['begriff']);

     $conditions = array();
     foreach ($array as $value)
     {
       $data  = "(vorname_kunden like '%$value%' OR ";
       $data .= "nachname_kunden like '%$value%' OR ";
       $data .= "ort_kunden like '%$value%')";
       $conditions[] = $data;
     }

     $query = 'SELECT id, vorname_kunden, nachname_kunden, ort_kunden FROM kunden';

     if (count($conditions))
     {
        $condition = " where " . implode (" or ", $conditions);

        $query .= $condition;
     }

    $result = mysql_query($query) OR die("MySQL-Error: " . mysql_error()); 

    while ($data = mysql_fetch_array($result))
    {
       $kunden_id = $data['id'];
       $vorname   = $data['vorname_kunden'];
       $nachname  = $data['nachname_kunden'];
       $ort       = $data['ort_kunden'];
      
       echo '<a href="intern.php?site=kunden&kunden_id=' . $kunden_id . '">';
       echo $vorname . ' ' . $nachname . ' ' . $ort . '</a><br>'; 
    } 
  
}
?>
 
Zurück