php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.12.2008, 14:10  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Was sind eigentlich autor.autorid und user.user_id? Worin unterscheiden sie sich und auf was beziehen sie sich? Oder anders gefragt: Zwei verschiedene Tabellen?
David ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.12.2008, 14:26  
Benutzer
 
Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse:
Anfänger
pixx-art befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von BlackWolf Beitrag anzeigen
naja, an sich ist das nicht direkt falsch, aber:
du wendest mysql_num_rows() auf die mysql-query an die LIMIT enthält.
sprich du sagst in der mysql-query "bitte nur 20 datensätze zurückgeben" und fragst dann per mysql_num_rows() nach "wieviel datensätze hab ich bekommen?" - sprich in $num wird immer 20 stehen.
du musst 2 anfragen an die mysql-datenbank machen. eine ohne limit, auf die du mysql_num_rows() anwendest und nachher eine mit LIMIT, aus der du die sprüche ziehst die du ausgibst.

und btw: ja, COUNT(*) wäre eine bessere möglichkeit, allerdings wollt ich jetzt nicht noch mehr neues reinbringen ^^

mfg
Verzweiflung!!!

so sieht es jetzt aus und funktioniert nicht
Code:
$start = 0;
   
    $sql = "SELECT
                sprueche.autor AS spruecheid,
                sprueche.kategorie,
                sprueche.spruch,
                sprueche.eingetragen_am,
                autor.autor_id AS autorid,
                autor.vorname,
                autor.nachname,
                autor.wikipedia,
                user.user_id AS userid,
                user.nutzername,
                user.email,
                user.website
            FROM
                sprueche
            INNER JOIN
                autor
            ON
                sprueche.autor = autor.autor_id
            INNER JOIN
                user
            ON
                sprueche.user = user.user_id
            WHERE
                sprueche.kategorie like '%" . $_POST["kategorie"]."%'
            ORDER BY
                sprueche.eingetragen_am DESC";
                
$res = mysql_query($sql);
$num = mysql_num_rows($res);
$sql = "SELECT
                sprueche.autor AS spruecheid,
                sprueche.kategorie,
                sprueche.spruch,
                sprueche.eingetragen_am,
                autor.autor_id AS autorid,
                autor.vorname,
                autor.nachname,
                autor.wikipedia,
                user.user_id AS userid,
                user.nutzername,
                user.email,
                user.website
            FROM
                sprueche
            INNER JOIN
                autor
            ON
                sprueche.autor = autor.autor_id
            INNER JOIN
                user
            ON
                sprueche.user = user.user_id
            WHERE
                sprueche.kategorie like '%" . $_POST["kategorie"]."%'
            ORDER BY
                sprueche.eingetragen_am DESC"
            LIMIT ".$_GET['start'].",20";
            
$res = mysql_query($sql);
for ($page=0;$page*20 < ($num-20);$page++)
{
    echo '<a href="test.php?start='.$page*20.'">'.($page+1).'</a>';
}              


while ($dsatz = mysql_fetch_assoc($res))
 {
     echo "<small><small>";
     echo "Beitrag von ". $dsatz["nutzername"] ." | ";
     if ($dsatz["email"] != "")
      {
       echo "<a href=mailto:". $dsatz["email"] ."><small>". $dsatz["email"] ."</small></a>";
       echo " | ";
      }
     if ($dsatz["website"] != "")
      {
       echo "<a href=\"http://". $dsatz["website"] ."\" target=_blank><small>". $dsatz["website"] ."</small></a>";
       echo " | ";
      }
     echo "eingetragen am ". $dsatz["eingetragen_am"] ."";
     echo "</small></small>";
     echo "<br>";
     echo "<big><b>". $dsatz["spruch"] ."</b></big>";
     echo "<br>";
        if ($dsatz["vorname"] || $dsatz["nachname"] != "")
         {
          if ($dsatz["wikipedia"] != "")
          {
           echo "<a href=\"http://". $dsatz["wikipedia"] ."\" target=_blank><big>". $dsatz["vorname"] ." ". $dsatz["nachname"] ."</big></a>";
          }
          else
          {
           echo $dsatz["vorname"]," ",$dsatz["nachname"];
          }
         }
        else
         {
          echo "<small><small>Autor nicht bekannt</small></small>";
         } 
        echo "<br><br><br>";
     
 }

