Suchergebnisse <1>

Wer auch immer da im PHP-Team geschlampt hat ... das 1 == '1' ist eigentlich ein Typ-Fehler da der Char '1' dem ASCII-Wert 49 entspricht was nunmal eben nicht 1 ist.
Ich würde mich auf sowas nicht verlassen. Außerdem macht es den Code entsprechend schwer lesbar wenn man es EIGENTLICH mit Zahlen zu tun hat stattdessen aber Chars oder ganze Strings an solche Stellen schreibt ...
Wie siehts denn mit den Konventionen in einem solchen Fall aus ? Oder gibt es dafür keine ?

Da hat keiner geschlampt. Das ist ein PHP-Sprachfeature. PHP ist eine dynamische Sprache, sprich es gibt keine streng-typisierten Variablen. Eine Ad-Hoc-Konvertierung von String zu Int und vice versa ist elementar in PHP verankert. Und ja, darauf kannst du dich verlassen.

Die Lesbarkeit ist hier auch keine Frage, denn es wird ein variabler Speicher mit einer Konstanten verglichen. Aber nun gut, einen Nicht-Code-Kenner könnte es verwirren, letztlich ist es aber egal, da HTTP an und für sich auch nicht zwischen Int und String unterscheiden kann. Es wird ohnehin alles als String übertragen.

Wenn du eine strenge typisierte Prüfung vornehmen willst, musst du 3 Gleichzeichen verwenden. Das trifft man in einigen Sprachen darunter auch - wer hätte es gedacht - JavaScript an.

Und gleich noch eins, weils in deiner Signatur ja so drin steht: JAVA != PHP.
 
Was muss ich jetzt machen ?:(

Ich habe eine Frage zu deiner Frage ;-) Ich habe den Thread nur kurz überflogen und evtl. was übersehen, aber wo genau im Source wird die Variablen $wieviel_seiten mit einem Wert ungleich 1 befüllt?

Edit: Ich meine den Code-Teil, bei dem zum ersten Mal geprüft wird, ob $wieviel_seiten != 1 ist.

Edit2: Kannst du außerdem mal den Code von no.css posten?
 
Zuletzt bearbeitet:
PHP:
//Tabelle Abfragen
//Tabelle hei&szlig;t hier einfach: Tabelle
$abfrage = "SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story`  LIKE '%".mysql_real_escape_string ($_POST['such'])."%' OR `title`
LIKE '%" . ($_POST['such']) . "%'  AND s.author = u.uid LIMIT $start, $eintraege_pro_seite";
mysql_query($abfrage)
or trigger_error('Fehler in Query "'.$abfrage.'". Fehlermeldung: '.mysql_error(),E_USER_ERROR);
$ergebnis = mysql_query($abfrage);

