php mit G.oLive6.0 in ASCII übertragen. php mit G.oLive6.0 in ASCII übertragen.

mactrisha

mactrisha

Aktives Mitglied
Thread Starter
Dabei seit
27.11.2003
Beiträge
744
Reaktionspunkte
17
Hi all,

php Dateien muss man ja (glaube ich, ich bin noch am Anfang) im ASCII-Mode übertragen, wie macht man das in G.oLive6.0 und welche Schriftcodierung sollte man in G.oLive6.0 einstellen, damit die php Dateien richtig sind? Kann die Schriftcodierung der Grund für einen Parse Errror on Line .... sein? Parse Error ist doch ein Syntaxfehler, oder was kann das noch sein?

So long ...
mactrisha.
 
Hallo mactrisha,

also mir wäre es neu, wenn man PHP Dateien im ASCII Format speichern
müsste ... sollte also eher ein Syntaxfehler in Deinem Skript sein. Lass das
doch mal sehen!


Gruß
Delmar
 
Hier meine Beispiele.

Hi Delmar,

Danke für deine Antwort. Das sind alles Beispiele aus meinem PHP-Lehrbuch, die ich, um die Syntax zu lernen abgetippt und aufs Komma Korrekturgelesen habe. Dann dachte ich, wird schon mein Tippfehler sein, habe dann aber über kopieren und einfügen (aus einer Lerndatei) einen PHP-Code "geschrieben" und die gehen auch nicht, obwohl da ja keiner meiner selbst verursachten Tippfehler drin sein kann.

Also dieses Script geht: Sagt den Browser und die IP-Adresse:

<html><head><title>PHP-Beispiel</title><head>
<body bgcolor="#ffffff">
<table width="254" border="1" cellspacing="2" cellpadding="0">
<tr>
<td>sie verwenden</td>
<td><?php echo $_SERVER['HTTP_USER_AGENT'] ?></td>
</tr>
<tr>
<td>und ihre IP-Adresse ist</td>
<td><?php echo $_SERVER['REMOTE_ADDR'] ?></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
<p></p>
</body></html>

Dieses geht nicht: Da soll laut Handbuch "ein html-Formulat erzeugen, das den Anwender auffordert, einen Namen und mehrere Interessengebiete einzugeben, normalerweise, so preist das Handbuch braucht man zwei Dateien dafür, aber das könne in einer erledigt werden und zwar in dieser:

<html><head><title>Formularbeispiel</title></head>
<body>
<h1>Formularbeispiel</h1>
<?
function show_form($first="", $last="",
$interest="") {
$options = array("Sport", "Beruf", "Reisen", "Shopping", "Computer");
if(!is_array($interest)) $interest = array();
?>
<form action="form.php" method="POST">
Vorname:
<input type="text" name="first"
value="<?echo $first?>">
<br />
Nachname:
<input type="text" name="last"
value="<?echo $last?>">
<br />
Interessengebiete:
<select multiple name="interest[]">
<?php
foreach($options as $option) {
echo "<option";
if(in_array($option, $interest)) {
echo " selected";
}
echo "> $option</option>\n";
}
?>
</select><br />
<input type=submit>
</form>
<?php } // end of show_form() function

if($_SERVER['REQUEST_METHOD']!='POST') {
show_form();
} else {
if(empty($_POST['first']) ||
empty($_POST['last']) ||
empty($_POST['interest'])) {
echo "<p>Sie haben nichts eingegeben,";
echo "bitte versuchen Sie es erneut.</p>\n";
show_form($_POST['first'],$_POST['last'],
$_POST['interest']);
}
else {
echo "<p>Vielen Dank, $_POST[first] $_POST[last], Sie ";
echo "haben".
join(" und ", $_POST['interest']):
echo " als Ihre Interessengebiete ausgewehlt.</p>\n";
}
}
?>
</body></html>

Das funktioniert auch nicht: Das ist ein Votescript:

<?
if($vote && !$already_voted)
SetCookie('already_voted',1);
?>
<html><head><title>Name des Babies<\title>
<\head><h3>Name des Babies</h3>
<form action="baby.php" method="POST">
<p>Vorschlag:
<input type="text" name="new_name"></p>
<input type="submit" value="Vorschlag und/oder Stimme abschicken">
<?
mysql_pconnect("localhost");
$db = "test";
$table = "baby_names";

if($new_name) {
if(!mysql_db_query($db, "insert into $table values ('$new_name',0)")) {
echo mysql_errno().': '. mysql_error()."<br />\n";
}
}
if($vote && $already_voted) {
echo '<p><b>Du hast schon abgestimmt.';
echo "Stimme ignoriert.</b />\n";
}
else if($vote) {
if(!mysql_db_query($db, "update $table set votes=votes+1 where name='$vote'")) {
echo mysql_errno().':'. mysql_error()."<br />\n";
}
}
$result=mysql_db_query($db, select sum(votes) as sum from $table");
if($result) {
$sum = (int) mysql_result($result,0,"sum");
mysql_free_result($result);
}
$result=mysql_db_query($db, "select * from $table order by votes DESC");
echo <<<EOD
<table border="0"><tr><th>Vote</th>
<th>Idea</th><th colspan="2">Votes</th>
</tr>
EOD;
while($row=mysql_fetch_row($result)) {
echo <<<FOO
<tr><td align="center">
<input type="radio" name="vote" value="$row[0]"></td>
<td>$row[0]</td>
<td align="right">$row[1]</td>
<td>
FOO;
if($sum && (int)$row[1]) {
$per = (int)(100 * $row[1]/$sum);
echo '<img scr="bline.gif" height=12 ';
echo "width=$per> $per %</td>;
}
echo "</tr>\n";
}
echo "</table>\n";
mysql_free_result($result);
?>
<input type="submit" value="Vorschlag" und/oder Stimme abschicken" />
<input type="reset" />
</form>
</body></html>

Ich bin ratlos, mein PHP-Server läuft, die Datenbanken und mySQL auch, sogar phpmyadmin funzt problemlos, und ich habe die Scripte alle fünfmal Zeichen für Zeichen gelesen. Übrigens funzen die auch nicht auf einem "echten Server" zum Beispiel auf dem meines Webspaces.

Hast du da eine Idee? Ich habe den PHP-Code teilweise aus G.oLive-Textdateien abgespeichert, habe aber auch parallel immer in TextEdit gearbeitet, muss man da bestimmte Textcodierungen einstellen?

So long und Danke für dein freundliches Interesse ...
mactrisha.
 
Hi Du,

also in dem zweiten Skript ist nur ein Fehler in der Zeile:

PHP:
join(" und ", $_POST['interest']):

Muss nämlich mit einem Semikolon beendet werden und nicht mit einem
Doppelpunkt!

Im zweiten sind etliche Fehler drin. Fehlende Anführungszeichen, Semikolons
(schreibt man das so?), ... ! Scheint nicht besonders gut auf Fehler inspiziert
worden zu sein. An Deinen Einstellungen ist also alles in Ordnung! Keine
Sorge.

Versuch doch aber mal die Fehlermeldungen nachzuvollziehen, ist meiner
Meinung nach auch 'ne sehr gute Übung zum Anfang!

Und wenn noch Fragen sind ... ;)


Gruß
Delmar
 
Es funzt!

Hi Delmar,

Danke für deine großartige Hilfe und die beruhigenden Worte, es lag an dem Doppelpunkt und ich bin beruhigt, dass mein Serverzeug funktioniert. Ich arbeite jetzt sehr hart daran, das eintippen des Codes richtig zu machen und gewissenhaft zu kontrollieren. Ich habe mir den TumultHyperEdit geladen, der ja eine Echtzeitvorschau eines PHP-Codes machen kann, aber der funktioniert leider mit meiner PHP von Entropy nicht, weil in der Beschreibung steht, man braucht eine Commandline Version von PHP. Ich dachte, dieser Editor könnte mir beim Lernen der Syntax behilflich sein. Gibt es da vielleicht noch einen Editor, der eine Vorschau leisten kann und eine automatische Vervollständigung macht? Den TumultHyperEdit habe ich Versiontracker gefunden.

Many thanks so long ...
mactrisha.
 
Hallo Du,

ich muss gestehen, dass ich TumultHyperEdit selber gar nicht kenne. Soweit
ist mir aber auch kein weiterer Editor bekannt, der diese Funktionen bietet.

Ich arbeite mit SubEthaEdit. Falls Du den nicht kennst, dieser bietet "nur"
reine Editier-Funktionen. Aber noch die Möglichkeit, per Rendevous seine
Dateien mit anderen über ein Netzwerk oder das Internet gleichzeitig zu
bearbeiten. Und ... er ist kostenlos!

Ein weiterer, sehr bekannter Editor ist BBedit. Die Funktionalität dieses
Editors ist mir aber leider nicht bekannt. Kostet auch einiges - glaube ich.

Das wären jetzt so die beiden ersten, bzw. die bekanntesten, die mir einfallen
würden. Es gibt zwar noch jede Menge Free- und Shareware in dieser Sparte,
von denen hat sich aber meines Wissens nach, noch keiner so richtig durch-
gesetzt.


Gruß
Delmar
 
Ich bin's noch mal.

Ich habe mir gerade mal TumultHyperEdit angeschaut. Eine ähnlich Funktion
der "Live"-Vorschau, bietet auch SubEthaEdit. Dieses ist jedoch auch reines
HTML beschränkt!


Gruß
Delmar
 
Erfolgsmeldung:

Hi Delmar,

jeeaaah! Ich habe auf meinem Serve die Fehlermeldungen eingestellt und sehe diese jetzt genau wie auf dem Server meines Providers. Dann habe ich die Schreibfehler im Script behoben, das Leerbuch hatte tatsächlich Fehler und zwar haben die ein Bodyendtag geschrieben aber kein Bodyanfangtag, dann noch ganz unten falsch <input type="reset" /> statt richtig <input type="reset">, das habe ich selbst herausgefunden. Jetzt funktioniert dieses Script wie unten. Dann war noch das: - register_globals = war Off, und im Script war genau dieses $foo ja drin, also habe ich das auf "On" gestellt in der php.ini stand diese Info:

; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.

<?
if($vote && !$already_voted)
SetCookie('already_voted',1);
?>
<html><head><title>Name des Babies</title>
</head><body><h3>Name des Babies</h3>
<form action="babynew.php" method="POST">
<p>Vorschlag:
<input type="text" name="new_name"></p>
<input type="submit"
value="Vorschlag und/oder Stimme abschicken">
<?
mysql_pconnect("localhost", "username", "password");
$db = "datenbankname";
$table = "baby_names";

if($new_name) {
if(!mysql_db_query($db, "insert into $table
values ('$new_name',0)")) {
echo mysql_errno().':'.
mysql_error()."<br />\n";
}
}
if($vote && $already_voted) {
echo '<p><b>Erwischt, aber es geht kein zweitesmal! ';
echo "Ich ignoriere die Stimme.</b></p>\n";
}
else if($vote) {
if(!mysql_db_query($db,
"update $table set votes=votes+1
where name='$vote'")) {
echo mysql_errno().':'.
mysql_error()."<br />\n";
}
}
$result=mysql_db_query($db,
"select sum(votes) as sum from $table");
if($result) {
$sum = (int) mysql_result($result,0,"sum");
mysql_free_result($result);
}
$result=mysql_db_query($db,
"select * from $table order by votes DESC");
echo <<<EOD
<table border="0"><tr><th>Vote</th>
<th>Idea</th><th colspan="2">Votes</th>
</tr>
EOD;
while($row=mysql_fetch_row($result)) {
echo <<<FOO
<tr><td align="center">
<input type="radio"
name="vote" value="$row[0]"></td>
<td>$row[0]</td>
<td align="right">$row[1]</td>
<td>
FOO;
if($sum && (int)$row[1]) {
$per = (int)(100 * $row[1]/$sum);
echo '<img src="bline.gif" height=12 ';
echo "width=$per> $per %</td>";
}
echo "</tr>\n";
}
echo "</tables>\n";
mysql_free_result($result);
?>
<input type="submit"
value="Vorschlag und/oder Stimme abschicken">
<input type="reset">
</form>
</body>
</html>


Die php.ini Datei habe ich wie folgt geändert: Finder > Gehe zu > /usr/local/php/lib/php.ini > dann die php.ini editieren > dann diese Datei abspeichern in das Verzeichnis /usr/local/php/lib/ abspeichern, das macht er aber nicht, weil das alles geschützte Verzeichnisse sind, deshalb alle diese Verzeichnisse mit Apfel I und dann Eigentümer & Zugriffsrechte auf Schreiben und Lesen stellen, Schloss wegklicken und auf (ich) stellen, dann Datei reinspeichern, ersetzen und alle Eigentümer & Zugriffsrechte wieder auf System geschützt zurückstellen.

Danke für deine Hilfe,
So long ...
mactrisha.

Das einzige, was mir jetzt noch komisch vorkommt ist, dass ich meinen php-Dateien auf meinem localhost Rechte setzen muss (ausführbar, schreiben und lesen), das muss ich auf dem Providerserver nicht.
 
Zurück
Oben Unten