?>
pixx-art ist offline  
Alt 26.12.2008, 14:32  
Benutzer
 
Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse:
Anfänger
pixx-art befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
Was sind eigentlich autor.autorid und user.user_id? Worin unterscheiden sie sich und auf was beziehen sie sich? Oder anders gefragt: Zwei verschiedene Tabellen?
hallo david,
es gibt 3 tabellen:
sprüche, autor und user; in sprüche sind die id´s für autor (wer hat den spruch "verbockt") und user (wer hat den spruch für die sprüchesammlung vorgeschlagen) enthalten ... und die tabellen werden bei der ausgabe verknüpft.
also... ein spruch kann z.b. von goethe sein (autor) und von tante emma (user) zur aufnahme in die sprüchesammlung vorgeschlagen sein.

gruß
ramon
pixx-art ist offline  
Alt 26.12.2008, 14:41  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

ah, verstehe.

Und weil Weihnachten ist :
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);
ini_set('mysql.trace_mode'0); // sollte mysql.trace_mode=On sein, funktioniert das SELECT FOUND_ROWS() nicht

if (!isset($_POST["kategorie"])) {
    
$_POST["kategorie"] = '';
}

$items_per_page 4;
$page = isset($_POST['page']) ? abs((int)$_POST['page']) : 0;
$offset $page $items_per_page;

$mysql mysql_connect("localhost","localuser","localpass") or die(mysql_error());
mysql_select_db("test"$mysql) or die(mysql_error());

$sql "
  SELECT
    SQL_CALC_FOUND_ROWS
    sprueche.autor AS spruecheid,
    sprueche.kategorie,
    sprueche.spruch,
    sprueche.eingetragen_am,
    autor.autor_id AS autorid,
    autor.vorname,
    autor.nachname,
    autor.wikipedia,    
    user.user_id AS userid,
    user.nutzername,
    user.email,
    user.website
  FROM
    sprueche
  INNER JOIN
    autor
  ON
    sprueche.autor = autor.autor_id
  INNER JOIN
    user
  ON
    sprueche.user = user.user_id
  WHERE
    sprueche.kategorie like '%" 
mysql_real_escape_string($_POST["kategorie"], $mysql) . "%'
  ORDER BY
    sprueche.eingetragen_am DESC
  LIMIT
    $offset,$items_per_page"
;

$res mysql_query($sql$mysql) or die(mysql_error());

while ( 
false!== ($dsatz=mysql_fetch_assoc($res)) ) {
  
printf("%4d: %s - %s (%s)<br />\n",
    ++
$offset,
    
htmlentities($dsatz['spruch']),
    
htmlentities($dsatz['nutzername']),
    
htmlentities($dsatz['wikipedia'])
  );
}

$res mysql_query('SELECT FOUND_ROWS()') or die(mysql_error());
$total mysql_result($res00);

echo 
'
  <form method="post" action="?">
    <div>
      <input type="hidden" name="kategorie" value="'
htmlspecialchars($_POST['kategorie']), '" />';
for(
$i=0$i<ceil($total/$items_per_page); $i++) {
  echo 
'<input type="submit" name="page" value="'$i'" />';
}
echo 
'
    </div>
  </form>
'
;
?>
Es wieder in die gewünschte Ausgabeform zu bringen, schaffst Du sicherlich selbst...

Geändert von David (26.12.2008 um 14:53 Uhr). Grund: Beispiel-Navigation hinzugefügt
David ist offline  
Alt 26.12.2008, 14:54  
Benutzer
 
Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse:
Anfänger
pixx-art befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
ah, verstehe.

Und weil Weihnachten ist :
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);

$_POST["kategorie"] = ''// ja, ich habe es kurz angetestet

$items_per_page 4;
$page = isset($_POST['page']) ? abs((int)$_POST['page']) : 0;
$offset $page $items_per_page;

$mysql mysql_connect("...""...""...") or die(mysql_error());
mysql_select_db("..."$mysql) or die(mysql_error());

