• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Fehlermeldung bei Suchformular: mysql_fetch_assoc(): supplied argument is

erniedd

New member
Ich habe hier ein Suchformular, leider klappt daran noch nicht alles, ich bekomme die Fehlermeldung: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\gameboxx\test\detailtest.php on line 54

der Code:

HTML:
<form action='detailtest.php' method=POST>
<input type='text' length=40 name='eingabe' value=""><br>
<input type='submit' value='Search'>
</form>

PHP:
<?php
$hostname_verbindung = "localhost";
$username_verbindung = "phost136983";
$password_verbindung = "*******";
$tabelle ='phost136983';
$verbindung = mysql_connect($hostname_verbindung, $username_verbindung, $password_verbindung) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($tabelle);;
if($_POST['eingabe']=="")
{
    echo "<b>Bitte geben Sie ein Suchwort ein.</b>";
}
else
{
 $eingabe=$_POST['eingabe'];
 $eingabe_array = explode(' ',$eingabe);
 $query = 'select * from tblspieledatenbank where ';
 for($i=0; $i<count($eingabe_array); $i++)
  {
    $query .= "txt_beschreibung like '%".$eingabe_array[$i]."%' or str_spiel_name like '%".$eingabe_array[$i]."%' ";
    if($i<count($eingabe_array)-1)
            $query .= ' and  ';
  }

$result = mysql_query($query) or die(mysql_error());  
$num_rows = mysql_num_rows($result);
if($num_rows == 0)
   echo "Leider keine Treffer. Bitte geben Sie einen anderen Suchbegriff ein";
else
{
  echo '<table border="1" align="center">';
  while($row = mysql_fetch_assoc($result))
  {
	  ?>
      
      <?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
?>
    
   <table border="0" align="center" cellpadding="3" cellspacing="3">
				<tr>
						<td bgcolor="#BEBBFF" class="fettgross">Name</td>
				  <td bgcolor="#BEBBFF" class="fettgross">Hersteller</td>
				  <td bgcolor="#BEBBFF" class="fettgross">Betriebsystem</td>
						<td bgcolor="#BEBBFF" class="fettgross">Beschreibung</td>
				</tr>
				<?php do { ?>
						<tr>
								<td height="52" nowrap="nowrap" bgcolor="#EAEAEA"><a href="detail.php?recordID=<?php echo $row['int_spiel_id']; ?>" class="bluelink"><strong><?php echo $row['str_spiel_name']; ?></strong></a></td>
								<td bgcolor="#EAEAEA"><?php echo $row['str_hersteller_name']; ?>  </td>
								<td bgcolor="#EAEAEA"><?php echo $row['str_betriebsystem_name']; ?>  </td>
						  <td bgcolor="#EAEAEA"><?php echo substr( $row['txt_beschreibung'], 0, strpos( $row['txt_beschreibung'], ".", 120)+1); ?>  </td>
    
    					<?php } while ($row = mysql_fetch_assoc($row)); ?>
	</table>
    
    
    
<?	
  }
  echo '</table>';
}

}
?>

Zeile 54:
PHP:
<?php } while ($row = mysql_fetch_assoc($row)); ?>

Den Namen und die Beschreibung bekomme ich ausgegeben, nur Hersteller und Betriebsystem nicht.

für Hilfe bin ich dankbar !!!
 
für Hilfe bin ich dankbar !!!
Zwei Schleifen und nur eine SQL Abfrage. Das alleine sollte Dich schon stutzig machen.
Und wenn Du dann mal die zweite mit der ersten vergleichst, dann dürfte Dir der gravierende Unterschied zwischen beiden auffallen, der für die Fehlermeldung verantwortlich ist. Wobei diese allein eigentlich schon aussagekräftig genug ist.
 
oki:d:d:d:d:d ich habs hinbekommen, hier mein ergebnis, hab lange drann rumgebastelt, ich bräuchte jetzt nur noch sowas wie ne navigation mit vor und zurück, oder erste seite zweite seite u.sw., bei dreamweaver gibt es ja so etwas, aber krieg das nicht eingebaut:

PHP:
<?php require_once('../Connections/verbindung.php');

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");


if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_verbindung, $verbindung);
if($_POST['eingabe']=="")
{
    echo "<b>Bitte geben Sie ein Suchwort ein.</b>";
}
else
{
 $eingabe=$_POST['eingabe'];
 $eingabe_array = explode(' ',$eingabe);
$query_Recordset1 =  'SELECT `tblspieledatenbank`.`int_spiel_id`, `tblspieledatenbank`.`str_spiel_name`, `tblhersteller`.`str_hersteller_name`, `tblsprache`.`str_sprache_name`,  `tblspieledatenbank`.`str_groesse`, `tblbetriebsystem`.`str_betriebsystem_name`, `tblgenre`.`str_genre_name`, `tblkategorie`.`str_kategorie_name`, `tblspieledatenbank`.`dtm_einstellung`, `tblspieledatenbank`.`txt_downloadeins`, `tblspieledatenbank`.`txt_downloadzwei`, `tblspieledatenbank`.`txt_downloaddrei`, `tblspieledatenbank`.`txt_ftpsearch`, `tblspieledatenbank`.`txt_bildlink`, `tblspieledatenbank`.`lb_anlagen`, `tblspieledatenbank`.`txt_beschreibung`, `tblspieledatenbank`.`lb_bild`, `tblspieledatenbank`.`int_genre_id` FROM `tblsprache`  LEFT JOIN `tblspieledatenbank` ON `tblsprache`.`int_sprache_id` = `tblspieledatenbank`.`int_sprache_id`   LEFT JOIN `tblbetriebsystem` ON `tblspieledatenbank`.`int_betriebsystem_id` = `tblbetriebsystem`.`int_betriebsystem_id`   LEFT JOIN `tblgenre` ON `tblspieledatenbank`.`int_genre_id` = `tblgenre`.`int_genre_id`   LEFT JOIN `tblhersteller` ON `tblspieledatenbank`.`int_hersteller_id` = `tblhersteller`.`int_hersteller_id`   LEFT JOIN `tblkategorie` ON `tblspieledatenbank`.`int_kategorie_id` = `tblkategorie`.`int_kategorie_id` where ';
for($i=0; $i<count($eingabe_array); $i++)
  {
    $query_Recordset1 .= "txt_beschreibung like '%".$eingabe_array[$i]."%' or str_spiel_name like '%".$eingabe_array[$i]."%' ";
    if($i<count($eingabe_array)-1)
            $query_Recordset1 .= ' and  ';
  }


$Recordset1 = mysql_query($query_Recordset1, $verbindung) or die(mysql_error());
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
if($totalRows_Recordset1 == 0)
   echo "Leider keine Treffer. Bitte geben Sie einen anderen Suchbegriff ein";
else
{
  
  while($row_Recordset1 = mysql_fetch_assoc($Recordset1))
  {
       ?>
      

    
   <table border="0" align="center" cellpadding="3" cellspacing="3">
                <tr>
                        <td bgcolor="#BEBBFF" class="fettgross">Name</td>
                  <td bgcolor="#BEBBFF" class="fettgross">Hersteller</td>
                  <td bgcolor="#BEBBFF" class="fettgross">Betriebsystem</td>
                        <td bgcolor="#BEBBFF" class="fettgross">Beschreibung</td>
                </tr>
                
                        <tr>
                                <td height="52" nowrap="nowrap" bgcolor="#EAEAEA"><a href="detail.php?recordID=<?php echo $row_Recordset1['int_spiel_id']; ?>" class="bluelink"><strong><?php echo $row_Recordset1['str_spiel_name']; ?></strong></a></td>
                                <td bgcolor="#EAEAEA"><?php echo $row_Recordset1['str_hersteller_name']; ?>  </td>
                                <td bgcolor="#EAEAEA"><?php echo $row_Recordset1['str_betriebsystem_name']; ?>  </td>
                          <td bgcolor="#EAEAEA"><?php echo substr( $row_Recordset1['txt_beschreibung'], 0, strpos( $row_Recordset1['txt_beschreibung'], ".", 120)+1); ?>  </td>
    
                        
   
    
    
    
<?    
  }
  echo '</table>';
}

}
?>
 
Die Seitennummer würde ich per GET-Query an die URL hängen. In der SQL-Abfrage baust du dann ein LIMIT ein. http://dev.mysql.com/doc/refman/5.1/en/select.html#id3064231

Die erste Zahl gibt den Offset an, die zweite die Anzahl der Ergebnisse. Den Offset berechnest du aus der Seitennummer und der Anzahl der Ergebnisse.

PHP:
define("RESULTS_PER_PAGE", 20);
if(isset($_GET['page']){
    // der GET-Parameter page ist gesetzt, diesen in eine Zahl umwandeln 
    // und sicherstellen, dass er mindestens 1 ist
    $page = max(1, intval($_GET['page']);
}
else {
    $page = 1;
}

$query = "SELECT..... FROM .... LIMIT ".($page-1) * RESULTS_PER_PAGE.", ".RESULTS_PER_PAGE;
// query ausführen. Das Ergebnis enthält dann nur die entsprechenden 20 Zeilen.
 
Zurück
Oben