if($wieviel_seiten!='1') {
echo '<div style="padding-left:16px;padding-top:14px">';
   echo '<table>';
echo ' <div style="position:none">'; if(mysql_num_rows($ergebnis) > 0){
   while($row = mysql_fetch_assoc($ergebnis))
 {
 
Hmm, da wird nirgends $wieviel_seiten ein Wert zugewiesen. Aber gut, das bedeutet nur, das immer die Ergebnisse des SQL-Queries ausgegeben werden. Eigentlich kannst du dir die Abfrage sparen, sie ist immer wahr.

Dir geht es ja darum, das die Pagination nicht angezeigt wird. Kannst du mal die untere mysql_query() anpassen, so das im Fehlerfall da auch was ausgegeben wird:

PHP:
$sql_statement = "SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story` LIKE '%".mysql_real_escape_string ($_POST['such'])."%' AND s.author = u.uid";
$result = mysql_query($sql_statement) or die(mysql_error()."<pre>" . $sql_statement . "</pre>");

Möglicherweise siehst du dadurch schon den Fehler?

Ansonsten, bitte auch mal das CSS posten. Es wäre möglich, dass das DIV <div class="pagination"> gar nicht angezeigt wird, also die Visibility durch irgendeinen Umstand auf hidden gesetzt ist.
 
PHP:
$result = mysql_query("SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story` LIKE '%".mysql_real_escape_string ($_POST['such'])."%' AND s.author = u.uid");
$menge = mysql_num_rows($result) or die(mysql_error()."<pre>" . $result . "</pre>");
Ich habe es verändert aber es wurde nichts ausgegeben.
no.css
Code:
div.pagination {
margin-top: 20px;
margin-bottom: 10px;
}
 
div.pagination a {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #8DB5D7;
text-decoration: none;
color: #000;
}
div.pagination a:hover, div.pagination a:active {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid red;
}
div.pagination span.current {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #E89954;
font-weight: bold;
background-color: #FFCA7D;
color: #000;
}
div.pagination span.disabled {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #ccc;
color: #ccc;
}
 
Ich habe meine variablen debuggt mit var_dump() was muss ich jetzt machen.
Wenn ich mein seite aufrufe steht oben NULL array(0) { } int(1) resource(2) of type (mysql link) int(9) int(0) resource(4) of type (mysql result) NULL und unten steht int(1) float(0.11111111111111).

Kannst du das etwas konkretisieren? Niemand außer dir weiß jetzt, welche Variable welches Ergebnis als var_dump hat. Kannst du bitte den Code mal folgendermaßen umbauen:

PHP:
	//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
	//also der gleiche Text wie in der Variable $abfrage, blo&szlig; das hier das LIMIT fehlt
	//Sonst funktioniert die Blätterfunktion nicht richtig,
	//und hier kann nur 1 Feld abgefragt werden, also id

	$result = mysql_query("SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story` LIKE '%".mysql_real_escape_string ($_POST['such'])."%' AND s.author = u.uid");
	$menge = mysql_num_rows($result);
	
	echo "Var_dump von \$menge:<pre>"; var_dump($menge); echo "</pre>"; 

	//Errechnen wieviele Seiten es geben wird
	$wieviel_seiten = $menge / $eintraege_pro_seite;

	echo "Var_dump von \$wieviel_seiten:<pre>"; var_dump($wieviel_seiten); echo "</pre>";
	 
	if ($menge > $eintraege_pro_seite) {

Hinzugefügt wurden die beiden ausführlicheren var_dumps.
 
Var_dump von $seite:

NULL

Var_dump von $_GET:

array(0) {
}

Var_dump von $link:

resource(2) of type (mysql link)

Var_dump von $eintraege_pro_seite:

int(9)

Var_dump von $start:

int(0)

Var_dump von $seite:

int(1)

Var_dump von $eintraege_pro_seite:

int(9)

Var_dump von $ergebnis:

resource(4) of type (mysql result)

Var_dump von $wieviel_seiten:

NULL
Var_dump von $result:

resource(5) of type (mysql result)

Var_dump von $menge:

int(22)

Var_dump von $wieviel_seiten:

float(2.4444444444444)

Var_dump von $menge:

int(22)

float(2.4444444444444)
Var_dump von $wieviel_seiten:

float(2.4444444444444)
Var_dump von $wieviel_seiten:

float(2.4444444444444)

Var_dump von $wieviel_seiten:

float(2.4444444444444)
 
weiß ich nicht ^ ^''
PHP:
<?php

$seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist
 echo "Var_dump von \$seite:<pre>"; var_dump($seite); echo "</pre>";
echo "Var_dump von \$_GET:<pre>"; var_dump($_GET); echo "</pre>";
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
   {
   $seite = 1;

   }

//Verbindung zu Datenbank aufbauen

$link = mysql_connect("localhost","vvv","ddddd") or die ("Keine Verbindung moeglich");
mysql_select_db("e") or die ("Die Datenbank existiert nicht");
echo "Var_dump von \$link:<pre>"; var_dump($link); echo "</pre>";

//Einträge pro Seite: Hier 9 pro Seite
$eintraege_pro_seite = 9;
 echo "Var_dump von \$eintraege_pro_seite:<pre>"; var_dump($eintraege_pro_seite); echo "</pre>";
//Ausrechen welche Spalte man zuerst ausgeben muss:

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
echo "Var_dump von \$start:<pre>"; var_dump($start); echo "</pre>";
 echo "Var_dump von \$seite:<pre>"; var_dump($seite); echo "</pre>";
 echo "Var_dump von \$eintraege_pro_seite:<pre>"; var_dump($eintraege_pro_seite); echo "</pre>";
//Tabelle Abfragen
//Tabelle hei&szlig;t hier einfach: Tabelle
$abfrage = "SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story`  LIKE '%".mysql_real_escape_string ($_POST['such'])."%' OR `title`
LIKE '%" . ($_POST['such']) . "%'  AND s.author = u.uid LIMIT $start, $eintraege_pro_seite";
mysql_query($abfrage)
or trigger_error('Fehler in Query "'.$abfrage.'". Fehlermeldung: '.mysql_error(),E_USER_ERROR);
$ergebnis = mysql_query($abfrage) or die(mysql_error()."<pre>" . $abfrage . "</pre>");
echo "Var_dump von \$ergebnis:<pre>"; var_dump($ergebnis); echo "</pre>";

if($wieviel_seiten<1) {
echo "Var_dump von \$wieviel_seiten:<pre>"; var_dump($wieviel_seiten); echo "</pre>";
echo '<div style="padding-left:16px;padding-top:14px">';
   echo '<table>';
echo ' <div style="position:none">'; if(mysql_num_rows($ergebnis) > 0){
   while($row = mysql_fetch_assoc($ergebnis))
 {
       echo '<tr><td><span style="font-family:times new roman,times,serif;"><span class="title_one" style="font-size: 18pt; color: rgb(0, 0, 0);">'.$row['title'].'</span></span></td></tr>';
        echo '<tr><td><span style="font-family: Verdana; font-size: 10pt; color: #ADADAD">Posted by  <a href="mailto:er@hotmail.de">'.$row['user'].'</A> - '.date('d/m/y h:iA', $row['timestamp']).' - <a href="www.php?id='.$row['id'].'#comments">'.$row['commentcount'].' Comments</a> - - '.$row['rating'].'</span></td></tr>';
        echo '<tr><td><span style="font-family:verdana; font-size: 10pt; ">'.$row['story'].'</span></td></tr>';
   } echo '</div>';
}else{
  echo '<tr><td>Keine Daten</td></tr>';
}

echo '</table>';
echo '</div>';




//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5


//Wieviele Einträge gibt es überhaupt

//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, blo&szlig; das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id

$result = mysql_query("SELECT * FROM `news30_story` as s, `news30_users` as u WHERE `story` LIKE '%".mysql_real_escape_string ($_POST['such'])."%' AND s.author = u.uid");
$menge = mysql_num_rows($result);
 echo "Var_dump von \$result:<pre>"; var_dump($result); echo "</pre>";
 echo "Var_dump von \$menge:<pre>"; var_dump($menge); echo "</pre>";
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
 echo "Var_dump von \$wieviel_seiten:<pre>"; var_dump($wieviel_seiten); echo "</pre>";
 if ($menge > $eintraege_pro_seite) { echo "Var_dump von \$menge:<pre>"; var_dump($menge); echo "</pre>";
if($wieviel_seiten > 1){ var_dump($wieviel_seiten);
//Ausgabe der Seitenlinks:
echo '<link rel="stylesheet" type="text/css" href="no.css"><div class="pagination">';
echo '<div style="position:absolute;left:144px">';


//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
   {   echo "Var_dump von \$wieviel_seiten:<pre>"; var_dump($wieviel_seiten); echo "</pre>";
   $b = $a + 1;

   //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
   if($seite == $b)
      {
      echo "  <span class=\"current\">$b</span> ";


   //Aus dieser Seite ist der User nicht, also einen Link ausgeben
   }else
      {
      echo "  <a href=\"?seite=$b\">$b</a> ";
      }


   }
echo "</div>"; echo "</div>"; echo "</div>";  } } }
?>
 
Zuletzt bearbeitet:
Zurück