$sql "
  SELECT
    SQL_CALC_FOUND_ROWS
    sprueche.autor AS spruecheid,
    sprueche.kategorie,
    sprueche.spruch,
    sprueche.eingetragen_am,
    autor.autor_id AS autorid,
    autor.vorname,
    autor.nachname,
    autor.wikipedia,    
    user.user_id AS userid,
    user.nutzername,
    user.email,
    user.website
  FROM
    sprueche
  INNER JOIN
    autor
  ON
    sprueche.autor = autor.autor_id
  INNER JOIN
    user
  ON
    sprueche.user = user.user_id
  WHERE
    sprueche.kategorie like '%" 
mysql_real_escape_string($_POST["kategorie"], $mysql) . "%'
  ORDER BY
    sprueche.eingetragen_am DESC
  LIMIT
    $offset,$items_per_page"
;

$res mysql_query($sql$mysql) or die(mysql_error());
while ( 
false!==($dsatz=mysql_fetch_array($resMYSQL_ASSOC)) ) {
  
printf("%4d %s - %s (%s)<br />\n",
    ++
$offset,
    
htmlentities($dsatz['spruch']),
    
htmlentities($dsatz['nutzername']),
    
htmlentities($dsatz['wikipedia'])
  );
}

$res mysql_query('SELECT FOUND_ROWS()') or die(mysql_error());
$total mysql_result($res00);
echo 
'Seiten: ';
for(
$i=0$i<ceil($total/$items_per_page); $i++) {
  echo 
$i+1," ";
}
?>
Es wieder in die gewünschte Ausgabeform zu bringen, schaffst Du sicherlich selbst...
hey... ist ja ganz toll von dir... werde ich gleich versuchen - und auch versuchen, es zu verstehen!
...werde auf jeden fall berichten!
großes DANKE erst mal!
vg
ramon
pixx-art ist offline  
Alt 26.12.2008, 14:58  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich habe noch etwas geändert, damit Du siehst, wie die Navigation funktionieren kann.
Nicht sonderlich schön, aber grundlegend funktioniert es so.
David ist offline  
Alt 26.12.2008, 15:56  
Benutzer
 
Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse:
Anfänger
pixx-art befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
Ich habe noch etwas geändert, damit Du siehst, wie die Navigation funktionieren kann.
Nicht sonderlich schön, aber grundlegend funktioniert es so.
hallo david... noch mal vielen dank für deine mühe! habe die veränderungen vorgenommen und erhalte jetzt die fehlermeldung "Parse error: syntax error, unexpected T_STRING in /mnt/web6/11/56/51627556/htdocs/html/test.php on line 223"
... kann den syntax error aber nicht finden...
Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('mysql.trace_mode', 0);

if (!isset($_POST["kategorie"])) {
    $_POST["kategorie"] = '';
}

$_POST["kategorie"] = '';

$items_per_page = 4;
$page = isset($_POST['page']) ? abs((int)$_POST['page']) : 0;
$offset = $page * $items_per_page;

$mysql = mysql_connect("Provider","user","passwort") or die(mysql_error());
mysql_select_db("datenbank", $mysql) or die(mysql_error());

    $sql = "SELECT
                SQL_CALC_FOUND_ROWS
                sprueche.autor AS spruecheid,
                sprueche.kategorie,
                sprueche.spruch,
                sprueche.eingetragen_am,
                autor.autor_id AS autorid,
                autor.vorname,
                autor.nachname,
                autor.wikipedia,
                user.user_id AS userid,
                user.nutzername,
                user.email,
                user.website
            FROM
                sprueche
            INNER JOIN
                autor
            ON
                sprueche.autor = autor.autor_id
            INNER JOIN
                user
            ON
                sprueche.user = user.user_id
            WHERE
                sprueche.kategorie like '%" . mysql_real_escape_string($_POST["kategorie"], $mysql) . "%'
            ORDER BY
                sprueche.eingetragen_am DESC"
            LIMIT
            $offset,$items_per_page";

