Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „AAA ständige '''"" Fehler PHP“

xero7

» Unterdrück(t)er

Hallo ihr lieben,

ich bin gerade am coden von einem Gästebuch. Ich komem stänig mit den "" ' ' ducheinander, was muss ich denn wann nehmen, denn ständig kommen fehler, dass ich das Falsche gesetzt habe. Nun zu meinem Code.

eintrag.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>New Document</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
  
  <?php
  echo '
  <form methode="post" action="function/guestbook.php">
     <input type="text" name="na" /> Name<br /><br />
     <input type="text" name="vo" /> Vorname<br /><br />
     <input type="text" name="em" /> E-Mail<br /><br />
     <textarea name="txt" colspan="35" rows="8"></textarea> Text<br /><br />
     <input type="submit" name="senden" value="senden" /><br /><br />
  </form>';
  ?>
    
  </body>
</html>

function/guestbook.php
PHP:
<?php
   if (isset($_POST["senden"]))  //Pr&uuml;fen, ob die Eingaben abgesendet wurden
   {
      include ("../datenbank.php"); //Einf&uuml;gen der Server- & Datenbankdaten
   $code ="INSERT INTO gbuch(id, name, vorname, email, nachricht) values("", $_POST["na"], $_POST["vo"], $_POST["em"], $_POST["txt"])";
   $eintrag = mysql_query($code); //Ausf&uuml;hren des Codes auf dem Server
      if ($eintrag) // Wenn der Eintrag Vollbracht wurde
      {
         echo 'Eintrag Hinzugef&uuml;gt' ;
      }
      else
      {
         echo 'Es wurde kein Eintrag hinzugef&uuml;gt'
      }
   }
   else
   {
      echo 'Sie haben einen Fehler beim eingeben gemacht'
   }
?>

Dieser Fehler kommt immer.
Parse error: syntax error, unexpected '"' in C:\xampp\htdocs\gb\function\guestbook.php on line 5

Mir geht es nicht nur um den Fehler, sondern um eine gute Erklärung.

Liebe Grüße
Markus
 

blackout

Schaf im Wolfspelz

AW: AAA ständige '''"" Fehler PHP

PHP:
/*Deine Version*/ $code ="INSERT INTO gbuch(id, name, vorname, email, nachricht) values("", $_POST["na"], $_POST["vo"], $_POST["em"], $_POST["txt"])";
/*Richtig (Flüchtigkeitsfehler vorbehalten) ;)*/ $code ='INSERT INTO gbuch(id, name, vorname, email, nachricht) values("", '.$_POST['na'].', '.$_POST['vo'].', '.$_POST['em'].', '.$_POST['txt'].');';
HTML-Entitäten wie &uuml; sind in PHP-Kommentaren (und sonstwo in PHP) übrigens absolut unnütz.
Oh, und bereinige mal die Inhalte von $_POST (z.B. per mysql_real_escape_string()), sonst passiert dir sowas:
exploits_of_a_mom.png
 

xero7

» Unterdrück(t)er

AW: AAA ständige '''"" Fehler PHP

Danke für die schnelle und informative Antwort. Ja ich weiß, dass in den Kommentaren keine Entitäten sein müssen, jedoch amcht mein programm das automatisch. Danke für die schnelle Antwort.

Meine letzte Frage bezieht sich auf die Zeichen " " ' ' was ist wofür, wie kann ich Fehler vermeiden?
 

blackout

Schaf im Wolfspelz

AW: AAA ständige '''"" Fehler PHP

Der Unterschied zwischen ' und " liegt im Parsen des Inhalts. Je nachdem, welches Anführungszeichen man verwendet, werden bestimmte Zeichen innerhalb des Strings anders interpretiert.
Innerhalb von Sekundenzeichen (") sind diese besonderen Zeichen " \ \FOO $ (' nicht!) (\FOO steht dabei für Escapes à la "\n" oder auch "\x1f")
... und innerhalb von Minutenzeichen (') ' \ (" nicht!)
Ich würde generell vorschlagen ausschließlich mit ' zu arbeiten, da sie zum einen Mal performanter sind (bei "" wird der komplette String immer auf Inhalte untersucht, selbst wenn gar nichts coderelevantes enthalten ist -- "bla bla bla" wird also ebenso nach Variablen durchforstet wie "bla $bla bla", wobei nur in letzterem eine Variable enthalten ist, welche interpretiert werden muss). Außerdem ist es generell bequemer nur eine Sorte von Anführungszeichen zu verwenden, sonst muss man sich immer Gedanken machen welche Anführungszeichen man denn gerade verwendet hat und ob man innerhalb des Strings folglich entweder " oder ' escapen muss. Sollte ich doch mal ein LF (Line Feed, \n) verwenden müssen definier ich mir das entweder in eine Konstante (define('LF', "\n")) oder steck halt schnell einen kleinen "-Teil in den Code ('blablabla'."\n".'blabla').
Zusätzlich kann man in ' einfach HTML schreiben wie man Lust hat und muss sich nicht drum sorgen, dass irgendwo im HTML-Code ' verwendet werden, da in HTML quasi nur " verwendet werden, die ja mit ' keinerlei Bedeutung haben. Würde man Dinge wie '<img src="blabla" alt=""/>' mit doppelten Anführungszeichen schreiben sähe das so aus: "<img src=\"blabla\" alt=\"\"/>".

Anmerkung: Ja, man kann in HTML auch ' statt " benutzen, das ist aber eher unüblich. Ich bin daher mal so frech und setze " als defacto-Standard voraus. :)
 

xero7

» Unterdrück(t)er

AW: AAA ständige '''"" Fehler PHP

Ok, wenn ich es richitg verstanden, habe also bei allen php Dingen ist es sicherer einfach immer ' und bei den html wie ppblich immer " und dnan wird nichts falsch?

Letzte Frage ich habe den Code verfollständigt und folgender Fehler kommt.
PHP:
<?php
   if (isset($_POST['senden']))  //Pr&uuml;fen, ob die Eingaben abgesendet wurden
   {
      include ('../datenbank.php'); //Einf&uuml;gen der Server- & Datenbankdaten
   $code ='INSERT INTO gbuch (name, vorname, email, nachricht) VALUES('.$_POST['na'].', '.$_POST['vo'].', '.$_POST['em'].', '.$_POST['txt'].')';  
   $eintrag = mysql_query($code); //Ausf&uuml;hren des Codes auf dem Server
      if ($eintrag) // Wenn der Eintrag Vollbracht wurde
      {
         echo 'Eintrag Hinzugef&uuml;gt' ;
      }
      else
      {
         echo 'Es wurde kein Eintrag hinzugef&uuml;gt';
      }
   }
   else
   {
      echo 'Sie haben einen Fehler beim eingeben gemacht';
   }
?>

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>New Document</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
  
  <?php
  echo '
  <form method="post" action="function/guestbook.php">
     <input type="text" name="na" /> Name<br /><br />
     <input type="text" name="vo" /> Vorname<br /><br />
     <input type="text" name="em" /> E-Mail<br /><br />
     <textarea name="txt" colspan="35" rows="8"></textarea> Text<br /><br />
     <input type="submit" name="senden" value="senden" /><br /><br />
  </form>';
  ?>
    
  </body>
</html>

Es wurde kein Eintrag hinzugefügt

Liebe Grüße
Markus


EDIT:
Hast vllt. einen guten Link zu einem Minuten- Sekundenzeichen Tutorial?




Dank dir Blackout für die Mühe!!!
 
Zuletzt bearbeitet:

progfrog

programming & 3d

AW: AAA ständige '''"" Fehler PHP

Ich bin mir gerade nicht hundertprozentig sicher aber, setzte mal die Werte im VALUES Part von deinem Query auch in Anführungszeichen. Da du ja nun für Strings die ' Zeichen verwendest kannst du im Query dann ja auch " nehmen, dann brauchst du nichts escapen.

Ein INSERT INTO query sollte eigdl. etwa so aussehen:
PHP:
<?php
  $sql = "INSERT INTO tabelle (spalte1, spalte2) VALUES ('Bla', 'blub')";
?>
Beziehungsweise auch so:
PHP:
<?php
  $sql = 'INSERT INTO tabelle (spalte1, spalte2) VALUES ("Bla", "blub")';
?>
Deinen Query würde ich jetzt so umformen:
PHP:
<?php
  $code ='INSERT INTO gbuch (name, vorname, email, nachricht) VALUES("'.$_POST['na'].'", "'.$_POST['vo'].'", "'.$_POST['em'].'", "'.$_POST['txt'].'")';
?>
Ich muss sagen ich bin mir gerade nicht 100% sicher ob ich da nichts falsches erzähle. Ich zumindest schreibe meine Querys immer so und habe keine Probleme.

Hoffe ich konnte dir weiterhelfen. Probiers einfach mal aus.
Gruß progfrog
 

blackout

Schaf im Wolfspelz

AW: AAA ständige '''"" Fehler PHP

@progfrog: Jo, so wird's gemacht. :)
Ich würde allerdings Queries grundsätzlich einrücken, sonst geht irgendwann die Übersicht flöten:
PHP:
<?php
$code ='INSERT INTO gbuch (name, vorname, email, nachricht) VALUES("'.$_POST['na'].'", "'.$_POST['vo'].'", "'.$_POST['em'].'", "'.$_POST['txt'].'")';
// =>
$code = '
	INSERT INTO gbuch (
		name,
		vorname,
		email,
		nachricht
	) VALUES (
		"'.$_POST['na'].'",
		"'.$_POST['vo'].'",
		"'.$_POST['em'].'",
		"'.$_POST['txt'].'"
	)
';
?>

... hier noch ein paar Beispiele für " gegen ':
PHP:
<?php
echo "hello world";
/* Ausgabe:
hello world
*/
echo 'hello world';
/* Ausgabe (identisch zum Vorhergehenden):
hello world
*/

$foo = 'world';
echo "hello $foo";
/*
hello world
(der Parser erkennt, dass $bar eine Variable ist, und setzt ihren Wert ein)
*/
echo 'hello $foo';
/*
hello $bar
(dem Parser ist das $ völlig egal)
*/

echo "hello\nworld";
/*
hello
world
(Parser erkennt \n als Newline-Zeichen)
*/
echo 'hello\nworld';
/*
hello\nworld
 oder
hellonworld
(Ich bin mir nicht sicher wie in Minutenzeichen "sinnlose" Backslashes interpretiert werden; es könnte entweder ein \ oder nichts anstelle des \ ausgegeben werden. Sicher ist allerdings, dass das \n hier kein Newline-Zeichen ist.
*/

echo "hello \$foo";
/*
hello $foo
(Durch den Backslash wird das $ maskiert, verliert also seine semantische Relevanz und ist damit nicht mehr Schlüsselzeichen für eine Variable)
*/
echo 'hello \$foo';
/*
hello \$foo
 oder
hello $foo
(... wieder nicht sicher was ein sinnloser Backslash macht)
*/
unset($foo);

$array = array('bar' => 'world');
echo "hello $array['bar']";
/*
Solche Konstrukte sind dermaßen übersichtlich, dass ich sie noch nicht verwendet habe. Beim Durchlesen wird hier, insbesondere wenn der Schlüssel des Arrays komplexer ist (z.B. verkettete Zeichen usw.), kein Mensch wissen was gemeint ist.
Reintheoretisch würden mir hier 2 Möglichkeiten als Ergebnis einfallen:
1. hello world
2. hello [Parsefehler, da der Parser die [] nicht erkennt und davon ausgeht, dass $array in einen String konvertierbar ist -- $array ist aber ein Array. Folglich beschwert sich der Parser über "array to string conversion".)
... vielleicht noch was ganz anderes was mir jetzt nicht aufgefallen ist.
*/
echo "hello $array["bar"]";
/*
Parsefehler
*/
echo "hello $array[\"bar\"]";
/*
Hier ist das Verhalten wieder so undefiniert wie oben. Es könnte ein Parsefehler rauskommen, array to string conversion oder irgendwas Anderes.
*/
echo "hello \$array[\"bar\"]";
/*
hello $array["bar"]
*/
echo 'hello $array['bar']';
/*
Parsefehler
*/
echo 'hello $array["bar"]';
/*
hello $array["bar"]
*/
unset($array);
?>
... nach den Beispielen ein paar Regeln, die das alles etwas vereinfachen:
  1. Grundsätzlich ' verwenden; Variablen durch Verkettung einfügen, z.B. 'bla'.$foo.'blabla'
  2. " nur verwenden falls explizit benötigt, z.B. bei "\n" oder "\x1f" ...
  3. ... oder bei sehr kurzen Ausdrücken wie z.B. "$name@$domain.de", bei denen schnell klar ist worum es sich handelt
  4. Niemals (!) Arrays innerhalb von " interpretieren lassen (Verkettung benutzen, selbst wenn man " verwendet!)
 
Zuletzt bearbeitet:

progfrog

programming & 3d

AW: AAA ständige '''"" Fehler PHP

Ich würde allerdings Queries grundsätzlich einrücken, sonst geht irgendwann die Übersicht flöten:

Da hast du wohl recht. Hab den Query nur eben im Antworten Textfeld heruntergeschrieben. Da verliert man recht leicht die Übersicht. ;)
Aber gut, dass du es sagst.
 

jojoho

C4D Benutzer

AW: AAA ständige '''"" Fehler PHP

Und wenn ich das richtig sehe, dann musst du auch bei " im echo php klar machen dass das nichts mit php zu tuten hat,

also statt

PHP:
echo '
  <form method="post" action="function/guestbook.php">
     <input type="text" name="na" /> Name<br /><br />
     <input type="text" name="vo" /> Vorname<br /><br />
     <input type="text" name="em" /> E-Mail<br /><br />
     <textarea name="txt" colspan="35" rows="8"></textarea> Text<br /><br />
     <input type="submit" name="senden" value="senden" /><br /><br />
  </form>';


einfach

PHP:
echo '
  <form method=\"post\" action=\"function/guestbook.php\">
     <input type=\"text\" name=\"na\" /> Name<br /><br />
     <input type=\"text\" name=\"vo\" /> Vorname<br /><br />
     <input type=\"text\" name=\"em\" /> E-Mail<br /><br />
     <textarea name=\"txt\" colspan=\"35\" rows=\"8\"></textarea> Text<br /><br />
     <input type=\"submit\" name=\"senden\" value=\"senden\" /><br /><br />
  </form>';
 

xero7

» Unterdrück(t)er

AW: AAA ständige '''"" Fehler PHP

So, ich sehe super gute Antworten hier danke an Alle für die Mühe. Ich versuche es nochmal zusammenzufassen:

1.
Bei definitionen von Variablen z.B. $foo = 'hallo' oder $foo = "hallo" ist es egal was man nimmt.
2. Möchte man jedoch eine Variable anzeigen lassen, muss man es so machen z.B. echo "Ich sage $foo".
3. Bei allen normalen HTML Codes die in einer <?php ?> stehen müssen so geschrieben werden. <table width=\"200\" height=\"300\">. Muss man das oder gibt es auch eine andere Lösung, denn finde diese \ sehr umständlich.

Liebe Grüße und vielen Dank
Markus


Ich verstehe ja so langsam PHP, doch diese zeichen machen mich ganz verrückt, immer nur Fheler durch den Zeichen:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>New Document</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
  
  
  <?php
include('datenbank.php');
$db2 = mysql_query("SELECT * FROM gbuch ORDER by id DESC");
while($db3 = mysql_fetch_array($db2)){
echo '
<table border="1" cellspacing="1" id="nachricht" width="387">
            <tr>
                        <td width="50%">'.$db3[name]. '</td>
                        <td width="50%">'.$db3[vorname]. '</td></tr><tr>
                        <td colspan="2">
                        'if (isset($db3[email])) {
                           echo '<a href='mailto:$db3[email]'><img src="images/email.png" /></a>'
                        
                        ';
                        
                        
                        
                        
                        '.$db3[email]. '</td>
</tr><tr><td colspan="2">'.$db3[nachricht]. '<td>
            </tr>
</table><p> 
';
}
?>
    
  </body>
</html>

Das ist die Datei, die dann die texte anzeigen soll, da dachte ich, mache ich eine Abfrage, ob eine email angegeben wurde, wenn ja dann wird eine E-mail Grafik angezeigt.

Konnte es aber nicht auf die Funktionalität test, wird wahrscheinlich noch eine bis 2,3 Fehler drin sein, doch kann ich das nicht korrigieren, weil wieder die Zeichen " ' Falsch sind. Ich verstehe das nicht miut den Zeichen!

Liebe Grüße
Markus
 
Zuletzt bearbeitet:

xero7

» Unterdrück(t)er

AW: AAA ständige '''"" Fehler PHP

PHP:
if (isset($db3['email']) && $db3['email']!='')

Bei dem verstehe ich nicht, warum das
PHP:
 && $db3['email']!='')
da noch in muss, wüde das nciht auch gehen, wenn man das weg lässt?
 

jojoho

C4D Benutzer

AW: AAA ständige '''"" Fehler PHP

Du kannst auch statt

PHP:
<?php

// PHP anweisungen

echo "<font color=\"red\">Das schöne PHP</font>";

// weitere PHP anweisungen

?>

einfach

PHP:
<?php

// PHP anweisungen
?>

<font color=red>Das schöne PHP</font>

<?
// weitere PHP anweisungen
?>

schreiben. Dann sparst du dir echo und die Maskierung der ".

mfg jojoho
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
175.158
Beiträge
2.581.869
Mitglieder
67.223
Neuestes Mitglied
Desiree
Oben