Antworten auf deine Fragen:
Neues Thema erstellen

Benötige Hilfe bei Fehlerbehebung

Alucard26

Nicht mehr ganz neu hier

Ich habe ein Problem und weiß leider nicht wie ich diesen Fehler beheben kann:

Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\stefanundmagda\neuereintrag.php on line 111

Der Code sieht wie folgt aus:
PHP:
]<?php
require_once "db_daten_msql.inc";
$host = htmlspecialchars($_SERVER["HTTP_HOST"]);
$uri  = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\");
$extra = "anzeigen.php";
if (empty($_POST["beitrag"])) {
?>
<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="robots" content="index">
   <meta name="robots" content="follow">
   <meta name="robots" content="noarchive">
   <title> Stefan und Magdalena</title>
 
    <link rel="stylesheet" type="text/css" href="css/webseite.css">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
</head>
<body>
<body>
      <div id="kopf">
        <img src="header.gif">
      </div>
      <div id="container">
      <div id="navigation">
        <ul>
          <li><a href="index.php">Startseite</a></li>
          <li><strong>G&auml;stebuch</strong></li>
          <li><a href="bildergallery.html">Bildergallery</a></li>
          <li><a href="datenschutz.html">Datenschutz</a></li>
        </ul>
       </div>
     
     
    
       <div id="inhalt">
         <h2>Neuer G&auml;stebuch Eintrag</h2>
         <br>
        </br>
<div id="formular">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
Name <br />
<input type="text" name="name" maxlength="25" /><br />
E-MAil <br />
<input type="text" name="email" maxlength="25" /><br />
Beitrag <br />
<textarea name="beitrag" rows="5" cols="30"></textarea><br />
<input type="submit" />
</form>
         </div>
       
       
       
          </div>
           <div id="seite">
     
       
      
       </div>
        </div>
        </div>
        </div>
       <div id="fuss"> <p>&copy; 2015</p>
       </div>
       <div id="banner">
     
       </div>
       </div>
       </div>
       </div>
       </div>
       </div>
  
</body>
</body>
</html>
<?php
else {
  if ($stmt = $mysqli->prepare("INSERT INTO guestbook (name, email, beitrag) VALUES (?, ?)")) {
    $name = $_POST["name"];
    $email = $_POST["email"];
    $beitrag = $_POST["beitrag"];
    $stmt->bind_param("ss", $name, $email $beitrag);
    $stmt->execute();
    $stmt->close();
    $mysqli->close();
    header("Location: http://$host$uri/$extra");
   }
}
?>

Wer kann mir sagen wo mein Fehler ist?
Danke schon mal.
 

msa1989

Bin da

Außerdem ist dein SQL-Befehl fehlerhaft.
Du möchtest doch 3 Dinge einfügen? (Name, Email und Beitrag)
Dann solltest du auch 3 Fragezeichen setzen und in der Zeile mit "bind_param" dann drei "s" und noch ein Komma hinter $email
Code:
$stmt->bind_param("sss", $name, $email, $beitrag);
 

Alucard26

Nicht mehr ganz neu hier

Vielen dank habe alle Fehler die Ich gefunden habe beseitigt. Habe jetzt bei folgendem noch ein Problem:

PHP:
<?php
require_once "mysql.inc";
if ($stmt = $mysqli->prepare("SELECT ID, name, email, beitrag FROM guestbook")) {
  $stmt->execute();
  $stmt->bind_result($ID, $name, $email, $beitrag);
  echo "<ul>\n";
  while($stmt->fetch()) {
      date_default_timezone_set("Europe/Berlin");
    echo "<li><strong><div id='beitrag'>"
          ."<br>" . htmlspecialchars($name)."</br>"
          . "</strong>: "
      . "<br>" .htmlspecialchars($email) . "</br>"
      . "<br><p>".  htmlspecialchars ($beitrag) ."</br></p>"
      . "</li>\n";
  }
  echo "</ul>\n</div>";
  $stmt->close();
  }
$mysqli->close();
?>

Wie kann ich beim $beitrag ein automatischen Umbruch einfügen, weil wenn ich ds als ein Text schreibe bekomme ich nur eine lange Zeile ohne Umbruch. Wer kann mir da einen Tip geben?
 

msa1989

Bin da

Wie ist denn der Beitrag in der Datenbank gespeichert?
Irgendwo muss ja der Beitrag selbst einen Zeilenumbruch gespeichert haben, weil wo soll er sonst herkommen?

Edit: Was natürlich funktioniert ist ein automatischer Zeilenumbruch alle x Zeichen
 
Zuletzt bearbeitet:

Enigmon

Nicht mehr ganz neu hier

Hmm..

entweder <p> mit einer Klasse belegen die "width" und ggf. "overflow" enthält oder mittels Funktion in den $beitrag an den jeweiligen Stellen ein <br> einfügen lassen.

LG
Thomas
 
Zuletzt bearbeitet:

Alucard26

Nicht mehr ganz neu hier

Ich habe diese Funktion geschrieben:
PHP:
<?php
function beitrag ($beitrag);
  str_word_count =($beitrag,25);
  for (preg_replace ("</br>");
?>

Ich möchte damit nach 25 Wörtern ein Break einfügen.
Wer kann mirsagen wo mein Fehler ist, da es nicht funktioniert.
 

msa1989

Bin da

Ich hoffe mal, dass beim kopieren des Skripts irgendwas heftig schief gelaufen ist.
Wo sind die Klammern der Funktion?
Warum ist da ein "=" hinter str_word_count? Was macht deine for-Schleife so alleine?
Schau das bitte nochmal an und poste den vollständigen Code.

Oder du googelst mal wie man einen String alle X-Wörter trennt. Da findet sich bestimmt ein fertiges Skript
 

Enigmon

Nicht mehr ganz neu hier

Hallo,
ich hab da mal was zurechtgepfriemelt. Daraus kannst du dir deine Funktion machen.
Geht sicher noch besser. Ist ja wie immer nur ein Ansatz:

PHP:
// Teststring
$input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";  

$numWords=5; // Wörter pro Zeile
$count = (int)(str_word_count($input,0)/$numWords); // Anzahl der Umbrüche ermitteln
$myString="<br>"; // String der eingefügt werden soll

if(str_word_count($input,0)>$numWords){
    $start=0;$newStart=0;
    for($c=0; $c<$count; $c++){
        for ($i=0;$i<$numWords;$i++){
            $newStart = strpos($input," ",$start);
            $start= $newStart+1;           
        }
        $firstPart = substr($input,0, $newStart);
        $secondPart = substr($input, $newStart);
        $input = $firstPart.$myString.$secondPart;
        $start = $start +strlen($myString);
    }

}
echo $input;

Gruss
Thomas
 

Enigmon

Nicht mehr ganz neu hier

Ja du hast Recht, aber die Anfrage lautete nach einen Umbruch nach 25 Wörtern.
Und ich liebe Herausforderungen... :happy:


Gruss
Thomas
 

Duddle

Posting-Frequenz: 14µHz

Es gibt da bestimmt unzählige Lösungen, aber selber nachdenken macht ja auch oft Spaß. Mein Vorschlag:

PHP:
<?php
$input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."; 

echo implode(array_map(function($arr) { $arr[] = "<br />"; return implode(" ", $arr); }, array_chunk(explode(" ", $input), 5)));
?>
Oder in Langform:
PHP:
<?php
$input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."; 

$exploded = explode(" ", $input);
$chunks = array_chunk($exploded, 5);

function erweitern($arr) {
  $arr[] = "<br />";
  $teilstring = implode(" ", $arr);
  return $teilstring;
}
$chunksErweitert = array_map("erweitern", $chunks);

$endergebnis = implode($chunksErweitert);

echo $endergebnis;
?>
Erst wortweise auseinandernehmen und in Teil-Arrays mit je 5 Einträgen aufteilen, danach jedes an jedes dieser Teil-Arrays ein Element mit dem Umbruch anhängen und das Teil-Array zu einem String zusammenfassen, schlußendlich die Teil-Strings zusammenführen.


Duddle
 

Duddle

Posting-Frequenz: 14µHz

PHP:
<?php

function enigmon() {
  // Teststring
  $input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";

  $numWords=5; // Wörter pro Zeile
  $count = (int)(str_word_count($input,0)/$numWords); // Anzahl der Umbrüche ermitteln
  $myString="<br>"; // String der eingefügt werden soll

  if(str_word_count($input,0)>$numWords){
   $start=0;$newStart=0;
   for($c=0; $c<$count; $c++){
    for ($i=0;$i<$numWords;$i++){
     $newStart = strpos($input," ",$start);
     $start= $newStart+1;
    }
    $firstPart = substr($input,0, $newStart);
    $secondPart = substr($input, $newStart);
    $input = $firstPart.$myString.$secondPart;
    $start = $start +strlen($myString);
   }

  }
  return $input;
}

  function erweitern($arr) {
   $arr[] = "<br />";
   $teilstring = implode(" ", $arr);
   return $teilstring;
  }
function duddle() {
  $input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";

  $exploded = explode(" ", $input);
  $chunks = array_chunk($exploded, 5);

  $chunksErweitert = array_map("erweitern", $chunks);

  $endergebnis = implode($chunksErweitert);

  return $endergebnis;
}

function duddlekurz() {
  $input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";

  return implode(array_map(function($arr) { $arr[] = "<br />"; return implode(" ", $arr); }, array_chunk(explode(" ", $input), 5)));
}


for($durchlauf = 0; $durchlauf < 10; $durchlauf++) {
  echo "Durchlauf $durchlauf :<br>";
  $functions = array("enigmon", "duddle", "duddlekurz");
  foreach($functions as $f) {
   $start_time = microtime(TRUE);
   $max = 5000;
   for($i = 0; $i < $max; $i++) {
    $tmp = $f();
   }
   $end_time = microtime(TRUE);
   $time = $end_time - $start_time;
   echo $f.": ".$time."<br>";
  }
  echo "<br>";
}
?>
ergibt auf meinem System
Code:
Durchlauf 0 :
enigmon: 1.1300649642944
duddle: 0.74704194068909
duddlekurz: 0.64103698730469

Durchlauf 1 :
enigmon: 1.1390650272369
duddle: 0.78304505348206
duddlekurz: 0.65203714370728

Durchlauf 2 :
enigmon: 1.1130638122559
duddle: 0.77404403686523
duddlekurz: 0.64203715324402

Durchlauf 3 :
enigmon: 1.1410648822784
duddle: 0.76404404640198
duddlekurz: 0.65403699874878

Durchlauf 4 :
enigmon: 1.1060638427734
duddle: 0.78004384040833
duddlekurz: 0.6390368938446

Durchlauf 5 :
enigmon: 1.1590659618378
duddle: 0.76504397392273
duddlekurz: 0.67203807830811

Durchlauf 6 :
enigmon: 1.1400661468506
duddle: 0.79304480552673
duddlekurz: 0.64803719520569

Durchlauf 7 :
enigmon: 1.1420648097992
duddle: 0.7730450630188
duddlekurz: 0.65603709220886

Durchlauf 8 :
enigmon: 1.1280648708344
duddle: 0.76804304122925
duddlekurz: 0.66103792190552

Durchlauf 9 :
enigmon: 1.1120641231537
duddle: 0.7600429058075
duddlekurz: 0.65903806686401

:)

Edit: noch schneller, und deutlich besser als das mapping zu lesen, ist
PHP:
function duddleforeach() {
  $input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."; 

  $exploded = explode(" ", $input);
  $chunks = array_chunk($exploded, 5);

  $endergebnis = "";
  foreach($chunks as $c) {
   $c[] = "<br />";
   $endergebnis .= implode(" ", $c);
  }

  return $endergebnis;
}
Edit2: kleine Veränderung, aber nochmal nen Tick schneller:
PHP:
function duddleforeach2() {
  $input= "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";  

  $exploded = explode(" ", $input);
  $chunks = array_chunk($exploded, 5);

  $endergebnis = "";
  foreach($chunks as $c) {
   $endergebnis .= implode(" ", $c)."<br />";
  }

  return $endergebnis;
}

Duddle
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben