SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.05.2006, 16:15:19
henne89 henne89 ist offline
Anfänger
 
Registriert seit: May 2006
Ort: Delbrück
Alter: 35
Beiträge: 14
Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Hallo,

ich habe nun schon etwas im Forum gesucht und auch einiges zu meinem Thema gefunden, aber nichts was mir wirklich weiterhilft :(

Also hier nochmal mein Problem auch wenn es schon einige solcher Themen geben mag:

Ich bin dabei mir ein kleines Gästebuch zu basteln und stoße da auf zwei Probleme, erstens weiß ich nicht wie ich es anstellen soll das bei der Ausgabe der Einträge nicht mehr als 10-20 auf einer Seite stehen und die nächsten 10-20 auf der nächsten Seite.

Das Zweite Problem ist das ich ebensowenig weiß wie ich die eingegebenen Absätze erkennen und dann bei der Ausgabe wieder berücksichtigen kann.

Hier nochmal der Code für die Ausgabe, ich hoffe ihr könnt da was mit Anfangen ;)

PHP-Code:
<?php
         
// Verbindung mit Server und Datenbank aufnehmen
         
mysql_connect("localhost","root","");
         
mysql_select_db("gaestebuch");

         
// Alle Datensätze aus der Datenbank auswählen und in $res speichern
         
$sqlab "select * from eintrag order by nummer";
         
$res mysql_query($sqlab);
         
// Anzahl der Datensätze ermitteln und ausgeben
         
$num mysql_num_rows($res);

         echo 
"$num Einträge gefunden.<p>";

         
// Datensätze anzeigen
         
while ($dsatz mysql_fetch_assoc($res))
         {
             
// wenn keine Email-Adresse angegeben wurde Text für $mail
                 
if ( $dsatz["mail"] == "")
                 {
                     
$schicken $dsatz["nick"] . " hat keine E-mail Adresse.";
                     
$dsatz["mail"] = $dsatz["nick"] . " hat keine E-mail Adresse.";
                         
$print "<td width='47%' align='center'>$schicken</td>";
                 }
                 else
                 {
                            
$schicken $dsatz["nick"] . " eine Email schicken.";
                         
$print "<td width='47%' align='center'><a href='mailto:" $dsatz["mail"] . "'>$schicken</a></td>";
                 }

                 
// Beiträge in Tabelle anzeigen
                 // Anfang Tabelle
                 
echo "<table border='5' width='60%' align='center'>";

                 
// Überschrift ( "Nick" schrieb am "Datum" um "Zeit": | "Nick"@domain.com)
             
echo "<tr>";
                 echo 
"<td width='6%' align='center'>" $dsatz["nummer"] . "</td>";
                 echo 
"<td width='47%'><b>" $dsatz["nick"] . "</b> schrieb am " $dsatz["datum"] . " um " $dsatz["zeit"] . ":</td>";
                 echo 
"$print";
                 echo 
"</tr>";

                 
// Textarea
                 
echo "<tr>";
                 echo 
"<td colspan='3'>" $dsatz["text"] . "</td>";
                 echo 
"</tr>";

                 
// Ende Tabelle
                 
echo "</table><p>";
         }
?>
Die Ausgabe in einer Tabelle ist nur eine vorläufige Notlösung ;)

Ich hoffe ihr könnt mir helfen und danke im Vorraus.

MfG henne89
Mit Zitat antworten
  #2  
Alt 26.05.2006, 18:56:13
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Dein erstes Problem löst du, indem du in deine SQL-Abfrage "LIMIT x,y" mit reinpackst. Der Wert für x gibt an, ab welchem Datensatz angefangen werden sollte, der Wert für y legt fest, wie viele Datensätze ausgelesen werden sollen.

Nehmen wir an, du übergibst über die URL, die wievielte Seite angezeigt werden soll. Dann solltest du so was wie

PHP-Code:
 $sqlab "... LIMIT ".($_POST['pagenumber']-1)*10.", 10"
verwenden.

Die Absätze erscheinen durch Aufruf der Funktion nl2br() mit dem Text als Argument. Gleichzeitig würd ich noch ein htmlentities() hinterherschieben, um zu verhindern, dass dir da einer HTML-Code (evtl mit Javascript) unterjubelt.



PS: Auch auf dem lokalen Rechner ist es nicht unbedingt gut, die Datenbank mit den Standardzugangsdaten zu betreiben... ;)
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #3  
Alt 26.05.2006, 20:53:12
henne89 henne89 ist offline
Anfänger
 
Registriert seit: May 2006
Ort: Delbrück
Alter: 35
Beiträge: 14
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Danke für die Antwort.

Also das zweite Problem ist gelöst nur bei dem ersten komm ich irgendwie nicht weiter :/

Wenn ich die Zeile von dir in die SQL-Abfrage reinpacke klappt es nicht....

Desweiteren ist nun ein neues Problem aufgetaucht und zwar werden die Einträge aus der Datenbank zwar ausgelesen aber ich kann keine neuen hinzufügen, ich füge mal den ganzen code des Gästebuchs bei vllt fällt euch sofort der Fehler auf.

PHP-Code:
<html>
<head>
<?php
if (isset($gesendet))
{
    
// Kontolle ob Nick und Text eingegeben wurden
    
if ($nick == "")
             echo 
"Bitte einen Namen eintragen.";
         else if (
$text == "")
             echo 
"Bitte eine Nachricht verfassen.";
         else
         {
                 
// Arrays für die Smileys
        
$eins = array("lol"":)"":P"":D"":("";)""*bye*"":P");
                 
$zwei = array("<img src=\"./smile/lol.gif\" title=\"lol\">""<img src=\"./smile/wesoly.gif\" title=\":)\">""<img src=\"./smile/blum.gif\" title=\":P\">""<img src=\"./smile/38.gif\" title=\":D\">""<img src=\"./smile/smutny.gif\" title=\":(\">""<img src=\"./smile/wink.gif\" title=\";)\">""<img src=\"./smile/paaa.gif\" title=\"*bye*\">""<img src=\"./smile/blum.gif\" title=\":P\">");

                 
// Umwandeln der Smiley in HTML-Code
                 
$text2 str_replace($eins$zwei$text);

                 
$datum=date("j.n.Y");
        
$zeit=date("H:i");

                 
// Verbindung mit Server und Datenbank aufnehmen
             
mysql_connect("localhost","root","");
                 
mysql_select_db("gaestebuch");

                 
// Beitragsnummer ermitteln (aktuelle Datensätze plus 1)
                 
$abfrage "select * from eintrag";
             
$res mysql_query($abfrage);
             
$anz mysql_num_rows($res);
        
$nr $anz +1;

                 
// Beitrag in Datenbank speichern
                 
$sqlab  "insert eintrag";
                 
$sqlab .= "(nummer, nick, datum, zeit, mail, text) values ";
                 
$sqlab .= "('$nr', '$nick', '$datum', '$zeit', '$mail', '$text2')";

                 
mysql_query($sqlab);

                 
// kontrollieren ob ein Beitrag hinzugefügt wurde
                 
$num mysql_affected_rows();
                 
// Meldung ob Eintrag erfolgreich oder nicht
                 
if ($num == 1)
                     echo 
"<center>Eintrag erfolgreich.</center>";
                 else
                     echo 
"<center>Es ist ein Fehler aufgetreten, versuchen Sie es später nocheinmal.</center>";
         }
}
?>
</head>
<body>
<script LANGUAGE="JavaScript">

<!--
function smiley()
{
msgWindow=window.open("smiley.htm","displayWindow","toolbar=no,width=150,height=200,directories=no,status=no,scrollbars=yes,resize=yes,menubar=no")
}

// -->

</script>
<?php
         
// Verbindung mit Server und Datenbank aufnehmen
         
mysql_connect("localhost","root","");
         
mysql_select_db("gaestebuch");

         
// Alle Datensätze aus der Datenbank auswählen und in $res speichern
         
$sqlab "select * from eintrag order by nummer";
         
$res mysql_query($sqlab);
         
// Anzahl der Datensätze ermitteln und ausgeben
         
$num mysql_num_rows($res);

         echo 
"$num Einträge gefunden.<p>";

         
// Datensätze anzeigen
         
while ($dsatz mysql_fetch_assoc($res))
         {
             
// wenn keine Email-Adresse angegeben wurde Text für $mail
                 
if ( $dsatz["mail"] == "")
                 {
                     
$schicken $dsatz["nick"] . " hat keine E-mail Adresse.";
                     
$dsatz["mail"] = $dsatz["nick"] . " hat keine E-mail Adresse.";
                         
$print "<td width='47%' align='center'>$schicken</td>";
                 }
                 else
                 {
                            
$schicken $dsatz["nick"] . " eine Email schicken.";
                         
$print "<td width='47%' align='center'><a href='mailto:" $dsatz["mail"] . "'>$schicken</a></td>";
                 }


                 
// Beiträge in Tabelle anzeigen
                 // Anfang Tabelle
                 
echo "<table border='5' width='60%' align='center'>";

                 
// Überschrift ( "Nick" schrieb am "Datum" um "Zeit": | "Nick"@domain.com)
             
echo "<tr>";
                 echo 
"<td width='6%' align='center'>" $dsatz["nummer"] . "</td>";
                 echo 
"<td width='47%'><b>" $dsatz["nick"] . "</b> schrieb am " $dsatz["datum"] . " um " $dsatz["zeit"] . ":</td>";
                 echo 
"$print";
                 echo 
"</tr>";

                 
// Textarea
                 
echo "<tr>";
                 echo 
"<td colspan='3'>" .  nl2br($dsatz["text"]) . "</td>";
                 echo 
"</tr>";

                 
// Ende Tabelle
                 
echo "</table><p>";
         }

         
// Eingabeformular
         
echo "<center>";
         echo 
"<form action='gb_test.php' method='post'>";
     echo 
"<input name='nick'> Nick *<p>";
         echo 
"<input name='mail'> E-Mail<p>";
         echo 
"Ihre Nachricht: *<br>";
         echo 
"<input TYPE='button' VALUE='Smileys' onClick='smiley()'>&nbsp;&nbsp;";
         echo 
"<textarea name='text' cols='30' rows='5'></textarea><p>";
         echo 
"<input type='hidden' name='gesendet'>";
         echo 
"<input type='submit' value='Abschicken'>&nbsp;&nbsp;";
         echo 
"<input type='reset' value='Löschen'>";
         echo 
"</form>";
         echo 
"</center>";
?>
</body>
</html>
Nochmals Danke für die Hilfe.

MfG henne89

Geändert von henne89 (26.05.2006 um 22:34:53 Uhr)
Mit Zitat antworten
  #4  
Alt 27.05.2006, 11:25:01
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Der von mir gepostete Code war natürlich nicht komplett. Klar, dass das so noch nicht funktioniert. Es ging nur um das Prinzip. Du musst beispielsweise erst mal noch prüfen, ob in $pagenumber wirklich ne Zahl steht und ob diese größer als 0 ist. Wenn nicht solltest du hier 1 eintragen.

Das Problem mit dem Eintragen liegt wiederum an SQL: Der dafür notwendige Befehl heißt INSERT INTO, nicht nur INSERT.
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #5  
Alt 27.05.2006, 11:37:37
henne89 henne89 ist offline
Anfänger
 
Registriert seit: May 2006
Ort: Delbrück
Alter: 35
Beiträge: 14
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Zitat:
Zitat von Serp
Du musst beispielsweise erst mal noch prüfen, ob in $pagenumber wirklich ne Zahl steht und ob diese größer als 0 ist. Wenn nicht solltest du hier 1 eintragen.
und wie, sorry aber stehe hier momentan echt aufm Schlauch :/

Zitat:
Das Problem mit dem Eintragen liegt wiederum an SQL: Der dafür notwendige Befehl heißt INSERT INTO, nicht nur INSERT.
Ich glaube daran lag es nicht, hab es in INSERT INTO geändert aber wenn ich das richtig sehe kommt er erst garnicht in die IF-Schleife rein da auch keine "Fehlermeldung" ausgegeben wird wenn zb der Name nicht eingegeben wurde. Das komische ist das es schonmal funktioniert hat .....

Geändert von henne89 (27.05.2006 um 11:38:04 Uhr)
Mit Zitat antworten
  #6  
Alt 28.05.2006, 20:44:28
henne89 henne89 ist offline
Anfänger
 
Registriert seit: May 2006
Ort: Delbrück
Alter: 35
Beiträge: 14
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

Sorry das ich hier nochmal schiebe, ich weiß das ist nicht die feine Art aber ich bin immer noch nicht wirklich weiter gekommen (leider) :/ mit dem LIMIT kann ich nicht viel anfangen da ich nicht weiss wie ich es einsetzen soll :(

Vllt hat ja noch jemand anderes eine Ahnung (vorallem warum es nicht[mehr] läuft)

Danke und nochmal Sorry für Doppelpost

MfG henne89
Mit Zitat antworten
  #7  
Alt 28.05.2006, 21:43:47
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: Datensätze auf mehreren Seiten ausgeben/Absätze erkennen

So... Ich hab mir einfach mal die Mühe gemacht, mich durch dein Script durchzuarbeiten. Hier ein paar Kommentare:

Erst mal, der Grund, warum das früher mal lief und jetzt nicht mehr liegt vermutlich daran, dass du nicht das $_POST-Array verwendest. Wenn jetzt REGISTER_GLOBALS ausgestellt worden ist, wird die Bedingung "isset($gesendet)" falsch. Du müsstest stattdessen "isset($_POST['gesendet'])" verwenden. Genauso musst du an allen anderen Stellen verfahren, die auf per POST übergebene Objekte zugreifen.
Aber wie das mal funktioniert haben soll is mir trotzdem schleierhaft, denn der Befehl is eigentlich INSERT INTO und nicht INSERT...


Aber dann mal noch n paar weitergehende Kommentare:

PHP-Code:
if ($nick == ""
Ich würde stattdessen folgendes schreiben:

PHP-Code:
if(!empty($nick)) 
Das hat den Vorteil, das auch so Sachen wie Nicks, die nur als Leerzeichen bestehen, nicht durchkommen.


PHP-Code:
$text2 str_replace($eins$zwei$text); 
Prinzipiell bräuchtest du dafür keine neue Variable, so Sachen wie
PHP-Code:
$text str_replace($eins$zwei$text); 
würden durchaus funktionieren. Da du $text sonst eh nicht mehr brauchst is das auch kein Problem. Spart auf die Art Speicherplatz und wird übersichtlicher.
Allerdings würd ich darüber hinaus die Smilieersetzung nicht beim Eintragen in die Datenbank sondern erst beim Auslesen durchführen. Falls irgendeiner der Texte mal geändert werden soll tust du dich bedeutend leichter. Außerdem sollte irgendwo mal die Funktion htmlentities() auftauchen, und wenn du das dann erst beim Auslesen machst kriegst du lustige Effekte...


Zitat:
// Beitragsnummer ermitteln (aktuelle Datensätze plus 1)
$abfrage = "select * from eintrag";
$res = mysql_query($abfrage);
$anz = mysql_num_rows($res);
$nr = $anz +1;
Das ist unnötig und fehleranfällig. Fehleranfällig deshalb, weil du dann eventuell zwei Einträge mit der gleichen Nummer kriegen könntest. Unnötig, weil das MySQL automatisch für dich macht: Einfach unter phpmyadmin für die Zeile auto_increment aktivieren.


Später baust du ein zweites Mal die Verbindung zur Datenbank auf. Das ist nicht nötig, einmal reicht.
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe auf mehreren Seiten. Nicht Link zu jeder Seite, sondern mit [...] arbeiten? DieMilchMachts PHP Grundlagen 0 14.11.2005 20:45:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:48:29 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt