Zudila AG

Webseiten-Erstellung
Webseiten-Programmierung
Webseiten-Wartung
8057 Zürich
Tel: +41 44 310 14 25
Fax: +41 44 310 14 26
Mob: +41 79 691 87 58
vCard, Skype: juergzuerich Skype: juergzuerich

PHP & MySQL: Kleinanzeigen v1.2



Browser: Firefox!
Umfrage

Hat Ihnen dieses Script geholfen?

ja

teilweise

wenig

nein



Kleinanzeigen, Funktion

Ein einfaches Kleinanzeigen-Script. Die Anzeige wird automatisch nach einer durch den Inserenten ausgewählen Zeit gelöscht, oder vorzeitig per Passwort. Hyperlinks werden unterdrückt. Um Spam zu verhindern, erscheint die E-Mail-Adresse der Inserenten nicht in der Anzeige, sonder wird mit der Antwort auf das Inserat per Mail zugesendet. Ein Bestätigungs-Mail geht an den Inserenten und ein Mail zur Kontrolle an den Webmaster.


Zur Erstellung werden folgende Dateien benötigt:
- anzeigen.php um die Anzeigen anzuzeigen
- anzeigen_eing.php um Anzeigen aufzugeben
- anzeigen_mail.php um Mails als Antwort aufzugeben
- anzeigen_loe.php um Anzeigen zu löschen
- anzeigen_loe1.php um das Löschen zu bestätigen
- anzeigen_loe_int.php um als Administrator Anzeigen zu löschen
zudem eine MySQL-Datenbank-Tabelle.

Als erstes erstellen wir, am Besten mit phpMyAdmin, in der MySQL-Datenbank unsere Tabelle mit drei Datensätzen mit verschiedenen Test-Eintragungen.
Das Programm phpMyAdmin ist bei den meisten Providern bereits installiert und hilft uns, unsere Datenbank zu warten.

In phpMyAdmin öffnen wir die Seite SQL. Nun kopieren wir den Inhalt des gesamten untenstehenden Scripts in das Feld SQL und drücken OK. Dadurch erstellt phpMyAdmin die benötigte Tabelle.
Anschliessend sollte gleich geprüft werden, ob die Tabelle "anzeigen" auch erstellt wurde und die Datensätze sich in der Tabelle befinden.

Generell: es ist immer besser, zuerst die Tabellen zu erstellen. Auch einen ersten Datensatz sollte in die Tabellen, um so die php-Skripte gleich auf ihre Funktion prüfen zu können.


Code MySQL - Datenbank

PHP & MySQL: Kleinanzeigen v1.2, SQL Datenbank

  1. # Tabellenstruktur für Tabelle `anzeigen`
  2.  
  3. CREATE TABLE `anzeigen` (
  4.   `id_anz` int(11) NOT NULL AUTO_INCREMENT,
  5.   `art` varchar(10) DEFAULT NULL,
  6.   `vname` varchar(50) DEFAULT NULL,
  7.   `nname` varchar(50) DEFAULT NULL,
  8.   `ort` varchar(50) DEFAULT NULL,
  9.   `email` varchar(50) DEFAULT NULL,
  10.   `tel` varchar(50) DEFAULT NULL,
  11.   `titel` varchar(50) DEFAULT NULL,
  12.   `anzeige` text NOT NULL,
  13.   `kennwort` varchar(10) DEFAULT NULL,
  14.   `verfall` int(11) DEFAULT NULL,
  15.   `datum` timestamp(14) NOT NULL,
  16.   PRIMARY KEY (`id_anz`)
  17. ) TYPE=MyISAM AUTO_INCREMENT=4 ;
  18.  
  19. # Daten für Tabelle `anzeigen`
  20.  
  21. INSERT INTO `anzeigen`
  22. (`id_anz`, `art`, `vname`, `nname`, `ort`, `email`, `tel`, `titel`, `anzeige`, `kennwort`, `verfall`, `datum`)
  23. VALUES
  24. (1, 'Biete', 'Hans', 'Tester', 'Testdorf', 'xy@xy.xy', '+41 0 000 00 00', 'Biete einen Test', 'Dies ist ein Testtext.\r\nWir bieten einen Test.', 'test', 2147483647, '20041022113516'),
  25. (2, 'Suche', 'Hans', 'Tester', 'Testort', '', '+41 00 000 00 00', 'Testsuche', 'Dies ist eine Testsuche als Beispiel.\r\nAuch Zeilenumbruch geht!', 'test', 2147483647, '20041022122239'),
  26. (3, 'Tausche', 'Otto', 'Beispiel', 'Teststadt', 'xy@xy.xy', NULL, 'Testtausch', 'Wir tauschen alles!', 'test', 2147483647, '20041022123000');
  27.  
Script Update: 29.04.08

Erklärungen zum Code

Zu den Zeilen:

1: Hier steht als Kommentar der Inhalt dieses Scriptes. Dieser könnte auch weggelassen werden.

3 - 17: Die Definition unserer Tabelle.

4: Die ID wird festgelegt, zudem wird angeben, dass diese sich selbst vergibt mittels einem Zähler (auto_increment).
Es empfiehlt sich, für die ID nie nur "id" zu verwenden, sondern immer einen Namen zu vergeben, der zur Tabelle passt. Denn, wenn mehrere Tabellen verwendet werden sollten, könnte es leicht zu Verwechselungen kommen.

5 - 15: Es folgen die diversen Felder.

12: Der eigentliche Anzeigentext, wir haben den Feldtyp "text" verwendet, was 65535 Zeichen zulassen würde. Man könnte auch den Feldtyp "tinytext" verwenden, dies würde jedoch nur 255 Zeichen zulassen.

14: Die hier gespeicherte Unix-Time erleichtert das Rechnen für die automatische Löschung. Eine Woche hat 604800 Sekunden.

15: Mit "timestamp" wird das Speicherdatum der Anzeige festgehalten.

19: Dient nur als Kommentar

21 - 26: Hiermit werden drei unterschiedliche Datensätze in die Tabelle eingefügt. Das erleichtert uns die Überprüfung des folgenden Scriptes.


Nun erstellen wir mit einem Editor eine Datei "anzeigen.php" und fügen folgendes Script ein:


Code Kleinanzeigen

Datei: anzeigen.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <?php
  10. include ('sicher/inc.php');
  11.  
  12. // Variable zur Sicherheit auf 0 setzen
  13. $x = "";
  14.  
  15. // herausfinden ob Dateien verfallen sind
  16. $query = "SELECT * FROM anzeigen ";
  17. $result = mysql_query($query,$conn);
  18. $num = mysql_num_rows($result);
  19. for ($i = 0; $i < $num; $i++){
  20.   $row = mysql_fetch_array($result);
  21.   $jetzt = time();
  22.   // ist Datei verfallen?
  23.   $id_anz = $row['id_anz'];
  24.   $verfall = $row['verfall'];
  25.   if ($verfall > $jetzt) {$x = "druck";}
  26.   else {$x = "loesch";}
  27.   // wenn verfallen, loeschen
  28.   if ($x == "loesch") {
  29.     $query = "DELETE FROM anzeigen WHERE id_anz = '".$id_anz."'";
  30.     mysql_query($query);
  31.   }
  32. }
  33. ?>
  34.  
  35. <table width="100%" summary="Die einzelnen Anzeigen">
  36.   <colgroup>
  37.     <col width="90" />
  38.     <col />
  39.     <col />
  40.     <col width="90" />
  41.   </colgroup>
  42.  
  43. <?php
  44. // Verbindung mit anzeigen fuer Eintraege anzeigen
  45. $query = "SELECT *, DATE_FORMAT(datum,'%d.%m.%y') AS datum_f
  46. FROM anzeigen ORDER BY datum DESC";
  47. $result = mysql_query($query,$conn);
  48. $num = mysql_num_rows($result);
  49. for ($i = 0; $i < $num; $i++){
  50.   $row = mysql_fetch_array($result);
  51.   echo '
  52.  <tr class="bgweiss">
  53.    <td><p><strong>  '.$row['art'].'</strong></p></td>
  54.    <td colspan="2"><p><strong>  '.$row['titel'].'</strong></p></td>
  55.    <td>
  56.      <p class="kl center">'.$row['datum_f'].'</p>
  57.    </td>
  58.  </tr>
  59.  <tr>
  60.    <td> &#160; </td>
  61.    <td colspan="2">'.nl2br($row['anzeige']).'</td>
  62.    <td class="center">
  63.  ';
  64.   if ($row['email'] != ""){
  65.     $id_anz = $row['id_anz'];
  66.     echo '
  67.      <form action ="php_anzeigen_mail.php" method ="post">
  68.         <input type="hidden" name="id_anz" value="'.$id_anz.'" />
  69.         <input class="norm" type="submit" value="email" />
  70.      </form>
  71.    ';
  72.   }
  73.   echo '
  74.    </td>
  75.  </tr>
  76.  <tr>
  77.    <td> &#160; </td>
  78.    <td class="bgweiss"> &#160;
  79.      <p class="kl">'.$row['vname'].' '.$row['nname'].', '.$row['ort'].'</p>
  80.    </td>
  81.    <td class="bgweiss">
  82.      <p class="kl"> &#160;
  83.  ';
  84.   if ( $row['tel'] != "" ){
  85.     echo 'Tel: '.$row['tel'] ;
  86.   }
  87.   echo '
  88.      </p>
  89.    </td>
  90.    <td> &#160; </td>
  91.  </tr>
  92.  <tr>
  93.    <td colspan="4"><hr /></td>
  94.  </tr>
  95.  ';
  96. }
  97. ?>
  98. </table>
  99.  
  100. <!--
  101. Quelle Script: http://www.zudila.ch/scripte/php_anzeigen.php
  102. Zudila Kleinanzeigen v1.2, GPL
  103. -->
  104.  
  105. </body>
  106. </html>
  107. <?php mysql_close($conn); ?>
  108.  
Script Update: 29.04.08

Erklärungen zum Code

Zu den Zeilen:

1 - 5: Hier der nicht vollständige head-Teil. Dazu kann der Quelltext dieser Seite betrachtet werden.

10: Jetzt inkludieren wir den Zugang zu unserer Datenbank. Dieser sollte immer in einer eigenen Datei sein, um so bei einer Änderung der Zugangsdaten, diesen nur an einem Ort anpassen zu müssen.
Beispiel: inc.php

12 - 32: Hier wird mit jedem Seitenaufruf die Datenbank auf verfallene Anzeigen überprüft.
Sollten sich sehr viele Anzeigen (hunderte!) in der Datenbank befinden, so sollte dieser Teil in eine eigene Datei verlegt werden, um so den Seitenaufbau zu beschleunigen und den Rechenaufwand auf dem Server zu reduzieren. Diese Datei würde dann am Besten mit einem CronJob periodisch aufgerufen.

12: Als Erstes vorsichtshalber x auf Null setzen.

21: Die Funktion time() gibt die aktuelle Zeit im UNIX-Format aus (Anzahl Sekunden seit dem 01.01.1970).

25 - 31: Ist die aktuelle Zeit grösser als "verfall", wird der Datensatz gelöscht.

36 - 41: Die Standard-HTML-Tags colgroup und col werden zu unrecht selten verwendet.
Damit lassen sich die Tabellenzellen vorgängig formatieren. Der Seitenaufbau erfolgt schneller und die Serverlast wird reduziert.

45 - 46: Die Datenbank-Tabelle wird aufgerufen. Das Datum wird gleich in das übliche Format gewandelt und die Sortierung vom jüngsten zum ältesten Datum vorgenommen.

49 - 96: Die Schlaufe wird so oft durchlaufen wir Datensätze ($num) vorhanden sind.

61: Die Funktion nl2br sorgt für den allfälligen richtigen Zeilenumbruch.

64 - 72: Wenn eine E-Mail-Adresse eingegeben wurde, so wird ein Button mit Link zum Antwort-Formular ausgegeben.

67: Mit "action" wir der Link zum Formular definiert.

68: Die ID wird mitgegeben.

84 - 86: Wurde eine Telefonnummer angegeben, so wird diese allenfalls angezeigt.

107: Der guten Ordnung halber, schliessen wir die Verbindung zur Datenbank.


Wenn der oben stehende Code richtig eingegeben wurde, so sollten jetzt die drei Beispiel-Datensätze bereits angezeigt werden.

Als nächstes wird nun die Datei zur Eingabe der Anzeigen erstellt: "anzeigen_eing.php".


Code Kleinanzeigen aufgeben

Datei: anzeigen_eing.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen aufgeben

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <?php
  10. include ("sicher/inc.php");
  11. include ("script/funktionen.php");
  12. $formanzeigen = "ja" ;
  13.  
  14. // Fehler auf NULL setzen
  15. $tart = ''; $tnname = ''; $tvname = ''; $tort = ''; $temail = ''; $ttel = '';
  16. $ttitel = ''; $tanzeige = ''; $tkennwort = ''; $tverfall = '';
  17.  
  18. // das Formular wird abgeschickt
  19. if (isset($_POST['submit'])) {
  20.  
  21.   // Tags entfernen
  22.   $art      = strtr(trim(strip_tags($_POST['art'])),'@',' ');
  23.   $vname    = strtr(trim(strip_tags($_POST['vname'])),'@',' ');
  24.   $nname    = strtr(trim(strip_tags($_POST['nname'])),'@',' ');
  25.   $ort      = strtr(trim(strip_tags($_POST['ort'])),'@',' ');
  26.   $email    = trim(strip_tags($_POST['email']));
  27.   $tel      = strtr(trim(strip_tags($_POST['tel'])),'@',' ');
  28.   $titel    = strtr(trim(strip_tags($_POST['titel'])),'@',' ');
  29.   $anzeige  = strtr(trim(strip_tags($_POST['anzeige'])),'@',' ');
  30.   $kennwort = strtr(strip_tags($_POST['kennwort']),'@',' ');
  31.   $verfall  = strip_tags($_POST['verfall']);
  32. //  $woher    = strip_tags($_POST['woher']);
  33.  
  34.   //Ablaufdatum festlegen
  35.   $woche = 604800; // = 60 * 60 * 24 * 7 Sekunden
  36.   $jetzt = time();
  37.   if ( $verfall == "1 Woche" )   { $verfall_1 = $jetzt + $woche ; }
  38.   if ( $verfall == "2 Wochen" )  { $verfall_1 = $jetzt + ( $woche * 2 ) ; }
  39.   if ( $verfall == "4 Wochen" )  { $verfall_1 = $jetzt + ( $woche * 4 ) ; }
  40.   if ( $verfall == "8 Wochen" )  { $verfall_1 = $jetzt + ( $woche * 8 ) ; }
  41.   if ( $verfall == "12 Wochen" ) { $verfall_1 = $jetzt + ( $woche * 12 ) ; }
  42.  
  43.     // Lange Wörter (>50) zwangstrennen, um Darstellung zu erhalten.
  44.     $anzeige = wordwrap($anzeige, 50, ' ', 1);
  45.     // doppelte Leerstellen entfernen
  46.     $anzeige = str_replace('  ', ' ', $anzeige);
  47.  
  48.     // prüfen ob alle Variablen richtig
  49.     if ( $art == "?" )  { $tart   = "Bitte Art angeben!" ; }
  50.     if ( $nname == "" ) { $tnname = "Bitte Nachname angeben!" ; }
  51.     if ( $vname == "" ) { $tvname = "Bitte Vorname angeben!" ; }
  52.     if ( $ort == "" )   { $tort   = "Bitte Ort angeben!" ; }
  53.     if ( $email != "" ) {
  54.         if (check_email($email)) { $temail = "" ; }
  55.         else { $temail = "E-Mail nicht richtig!" ; }
  56.     }
  57.     if ( ereg("[a-z_A-Z()/]",$tel))   { $ttel      = "Format: +00 0 000 00 00" ; }
  58.     if ( $titel == "" )               { $ttitel    = "Bitte Titel angeben!" ; }
  59.     if ( $verfall == "?" )            { $tverfall  = "Bitte Laufzeit angeben!" ; }
  60.     if ( $kennwort == "" )            { $tkennwort = "Bitte Kennwort angeben!" ; }
  61.     if ( $anzeige == "" )             { $tanzeige  = "Bitte Anzeigetext angeben!" ; }
  62.     if ( $tel == '' && $email == '' ) { $temail    = 'Bitte E-Mail oder Telefon angeben!' ; }
  63.  
  64.     // senden, wenn i.O.
  65.     if ( $tart == "" && $tnname == "" && $tort == "" && $ttitel == "" && $tkennwort == "" && $tanzeige == "" && $temail == ""  ) {
  66.  
  67.     // Mails senden
  68.  
  69.     $headers = "MIME-Version: 1.0\n";
  70.     $headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
  71.     $headers .= "From:".$vname." ".$nname." <".$email.">\n";
  72.     $headers .= "Reply-To: ".$email."\n";
  73.     $headers .= "X-Sender-IP:".$REMOTE_ADDR."\n";
  74.     $headers .= "X-Mailer:PHP/".phpversion();
  75.  
  76.     $betreff = "XY Kleinanzeigen";
  77.     $kopf1 = "Folgende Kleinanzeige ging ein:\n\n";
  78.     $eintrag = "Art: ".$art."\nNachname: ".$nname."\nVorname: "
  79.     .$vname."\nOrt: ".$ort."\nEMail: ".$email."\nTel: "
  80.     .$tel."\nAnzeigetitel:".$titel."\nAnzeige:\n".$anzeige;
  81.     $loesch1 = "\n\nAnzeige löschen:\n\n
  82.    http://www.xy.xy/scripte/anzeigen_loe_int.php" ;
  83.     $text1 = $kopf1.$eintrag.$loesch1;
  84.  
  85.     @mail( "webmaster@xy.xy" ,$betreff,$text1,$headers);
  86.  
  87.     if ($email !="") {
  88.       $kopf2 = "Sie haben bei uns folgende Kleinanzeige eingetragen:\n\n";
  89.       $loesch2 = "\n\nAnzeige löschen:\n\n
  90.      http://www.xy.xy/anzeigen_loe.php?email=".$email ;
  91.       $fuss2 = "\n\nVielen Dank.\nXY AG\nwww.xy.xy";
  92.       $text2 = $kopf2.$eintrag.$loesch2.$fuss2;
  93.       @mail($email,$betreff,$text2,$headers);
  94.     }
  95.  
  96.     // Eintraege an db Newsletter senden
  97.     //if ($email != ""){
  98.     //  $query= "INSERT into newsletter (vname,name,ort,email,woher)
  99.     //  VALUES ('$vname','$name','$ort','$email','$woher')";
  100.     //  mysql_query($query, $conn);
  101.     //}
  102.  
  103.     // Eintraege an db Anzeigen senden
  104.     $query1= "INSERT into anzeigen (art,vname,nname,ort,email,tel,titel,anzeige,kennwort,verfall)
  105.    VALUES ('$art','$vname','$nname','$ort','$email','$tel','$titel','$anzeige','$kennwort','$verfall_1')";
  106.     mysql_query($query1, $conn);
  107.     echo '
  108. <p class="e3"><br />Erfolgreich eingef&252;gt!<br /><br />
  109. <a href="anzeigen.php"><strong>Zur&252;ck zu den Anzeigen</strong></a>.<br />
  110.    ';
  111.     $formanzeigen = "nein" ;
  112.   }
  113.   else {
  114.     $fehlermeldung = 'Es hat noch Fehler!';
  115.   }
  116. }
  117.  
  118. if ( $formanzeigen == "ja" ) {
  119.   echo '
  120. <form method="post" action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" name="meldung">
  121. <table>
  122.  <tr>
  123.    <td>Art</td>
  124.    <td>
  125.      <select name="art" size="1">
  126.        <option value="?"       '.(($art == "?")       ? "selected" : "" ).'>?</option>
  127.        <option value="Biete"   '.(($art == "Biete")   ? "selected" : "" ).'>Biete</option>
  128.        <option value="Suche"   '.(($art == "Suche")   ? "selected" : "" ).'>Suche</option>
  129.        <option value="Tausche" '.(($art == "Tausche") ? "selected" : "" ).'>Tausche</option>
  130.      </select>
  131.      <span class="rot"><strong>'.$tart.'&#160;</strong></span>
  132.    </td>
  133.  </tr>
  134.  <tr>
  135.    <td>Nachname</td>
  136.    <td>
  137.      <input type="text" name="nname" size="40" maxlength="50" value="'.$nname.'" tabindex="1" />
  138.      <span class="rot"><strong>'.$tnname.'&#160;</strong></span>
  139.    </td>
  140.  </tr>
  141.  <tr>
  142.    <td>Vorname</td>
  143.    <td>
  144.      <input type="text" name="vname" size="40" maxlength="50" value="'.$vname.'" tabindex="2" />
  145.       <span class="rot"><strong>'.$tvname.'&#160;</strong></span>
  146.    </td>
  147.  </tr>
  148.  <tr>
  149.    <td>Ort</td>
  150.    <td>
  151.      <input type="text" name="ort" size="40" maxlength="50" value="'.$ort.'" tabindex="3" />
  152.      <span class="rot"><strong>'.$tort.'&#160;</strong></span>
  153.    </td>
  154.  </tr>
  155.  <tr>
  156.    <td>E-Mail</td>
  157.    <td>
  158.      <input type="text" name="email" size="40" maxlength="50" value="'.$email.'" tabindex="4" />
  159.      <span class="rot"><strong>'.$temail.'&#160;</strong></span>
  160.    </td>
  161.  </tr>
  162.  <tr>
  163.    <td>Telefon</td>
  164.    <td>
  165.      <input type="text" name="tel" size="40" maxlength="50" value="'.$tel.'" tabindex="5" />
  166.      <span class="rot"><strong>'.$ttel.'&#160;</strong></span>
  167.    </td>
  168.  </tr>
  169.  <tr>
  170.    <td>Anzeigetitel</td>
  171.    <td>
  172.      <input type="text" name="titel" size="40" maxlength="50" value="'.$titel.'" tabindex="6" />
  173.      <span class="rot"><strong>'.$ttitel.'&#160;</strong></span>
  174.    </td>
  175.  </tr>
  176.  <tr>
  177.    <td>Laufzeit</td>
  178.    <td>
  179.      <select name="verfall" size="1" tabindex="7">
  180.        <option value="1 Woche"   '.(($verfall == "1 Woche")   ? "selected" : "" ).'>1 Woche</option>
  181.        <option value="2 Wochen"  '.(($verfall == "2 Wochen")  ? "selected" : "" ).'>2 Wochen</option>
  182.        <option value="4 Wochen"  '.(($verfall == "4 Wochen")  ? "selected" : "" ).'>4 Wochen</option>
  183.        <option value="8 Wochen"  '.(($verfall == "8 Wochen")  ? "selected" : "" ).'>8 Wochen</option>
  184.        <option value="12 Wochen" '.(($verfall == "12 Wochen") ? "selected" : "" ).'>12 Wochen</option>
  185.      </select>
  186.      <span class="rot"><strong>'.$tverfall.'&#160;</strong></span>
  187.    </td>
  188.  </tr>
  189.  <tr>
  190.    <td>Kennwort</td>
  191.    <td>
  192.      <input type="password" name="kennwort" size="10" maxlength="10" value="'.$kennwort.'" tabindex="8" />
  193.      <span class="kl">(Zum L&ouml;schen der Anzeige.)</span>
  194.      <span class="rot"><strong>'.$tkennwort.'&#160;</strong></span>
  195.    </td>
  196.  </tr>
  197.  <tr>
  198.    <td>Anzeigetext</td>
  199.    <td>
  200.      <textarea rows="9" name="anzeige" cols="60" tabindex="9">'.$anzeige.'</textarea>
  201.      <div class="rot"><strong>'.$tanzeige.'&#160;</strong></div>
  202.    </td>
  203.  </tr>
  204. </table>
  205.  
  206. <input type="hidden" name="woher" value="InseratAuf" />
  207. <input class="norm" type="submit" name="submit" value="Abschicken" tabindex="11" />
  208.  
  209. </form>
  210.  ';
  211. }
  212. ?>
  213.  
  214. <!--
  215. Quelle Script: http://www.zudila.ch/scripte/php_anzeigen.php
  216. Zudila Kleinanzeigen v1.2, GPL
  217. -->
  218.  
  219. </body>
  220. </html>
  221. <?php mysql_close($conn); ?>
  222.  
Script Update: 30.04.08

Erklärungen zum Code

Zu den Zeilen:
Es werden nur die Teile erklährt, die in den oben stehenden Dateien nicht bereits vorgekommen sind!

11: Die eingebundene Datei enthält die Funktion zur Prüfung der E-Mail-Adresse.

12: Die Variable wird auf "ja" gesetzt um das Formular anzuzeigen.

19 - 116: Die zu durchlaufenden Zeilen, wenn das unten stehende Formular abgesendet wird.

22 - 32: Aus den eingegebenen Angaben entfernen wir alle Tags (strip-tags) und Leerschläge am Anfang und Ende (trim).

32: Diese Zeile nur wenn Newslettereintrag.

35 - 41: Je nach ausgewähltem Zeitrahmen, wird die Verfallzeit errechnet.
Diese Angaben können gut angepasst werden, müssen jedoch mit den Zeilen 180 - 184 übereinstimmen.

49 - 62: Es wird geprüft, ob die Pflichtfelder auch ausgefüllt wurden. Die E-Mail wird mit der in Zeile 11 eingebundenen Funktion "check_email" geprüft. Die Telefonnummer wird einer einfachen Prüfung unterzogen (ereg). Der auszugebende Fehlertext wird definiert.

65 - 112: Sind die Bedingungen in Zeile 65 erfüllt, so werden die Zeilen durchlaufen.

69 - 74: Der Hader für die Mails wir definiert.

76 - 83: Das Mail an den Webmaster wird definiert.

85: Das Mail an den Webmaster wird versendet. Das @ dient dazu, eine allfällige Fehlermeldung zu verhindern.

87 - 94: Wenn eine eigene E-Mail eingegeben wurde, wird ein Kontrollmail an den Inserent gesendet.

90: Der Link um die Anzeige vorzeitig zu löschen. Aus Sicherheit geben wir das Kennwort nicht mit, sondern nur die E-Mail.

96 - 101: Sollte die Adresse auch in eine Datenbank-Tanelle "newsletter" abgespeichert werden, so müssten die "//" vor den einzelnen Zeilen entfernt werden.
Die Tabelle müsste in der Datenbank selbstverständlich auch angelegt sein.
Wenn nicht gebraucht, können die Zeilen gelöscht werden.

104 - 106: Nun wird die Anzeige in die MySQL-Datenbank eingefügt.

107 - 110: Am Bildschirm wird die Meldung zur erfolgreichen Eintragung und ein Link "zurück zu den Anzeigen" ausgegeben.

111: Die Variable wird auf "nein" gesetzt um zu verhindern, dass das Formular nochmals angezeigt wird.

118 - 211: Als erstes wird geprüft, ob das Formular angezeigt werden soll, falls ja, so werden die Zeilen angezeigt.

101: Wir geben an, dass mit dem abschicken dieses Formulares diese Seite erneut aufgerufen wird.

125 - 130: Die Optionsfelder können in gleicher Art beliebig erweitert werden.

131: Die oben defienierte Fehlermeldung wird nun hier ausgegeben.

206: Die Zeile wird nur benötigt, wenn die Newsletter-Tabelle vorhanden ist, ansonsten kann sie gelöscht werden.


Um auf die Anzeigen antworten zu können, die Seite für die Mails.


Code Kleinanzeigen beantworten (Mails)

Datei: anzeigen_mail.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen Mail

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. </head>
  6.  
  7. <?php
  8. include ("sicher/inc.php");
  9. include ("script/funktionen.php");
  10.  
  11. $formanzeigen = 'ja';
  12. $fehlermeldung = '';
  13.  
  14. // Variable uebernehmen
  15. $id_anz_t = $_POST['id_anz'];
  16. if (ctype_digit($id_anz_t)) { $id_anz = $id_anz_t ; }
  17. else { $id_anz == '' ; }
  18.  
  19. // Verbindung mit Anzeigen
  20. $query = "SELECT *, DATE_FORMAT(datum,'%d.%m.%y') AS datum_f FROM anzeigen WHERE id_anz = '$id_anz'";
  21. $result = mysql_query($query, $conn);
  22. $num = mysql_num_rows($result);
  23.  
  24. $art          = mysql_result($result,0,"art");
  25. $titel        = mysql_result($result,0,"titel");
  26. $anzeige      = nl2br(mysql_result($result,0,"anzeige"));
  27. $emailanzeige = mysql_result($result,0,"email") ;
  28. ?>
  29.  
  30. <body>
  31.  
  32. <?php
  33. // prüfen ob id vorhanden
  34. if ($id_anz == '') {
  35.   $formanzeigen = 'nein' ;
  36.   echo '<p class="center rot"><strong>Keine Anzeige!</strong></p>';
  37. }
  38.  
  39. // Fehler auf NULL setzen
  40. $tnname = ''; $tvname = ''; $tort = ''; $temail = ''; $ttel = ''; $tantwort = '';
  41.  
  42. // Mails senden
  43. if (isset($_POST['submit'])) {
  44.  
  45.   $nname    = strtr(trim(strip_tags($_POST['nname'])),'@',' ');
  46.   $vname    = strtr(trim(strip_tags($_POST['vname'])),'@',' ');
  47.   $ort      = strtr(trim(strip_tags($_POST['ort'])),'@',' ');
  48.   $email    = trim(strip_tags($_POST['email']));
  49.   $tel      = strtr(trim(strip_tags($_POST['tel'])),'@',' ');
  50.   $antwort  = strtr(trim(strip_tags($_POST['antwort'])),'@',' ');
  51.   $id_anz   = strtr(trim(strip_tags($_POST['id_anz'])),'@',' ');
  52.  
  53.   // Lange Wörter (>50) zwangstrennen, um Darstellung zu erhalten.
  54.   $antwort = wordwrap($antwort, 50, ' ', 1);
  55.   // doppelte Leerstellen entfernen
  56.   $antwort = str_replace('  ', ' ', $antwort);
  57.    
  58.   // prüfen ob alle Variablen richtig
  59.   if ( $nname == "" ) { $tnname = "Bitte Nachname angeben!" ; }
  60.   if ( $vname == "" ) { $tvname = "Bitte Vorname angeben!" ; }
  61.   if ( $ort == "" )   { $tort   = "Bitte Ort angeben!" ; }
  62.   if ( $email != "" ) {
  63.     if (check_email($email)) { $temail = "" ; }
  64.     else { $temail = "E-Mail nicht richtig!" ; }
  65.   }
  66.   if ( ereg("[a-z_A-Z()/]",$tel))  { $ttel     = "Format: +00 0 000 00 00" ; }
  67.   if ( $antwort == "" )            { $tantwort = "Bitte Antworttext angeben!" ; }
  68.   if ( $tel == '' && $mail == '' ) { $temail   = 'Bitte E-Mail oder Telefon angeben!' ; }
  69.  
  70.   // senden, wenn i.O.
  71.   if ( $tnname == '' && $tvname == '' && $tort == '' && $ttel == '' && $tantwort == '' && $temail == ''  ) {
  72.  
  73.     // Mails senden
  74.     $headers = "MIME-Version: 1.0\n";
  75.     $headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
  76.     if ( $email != "" ) {
  77.       $headers .= "From:".$vname." ".$nname." <".$email.">\n";
  78.       $headers .= "Reply-To: ".$email."\n";
  79.     }
  80.     else {
  81.       $headers .= "From: info@zudila.ch\n";
  82.     }
  83.     $headers .= "X-Sender-IP:".$REMOTE_ADDR."\n";
  84.     $headers .= "X-Mailer:PHP/".phpversion();
  85.  
  86.     $betreff = "Zudila Kleinanzeigen";
  87.     $kopf1 = "Folgende Antwort ging auf Ihre Kleinanzeige ein:\n\n";
  88.     $an1 = "\nVon Mail: mailto:".$email."\n" ;
  89.     $eintrag = "\nName: ".$vname." ".$nname."\nOrt: "
  90.     .$ort."\nTel: ".$tel."\n\n".$antwort;
  91.     $trenner = "\n------------------------------------------------";
  92.     $ursprung = "\nUrsprüngliche Anzeige:\nArt: ".$art."\nTitel: "
  93.     .$titel."\n\n".$anzeige ;
  94.     $fuss = "\n\nVielen Dank.\nZudila AG\nwww.zudila.ch";
  95.     $text1 = $kopf1.$an1.$eintrag.$trenner.$ursprung.$trenner.$fuss;
  96.  
  97.     @mail($email,$betreff,$text1,$headers);
  98.  
  99.     if ($email !=""){
  100.       $kopf2 = "Sie haben bei uns folgende Antwort auf eine Kleinanzeige geschrieben:\n\n";
  101.       $an2 = "\nAn Mail: mailto:".$emailanzeige."\n";
  102.       $text2 = $kopf2.$an2.$eintrag.$trenner.$ursprung.$trenner.$fuss;
  103.       @mail($emailanzeige,$betreff,$text2,$headers);
  104.     }
  105.  
  106.     // Eintraege an db Newsletter senden
  107.     //if ($email != ""){
  108.     //  $query = "INSERT into newsletter (vname,nname,ort,email,woher)
  109.     //  VALUES ('$vname','$nname','$ort','$email','$woher')";
  110.     //  mysql_query($query, $conn);
  111.     //}
  112.  
  113.     echo '
  114. <p><br />Erfolgreich gesendet!<br /><br />
  115. <a href="anzeigen.php">
  116. <strong>Zur&#252;ck zu Anzeigen</strong></a><br />
  117.    ';
  118.     $formanzeigen = "nein" ;
  119.   }
  120.   else {
  121.     $fehlermeldung = 'Es hat noch Fehler!';
  122.   }
  123. }
  124.  
  125. if ( $formanzeigen == "ja" ) {
  126.   echo '
  127. <h2>Anzeige</h2>
  128.  
  129. <table width="100%">
  130.  <colgroup>
  131.    <col width="90" />
  132.    <col />
  133.    <col />
  134.    <col width="90" />
  135.  </colgroup>
  136.  <tr class="bgweiss">
  137.    <td><p><strong>&nbsp;'.$art.'</strong></p></td>
  138.    <td colspan="2"><p><strong>&nbsp;'.$titel.'</strong></p></td>
  139.    <td><p class="kl center">'.mysql_result($result,0,"datum_f").'</p></td>
  140.  </tr>
  141.  <tr>
  142.    <td> &#160; </td>
  143.    <td colspan="2">'.$anzeige.'</td>
  144.    <td> &#160; </td>
  145.  </tr>
  146.  <tr>
  147.    <td> &#160; </td>
  148.    <td colspan="2" class="bgweiss">
  149.      <p class="kl">&nbsp;'.mysql_result($result,0,"vname").' '.mysql_result($result,0,"nname").', '.mysql_result($result,0,"ort").'</p>
  150.    </td>
  151.    <td> &#160; </td>
  152.  </tr>
  153. </table>
  154.  
  155. <hr />
  156.  
  157. <h2>Antwort</h2>
  158.  
  159. <form method="post" action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" name="meldung">
  160. <table>
  161.  <tr>
  162.    <td colspan="2">
  163.      <span class="rot"><strong>'.$fehlermeldung.'</strong></span>&#160;
  164.    </td>
  165.  <tr>
  166.  <tr>
  167.    <td>Nachname</td>
  168.    <td>
  169.      <input type="text" name="nname" size="40" value="'.$nname.'" maxlength="50" tabindex="1" />
  170.      <span class="rot"><strong>'.$tnname.'&#160;</strong></span>
  171.    </td>
  172.  </tr>
  173.  <tr>
  174.    <td>Vorname</td>
  175.    <td>
  176.      <input type="text" name="vname" size="40" value="'.$vname.'" maxlength="50" tabindex="2" />
  177.      <span class="rot"><strong>'.$tvname.'&#160;</strong></span>
  178.    </td>
  179.  </tr>
  180.  <tr>
  181.    <td>Ort</td>
  182.    <td>
  183.      <input type="text" name="ort" size="40" value="'.$ort.'" maxlength="50" tabindex="3" />
  184.      <span class="rot"><strong>'.$tort.'&#160;</strong></span>
  185.    </td>
  186.  </tr>
  187.  <tr>
  188.    <td>E-Mail</td>
  189.    <td>
  190.      <input type="text" name="email" size="40" value="'.$email.'" maxlength="50" tabindex="4" />
  191.      <span class="rot"><strong>'.$temail.'&#160;</strong></span>
  192.    </td>
  193.  </tr>
  194.  <tr>
  195.    <td>Telefon</td>
  196.    <td>
  197.      <input type="text" name="tel" size="40" value="'.$tel.'" maxlength="50" tabindex="5" />
  198.      <span class="rot"><strong>'.$ttel.'&#160;</strong></span>
  199.    </td>
  200.  </tr>
  201.  <tr>
  202.    <td>Antworttext</td>
  203.    <td> &#160; </td>
  204.  </tr>
  205.  <tr>
  206.    <td colspan="2">
  207.      <textarea rows="9" name="antwort" cols="60" tabindex="9">'.$antwort.'</textarea>
  208.      <div class="rot"><strong>'.$tantwort.'&#160;</strong></div>
  209.    </td>
  210.  </tr>
  211. </table>
  212. <input type="hidden" name="empfaenger" value="'.mysql_result($result,0,"email").'" />
  213. <input type="hidden" name="id_anz" value="'.$id_anz.'" />
  214. <input type="hidden" name="woher" value="InseratAnt" />
  215.  
  216. <input class="norm" type="submit" name="submit" value="Abschicken" tabindex="11" />
  217. </form>
  218.  ';
  219. }
  220. ?>
  221.  
  222. <!--
  223. Quelle Script: http://www.zudila.ch/scripte/php_anzeigen.php
  224. Zudila Kleinanzeigen v1.2, GPL
  225. -->
  226.  
  227. </body>
  228. </html>
  229. <?php mysql_close($conn); ?>
  230.  
Script Update: 30.04.08

Erklärungen zum Code

Zu den Zeilen:

Von der Funktionalität her, gibt es kaum etwas neues.

15: Hier wird die ID-Variable von der vorherigen Seite übernommen

16 - 17: Die Variable wird geprüft, ob es sich dabei nur um Ziffern handelt.


Da eine Anzeige bereits vor ihrem Ablauf nicht mehr aktuell sein kann, geben wir dem Inserenten die Möglichkeit diese vorzeitig zu löschen.


Code Kleinanzeigen löschen

Datei: anzeigen_loe.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen Löschen

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <script src="/script/formpruef-de.js" type="text/javascript"></script>
  6. </head>
  7.  
  8. <body onload="startemail()">
  9.  
  10. <?php
  11. include ("sicher/inc.php");
  12. include ("script/funktionen.php");
  13.  
  14. // Aus dem Bestätigungsmail
  15. $email = trim(strip_tags($_GET['email']));
  16.  
  17. $tkennwort = '';
  18.  
  19. if (isset($_POST['submit'])) {
  20.   $email    = trim(strip_tags($_POST['email']));
  21.   $kennwort = trim(strip_tags($_POST['kennwort']));
  22.  
  23.   // pruefen ob alle Variablen richtig
  24.   if ( $kennwort == "" ) { $tkennwort = "Bitte Kennwort angeben!" ; }
  25.   if ( $email == "" )    { $temail    = "Bitte E-Mail angeben!" ; }
  26.   else {
  27.     if(check_email($email)) { $temail = "" ; }
  28.     else { $temail = "E-Mail nicht richtig!" ; }
  29.   }
  30.   // senden, wenn i.O.
  31.   if ( $kennwort != "" && $temail == "" ) {
  32.    
  33.     $query = "SELECT *, DATE_FORMAT(datum,'%d.%m.%y') AS datum_f  FROM anzeigen WHERE email ='$email' AND kennwort = '$kennwort' ORDER BY datum DESC";
  34.     $result = mysql_query($query,$conn);
  35.     $num = mysql_num_rows($result);
  36.     if ( $num == 0 ) {
  37.       echo '
  38. <div class="rot"><strong>Die eingegebene Kombination ist
  39. in unserer Datenbank nicht vorhanden!<br />
  40. Versuchen Sie es erneut.</strong></div>
  41.      ';
  42.       $formanzeigen = "ja" ;
  43.     }
  44.     else {
  45.         echo '    
  46. <table width="100%">
  47.  <colgroup>
  48.    <col width="90" />
  49.    <col />
  50.    <col />
  51.    <col width="90" />
  52.  </colgroup>  
  53.         ';    
  54.       for ($i = 0; $i < $num; $i++){
  55.         $row = mysql_fetch_array($result);
  56.         echo '
  57. <tr class="bgweiss">
  58.  <td><p><strong>  '.$row['art'].'</strong></p></td>
  59.  <td colspan="2"><p><strong>  '.$row['titel'].'</strong></p></td>
  60.  <td><p class="kl center">'.$row['datum_f'].'</p></td>
  61. </tr>
  62. <tr>
  63.  <td> &#160; </td>
  64.  <td colspan="2">'.nl2br($row['anzeige']).'</td>
  65.  <td class="center">
  66.        ';
  67.         if ( $row['email'] != "" ){
  68.           echo '
  69.    <div class="nopaper">
  70.    <form action="anzeigen_loe1.php" method="post">
  71.      <input type="hidden" name="id_anz" value="'.$row['id_anz'].'">
  72.      <input type="hidden" name="kennwort" value="'.$row['kennwort'].'">
  73.      <input class="norm" type="submit" name=delete" value="löschen">
  74.    </form>
  75.    </div>
  76.          ';
  77.         }
  78.         echo '
  79.  </td>
  80. </tr>
  81. <tr>
  82.  <td> &#160; </td>
  83.  <td class="bgweiss">
  84.    <p class="kl">  '.$row['vname'].' '.$row['nname'].', '.$row['ort'].'</p>
  85.  </td>
  86.  <td class="bgweiss"> &#160;
  87.        ';
  88.         if ( $row['tel'] != "" ){
  89.           echo '
  90.    <p class="kl">Tel: '.$row['tel'].'</p>
  91.          ' ;
  92.         };
  93.         echo '
  94.  </td>
  95.  <td> &#160; </td>
  96. </tr>
  97. <tr>
  98.  <td colspan="4"><hr /></td>
  99. </tr>
  100.        ';
  101.       }
  102.       $formanzeigen = "nein" ;    
  103.       echo '
  104. </table>
  105.      ';
  106.     }
  107.   }
  108.   else {
  109.     $formanzeigen = "ja" ;
  110.   }
  111. }
  112. ?>
  113.  
  114. </table>
  115.  
  116. <?php
  117. if ( $formanzeigen == "ja" ){
  118.   echo'
  119. <p>Geben Sie Ihre E-Mail-Adresse ein, an welche Sie das
  120. Best&#228;tigungsmail erhalten haben, sowie das Kennwort.</p>
  121.  
  122. <form method="post" action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" name="meldung">
  123. <table width="100%">
  124.  <tr>
  125.    <td>E-Mail</td>
  126.    <td>
  127.      <input type="text" name="email" size="40" maxlength="50" value="'.$email.'" tabindex="1" />
  128.      <span class="rot"><strong>'.$temail.'&#160;</strong></span>
  129.    </td>
  130.  </tr>
  131.  <tr>
  132.    <td>Kennwort</td>
  133.    <td>
  134.      <input type="password" name="kennwort" size="10" maxlength="10" tabindex="2" />
  135.      <span class="rot"><strong>'.$tkennwort.'&#160;</strong></span>
  136.    </td>
  137.  </tr>
  138. </table>
  139.  
  140. <p><input class="norm" type="submit" name="submit" value="Abschicken" /></p>
  141. </form>
  142.  ';
  143. }
  144. mysql_close($conn);
  145. ?>
  146.  
  147. <!--
  148. Quelle Script: http://www.zudila.ch/scripte/php_anzeigen.php
  149. Zudila Kleinanzeigen v1.2, GPL
  150. -->
  151.  
  152. </body>
  153. </html>
  154.  
Script Update: 30.04.08

Erklärungen zum Code

Zu den Zeilen:

5: Das eingefügte JavaScript positioniert den Curser in das erste Eingabefeld.

19 - 111: Nach dem Absenden wird dieser Teil durchlaufen.

54 - 101: Sollte auf mehrere Datensätze die gleich E-Mail und das selbe Kennwort zutreffen, so werden alle Anzeigen zur Auswahl angezeigt.

70: Beim Absenden wird hier nicht auf diese Seite, sondern auf die Seite "anzeigen_loe1.php" weitergeleitet.
Prinzipiell könnte die ausgelagerte Funktion auch auf dieser Seite verarbeitet werden, die Übersichtlichkeit des Codes würde jedoch schlechter.

71 + 72: Dem Formular werden die Variablen "$id_anz" und "kennwort" mitgegeben.

117 - 143: Der Teil, der beim Öffnen der Seite durchlaufen wird. Wenn der Inserent aus dem erhaltenen Bestätigungsmail den Link zum Löschen anklickt, so kommt er hier hin.


Aus der oben stehenden Seite zum Löschen, wird beim Löschen auf folgende Seite verwiesen.


Code Kleinanzeigen löschen Folgeseite.

Datei: anzeigen_loe1.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen Löschen Folgeseite

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <meta name="robots" content="noindex, nofollow" />
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?php
  11. include ("sicher/inc.php");
  12.  
  13. // Variable uebernehmen
  14. $id_anz_t = $_POST['id_anz'];
  15. if (ctype_digit($id_anz_t)) { $id_anz = $id_anz_t ; }
  16. else { $id_anz == '' ; }
  17. $kennwort = trim(strip_tags($_POST['kennwort']));
  18.  
  19. // loeschen Datensatz
  20. $query = "DELETE FROM anzeigen WHERE id_anz = '".$id_anz."' AND kennwort = '".$kennwort."' ";
  21. mysql_query($query, $conn);
  22. ?>
  23.  
  24. <p class="e2"><br /><br />
  25. <strong>Der Datensatz wurde gel&#246;scht!</strong><br /><br />
  26. </p>
  27.  
  28. <?php mysql_close($conn); ?>
  29.  
  30. </body>
  31. </html>
  32.  

Erklärungen zum Code

Zu den Zeilen:

5: Diese Seite solle nicht von den Suchmaschinen aufgenommen werden.

20 - 21: Der entsprechende Datensatz wird gleich gelöscht.


Die folgende Seite dient dem Administrator zur allfälligen Löschung von nicht erwünschten Anzeigen.
Die Seite sollte (muss!) geschützt werden, mit .htaccess oder einer Session.


Code Kleinanzeigen Admin löschen

Datei: anzeigen_loe_int.php

PHP & MySQL: Kleinanzeigen v1.2, Anzeigen Löschen Intern

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <meta name="robots" content="noindex, nofollow" />
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?php
  11. include ("sicher/inc.php");
  12.  
  13. // loeschen
  14. if (isset($_POST['delete'])) {
  15.   $id_anz_t = $_POST['id_anz'];
  16.   if (ctype_digit($id_anz_t)) { $id_anz = $id_anz_t ; }
  17.   $query = "DELETE FROM anzeigen WHERE id_anz = '$id_anz'" ;
  18.   $result = mysql_query($query,$conn);
  19. }
  20. ?>
  21.  
  22. <table width="100%">
  23.   <colgroup>
  24.     <col width="90" />
  25.     <col />
  26.     <col />
  27.     <col width="90" />
  28.   </colgroup>
  29. <?php
  30. $query = "SELECT *, DATE_FORMAT(datum,'%d.%m.%y') AS datum_f FROM anzeigen ORDER BY datum DESC";
  31. $result = mysql_query($query,$conn);
  32. $num = mysql_num_rows($result);
  33.  
  34. for ($i = 0; $i < $num; $i++){
  35.   $row = mysql_fetch_array($result);
  36.   $id_anz = $row['id_anz'];
  37.   echo '
  38. <tr class="bgweiss">
  39.  <td><p><strong>  '.$row['art'].'</strong></p></td>
  40.  <td colspan="2">
  41.    <p><strong>  '.$row['titel'].'</strong></p>
  42.  </td>
  43.  <td>
  44.    <p class="kl center">'.$row['datum_f'].'</p>
  45.  </td>
  46. </tr>
  47. <tr>
  48.  <td> &#160; </td>
  49.  <td colspan="2">'.nl2br($row['anzeige']).'</td>
  50.  <td class="center">
  51.    <form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post">
  52.         <input type="hidden" name="id_anz" value="'.$id_anz.'" />
  53.         <input class="norm" type="submit" name="delete" value="löschen" /><br />
  54.         '.$id_anz.'
  55.    </form>
  56.  </td>
  57. </tr>
  58. <tr>
  59.  <td> &#160; </td>
  60.  <td class="bgweiss">
  61.    <p class="kl">  '.$row['vname'].' '.$row['nname'].', '.$row['ort'].'</p>
  62.  </td>
  63.  <td class="bgweiss"> &#160;
  64.  ';
  65.   if ( $row['tel'] != "" ){
  66.     echo '
  67. <p class="kl">Tel: '.$row['tel'].'</p>
  68.    ' ;
  69.   };
  70.   echo '
  71.  </td>
  72.  <td> &#160; </td>
  73. </tr>
  74. <tr>
  75.  <td colspan="4"><hr /></td>
  76. </tr>
  77.  ';
  78. }
  79. mysql_close($conn);
  80. ?>
  81.  
  82. <!--
  83. Quelle Script: http://www.zudila.ch/scripte/php_anzeigen.php
  84. Zudila Kleinanzeigen v1.2, GPL
  85. -->
  86.  
  87. </body>
  88. </html>
  89.  
Script Update: 30.04.08

Erklärungen zum Code

Zu den Zeilen:

14 - 19: Die durchlaufenen Zeilen beim Löschen.

15: Die ID übernehmen.

16: Prüfen ob die ID auch eine Zahl ist.

Vielleicht hat Ihnen unser Skript ein paar Stunden Arbeit erspart?

Copyright © 1998 - 2010, Zudila AG, CH 8057 Zürich Diese Seite (www.zudila.ch/scripte/php_anzeigen.php) wurde aktualisiert: 23.07.09

Besucher heute: 160 Seitenaufrufe heute: 552 gerade online: 2
Besucher gestern: 220 Seitenaufrufe gestern: 470 max. online: 135
Besucher pro Tag: 206,52 Seitenaufrufe pro Tag: 680,52 Eigene Seitenaufrufe: 48
Valid XHTML 1.0! Valid CSS! Valid WCAG 1.0, WAI-AAA! ICRA Best viewed with any browser

www.zudila.ch   info@zudila.ch

nach oben
Herr Jürg Dieter Lüthard Jürg D. Lüthard Zudila AG www.zudila.ch Krokusweg 6 Switzerland 8057 Zürich Zürich +41 44 310 14 25 +41 79 691 87 58 +41 44 310 14 26
N 47º 24.2416 O 8º 32.9866
business Webseiten erstellen, programmieren, warten /
Web pages provide, program, wait /
Les pages Web fournissent, programment, attendent