$res = mysql_query($sql, $mysql) or die(mysql_error());
while ( false!==($dsatz=mysql_fetch_array($res, MYSQL_ASSOC)) ) 
{
  printf("%4d %s - %s (%s)<br />\n",
    ++$offset,
    htmlentities($dsatz['spruch']),
    htmlentities($dsatz['nutzername']),
    htmlentities($dsatz['wikipedia'])
  );
}

$res = mysql_query('SELECT FOUND_ROWS()') or die(mysql_error());
$total = mysql_result($res, 0, 0);
echo 'Seiten: ';
for($i=0; $i<ceil($total/$items_per_page); $i++) {
  echo $i+1," ";
}
?>
...kannst du den fehler entdecken?
Danke!
Ramon
pixx-art ist offline  
Alt 26.12.2008, 16:13  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von pixx-art Beitrag anzeigen
...kannst du den fehler entdecken?
Wenn Du statt [code] [php] verwendest, wäre Dir das vielleicht selbst aufgefallen.
Zitat:
sprueche.eingetragen_am DESC"
Die Anführungszeichen sind an der Stelle falsch.

Welchen (Text-)Editor verwendest Du? Syntax-Hilighting ist eine feine Sache.
David ist offline  
Alt 26.12.2008, 16:30  
Benutzer
 
Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse:
Anfänger
pixx-art befindet sich auf einem aufstrebenden Ast
Standard

danke... kleiner fehler-große wirkung...
ich habe bisher meine seite über fusion 11 erstellt... wird mir aber bissel zu eng - man kann halt mit so einem programm nicht all seine vorstellungen verwirklichen - ja, und deshalb bin ich jetzt php-azubi
schau dir mal bitte das ergebnis an XXX... wie navigiere ich jetzt zur nächsten seite?
pixx-art ist offline  
Alt 26.12.2008, 16:31  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Siehe Post #14 und #16
Zitat:
Zitat von David Beitrag anzeigen
Ich habe noch etwas geändert, damit Du siehst, wie die Navigation funktionieren kann.
Nicht sonderlich schön, aber grundlegend funktioniert es so.
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Header Location funktioniert nicht, wenn div's oder span's auf der Seite s phpels PHP Tipps 2008 24 01.12.2008 00:16
Hilfe, Seite im Internet Explorer Buggy trowman HTML, Usability und Barrierefreiheit 4 15.09.2008 08:32
Bei richtiger Eingabe Daten an nächste Seite versenden xx_heidi_xx PHP Tipps 2008 49 27.05.2008 14:56
Krieg kein Objekt zurück auf includeter Seite NONNNNN PHP Tipps 2008 5 28.03.2008 19:25
Eintrag in DB und Wechsel zu anderer Seite Darson PHP Tipps 2008 25 14.01.2008 16:46
Ausgabe von PHP Variablen-Wert in HTML Seite Ladbroke PHP Tipps 2006 23 24.04.2006 15:49
Ausgabe von Datensätzen stefan-miti PHP Tipps 2007 13 17.11.2005 17:50
Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar PHP-Fortgeschrittene 19 31.05.2005 14:52
[Erledigt] Seite in Seite PHP-Fortgeschrittene 3 15.03.2005 19:27
Seite zwischenspeichern Sirke PHP Tipps 2004 2 12.10.2004 22:27
[Erledigt] Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
php+Seite kann nicht angeziegt werden, Seite existiert aber Server, Hosting und Workstations 2 09.09.2004 08:21
Datenbank Ausgabe auf mehrere Seite verteilen PHP Tipps 2004 8 01.08.2004 17:51
Funktion zum Teilen von großen Datensätzen auf mehrere Seite Off-Topic Diskussionen 6 21.07.2004 17:03
Seite nicht mit content="3600" im Cache gespeicher scheibo PHP Tipps 2004 0 19.07.2004 14:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ausgabe mehrere seiten limit, php datenbank ausgabe auf mehrere seiten, sql begrenzte anzahl datensätze pro seite, php tabellen ausgabe mehrere seiten, datensatz je seite ausgeben, sql inner join begrenzte anzahl, 30 datensätze pro seite, 2 php ausgaben auf einer seite, php tabellen datensätze pro seite

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum