unbekannte Spaltennamen

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

  • unbekannte Spaltennamen

    Moin Leuts,
    ich habe eine Tabelle mit dynamischen Spalten (ich kenne die Namen der Spalten nicht. Jetzt soll ich aber eine detallierte Suche realisieren.

    Wie löse ich das ? Kann man alle Spalten durchsuchen lassen ohne den Namen der Spalte anzugeben ?

    (quasi ( WHERE * LIKE %$suchstr%' ) Oder geht das gar nicht ?


    mfg novara
    Mit freundlichen Grüßen
    Werner

  • #2
    hi,

    ohne vergleichswert wird das (glaube ich) nix. aber du kannst
    dir die felder ja ausgeben lassen und mit einer for-schleife eine query
    zusammenbauen:

    PHP-Code:
    $felder_=_mysql_list_fields($dbank,"meineTab",$conn);
    $feldmenge_=_mysql_num_fields($felder);
    $sql "Select * from XY where "

    for($x=0;$x<$feldmenge;$x++)

    {

    $sql .= mysql_field_name($felder,$x)."= LIKE '%".$suchstr."%' or";


    jetzt noch das letzte "or" weg und fertig (ohne gewähr)
    Kissolino.com

    Kommentar


    • #3
      hmm, habe inzwischen so gut wie alles probiert, hier mal ein Beispiel:

      $such_abfrage01="SELECT * FROM $user_db INNER JOIN userid ON $bilder_db INNER JOIN userid ON $online_db WHERE geschlecht='$ichwill' AND username LIKE '%$nachname%' AND useralter >'$vonalter' AND useralter < '$bisalter' AND plz LIKE '$splz%'";

      Warum funktioniert hier INNER JOIN nicht ?



      mfg
      novara
      Zuletzt geändert von novara; 27.02.2003, 15:22.
      Mit freundlichen Grüßen
      Werner

      Kommentar


      • #4
        http://www.php-resource.de/forum/sho...ht=durchsuchen
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          für alle

          die an der Lösung interessiert sind:

          function seek_table ($table, $find, $ichwill, $vonalter, $bisalter, $splz) {
          // alle Spaltennamen ermitteln
          $q = mysql_query ('show fields from '.$table)
          or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
          $fields = array();
          while ($x = mysql_fetch_array($q)) {
          $fields[] = $x['Field'];
          }
          mysql_free_result ($q);

          // jede Spalte in einer eigenen Query abfragen wg. Perfomance
          $result = array();
          for ($i=0; $i<count($fields); $i++) {
          if ('userid'!=($col=$fields[$i]) && 'username'!=($col=$fields[$i]) ) { // Spalte 'ID' und 'username' (wegen doppeldeutigkeit) auslassen
          $query = "SELECT $table.* from $table LEFT JOIN com_bilder ON ( $table.username = com_bilder.username ) WHERE com_bilder.username != '' AND $col like '%$find%' AND geschlecht='$ichwill' AND useralter >'$vonalter' AND useralter < '$bisalter' AND plz LIKE '$splz%'";
          //echo $query;
          //$query = "SELECT * from $table WHERE $col like '%$find%' AND geschlecht='$ichwill' AND useralter >'$vonalter' AND useralter < '$bisalter' AND plz LIKE '$splz%' AND username='$suchenachuserid'";
          $q = mysql_query($query)
          or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
          if ($q) {
          while ($x = mysql_fetch_array($q)) {
          $result[$x['userid']] = $x;
          }
          mysql_free_result ($q);
          }
          }
          }
          ksort ($result);
          return ($result);
          }

          $table="com_user";
          $find=$find;

          if ($find)
          {

          $ergebnis = seek_table($table, $find, $ichwill, $vonalter, $bisalter, $splz);
          if ($anz=count($ergebnis))
          {
          echo "<table border='0' width='300' cellpadding='0' cellspacing='0'>";

          echo "<tr bgcolor='#aabbdd'>
          <td colspan='3' align='center'><small><b>Ihre Suche</b></small></td>
          </tr>";

          echo "<tr>
          <td colspan='3'><hr color='#000000'></td>
          </tr>";

          echo "<tr>
          <td colspan='3' align='center'>$anz Treffer:<hr color=#000000 width=300></td>
          </tr>";
          foreach($ergebnis as $zeile)
          {
          echo "<tr onmouseover=\"this.style.cursor='hand';this.style.background='#336699'\" onclick=\"document.location.href='index.php?modul=zeigeuser&vonuser=$zeile[userid]'\" onmouseout=\"this.style.background=''\"><td>$zeile[userid]</td><td>$zeile[username] ($zeile[geschlecht] $zeile[useralter])</td><td align='right'>Details</td></tr>";
          }
          //echo "</table>";
          }
          else
          {
          echo "<tr>
          <td colspan='3' align='center'>Kein User gefunden</td>
          </tr>";
          }
          }


          vorher habe ich durch ein einfaches Suchformular die entsprechenden Werte übergeben.


          mfg
          novara
          Mit freundlichen Grüßen
          Werner

          Kommentar

          Lädt...
          X