Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
02.06.2003, 17:35
innovator



Ich hab mal mit PHP angefangen und wollte als Einstieg ein Umfrage-Script (welches ich benötige, aber das ist ne andere Geschichte) zu basteln.

Weil ich so "from scratch" zu nix gekommen bin hab ich mal nach tutorials gesucht, ein sehr mieses gefunden aber der poll der rauskamm war genau das was ich haben wollte.

also hab ich mal den quelltext kopiert und versucht zu verwenden.
leider haperts noch ein bisschen.

Es wäre nett wenn ihr mir mit 2 Sachen helfen könntet:
1) Wieso wird immer bloss bei $bad dazugezählt und nicht bei dem was man votet?
2) Wie sollte man sich codingstilmässig anschicken das ganze umzucoden? Ich meine: Wie formatiert man in PHP richtig (gut, lesbar, etc.)

der quelltext des dings besteht aus 3 dateien und einer textdatei namens vote.txt die nur den string "0||0||0" enthält.

display.php
PHP-Quellcode:<?php
<html>
<
head>
<
title>OnlineBelohner</title>
</
head>
<
body>
<
h1>Vote</h1>
<
form action="vote.php" method="post">
 <
table>
 <
tr>
   <
td></td>
   <
tdRenameScript programmiert </td>
 </
tr>
 <
tr>
  <
td> <input type="radio" value="0"> </td>
    <
tdNix besonderes </td>
 </
tr>
 <
tr>
  <
td> <input type="radio" value="1"> </td>
    <
tdGut gemacht </td>
 </
tr>
 <
tr>
  <
td> <input type="radio" value="2"> </td>
    <
tdGrandios! </td>
 </
tr>
 <
tr>
  <
td colspan="2"> <input type="submit" value="Vote"> </td>
 </
tr>
 </
table>
<
a href="stats.php">Direkt zu den Statistiken</a>
</
form>
</
body>
</
html>
?>
vote.php
PHP-Quellcode:<?php
$vote 
$HTTP_POST_VARS['vote'];
$filename "vote.txt";
$content file($filename);
$array explode("||"$content[0]);
$bad $array[0];
$normal $array[1];
$good $array[2];
if(
$vote == 0)  $bad $bad 1;
if(
$vote == 1)  $normal $normal 1;
if(
$vote == 2)  $good $good 1;
$insertvote $bad."||".$normal."||".$good;
$fp fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
header("Location: stats.php");
?>
stats.php
PHP-Quellcode:<?php
<html>
<
head>
<
title>OnlineBelohner</title>
</
head>
<
body>
<?
php
$filename 
"vote.txt";
$content file($filename);
$array explode("||"$content[0]);
$bad $array[0];
$normal $array[1];
$good $array[2];
?>
<h1>Statistik</h1>
<p>
Nix besonderes =<?php echo $bad?><br/>
Gut gemacht =<?php echo $normal?><br/>
Grandios =<?php echo $good?><br/>
</p>
<a href="display.php">zurück zum vote</a>
</body>
</html>
?>
danke im vorraus :-)

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
001
02.06.2003, 18:02
scus



Quellcode:[...]
<tr>
<td> <input type="radio" value="0" checked name="vote"> </td>
<td> Nix besonderes </td>
</tr>
<tr>
<td> <input type="radio" value="1" checked name="vote"> </td>
<td> Gut gemacht </td>
</tr>
<tr>
<td> <input type="radio" value="2" checked name="vote"> </td>
<td> Grandios! </td>
</tr>
[...]

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand


Dieser Beitrag wurde am 02.06.2003 um 18:07 von scus bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
02.06.2003, 18:17
innovator



danke :)

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
02.06.2003, 19:21
CN



das is übrigens teilweise veraltet

nimm statt $HTTP_POST_VARS[] , $_POST[]

und bei zb solchen zuweisungen:
$bad = $array[0];
$normal = $array[1];
$good = $array[2];

würd ich das als referenz machen:
$bad = &$array[0];

dann würd nicht extra ne kopie der variable erstellt

sonst ist der stil passabel

--

zum Seitenanfang zum Seitenende Profil || Suche
004
02.06.2003, 23:19
innovator



ich hab das ganze jetzt mal wesentlich weitergecodet,
das system als solches funktioniert schon ganz gut,
ich programmier grade das "admincenter" fertig.
dabei habe ich nun noch ein kleines problem,
dies ist allerdings (soweit ich glaube) mehr HTML-natur.

ich hab ein <select>
Quellcode:<select name="votename" size="3">
<option>bla</option>
<option>bla</option>
<option>bla</option>
</select>
und möchte dies gern in mehreren forms verwenden.
also ein button, der die ausgewählte option an xyz.php schickt,
ein anderer button der die option an abc.php schickt.

ist das technisch mit HTML (oder PHP) möglich?
wie? :-)

Die beta-version 0.0.9 (noch ohne kommentarsystem)
liegt auf gekonnt.dyndns.org:8080/php/OnlineBelohner/
ich garantiere aber nicht, dass mein rechner tag und nach an ist damit ihr euch das angucken könnt. wer sich also länger dran ergötzen will muss es kopieren... aber das will denke ich mal eh keiner ;)

naja danke für die hilfe soweit. löst mal das problem in diesem post..

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett


Dieser Beitrag wurde am 03.06.2003 um 00:02 von innovator bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
03.06.2003, 00:07
CN



"ist das technisch mit HTML (oder PHP) möglich?"
denke nicht dass das möglich is
und wenn .. dann is das invalid html

--

zum Seitenanfang zum Seitenende Profil || Suche
006
03.06.2003, 00:16
dp
Administrator


Zitat:
CN postete
das is übrigens teilweise veraltet

nimm statt $HTTP_POST_VARS[] , $_POST[]

und bei zb solchen zuweisungen:
$bad = $array[0];
$normal = $array[1];
$good = $array[2];

würd ich das als referenz machen:
$bad = &$array[0];

dann würd nicht extra ne kopie der variable erstellt

sonst ist der stil passabel

was is an der kopie so schlimm? oft verbrauchen referenzen mehr cpu time als ne kopie..

in dem fall da oben is
list($bad, $normal, $good) = explode(...
eher angebrachter..

--


Dieser Beitrag wurde am 03.06.2003 um 00:16 von Darth Paul bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
03.06.2003, 08:38
innovator



http://gekonnt.dyndns.org:8080/php/OnlineBelohner/

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
008
03.06.2003, 11:34
CN



die kopie an sich is sowieso nich so sinnvoll (in meinen augen)
was machts aus $array[] zu verwenden (ok der name is nich passend gewählt.. da kann man der lesbarkeit halber auch was "eindeutigeres" nehmen)

--

zum Seitenanfang zum Seitenende Profil || Suche
009
04.06.2003, 13:30
Chronial



Ja, aber was soll an der kopie so schlimm sein?
Php macht das nichts aus. Meines Wissens wird sowieso keine Kopie erstellt, sondern eigentlich fast das gleiche gemacht, wie bei einer Referenz. So steht es zumindest in der Docu.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
010
04.06.2003, 14:42
CN



"ich brauch hier zwar nur werte von 0 - 255 aber ich nehm einfach mal nen long"

--

zum Seitenanfang zum Seitenende Profil || Suche
011
04.06.2003, 20:55
innovator



"ich brauch hier zwar nur werte von 0 - 255 aber ich nehm einfach mal nen long"
sorry CN ich weiss nicht was du meinst ... erklärst du's mir? *arschkriecherblick* *g*

"in dem fall da oben is
list($bad, $normal, $good) = explode(...
eher angebrachter.."
so mach ich das nun auch.

ausserdem hab ich ein unverständliches problem ...
fputs() und fclose() lehnen manche meiner argumente ab.
eigentlich alle variablen, sie nehmen nur argumente die ich mit "xyz" direkt angeben. sonst heisst es "$xyz is not a valid stream resource" (oder so)
google-suche ergab bloss dass 1001 andere leute dasselbe problem haben.

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett


Dieser Beitrag wurde am 04.06.2003 um 20:57 von innovator bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
04.06.2003, 21:06
CN



innovator das war an fraghunter chronial gerichtet
damit wollt ich sagen dass man nich immer ressourcen verschwenden brauch weil man denkt "das macht nix aus" oder "da geht noch was"

zum andern prob
fputs erstes argument is ne ressource (bzw file-handle)

Quellcode:$fp = fopen($filename,"w");
fputs($fp,$insertvote);
$fp wär hier das filehandle

du hast vielleicht die parameter vertauscht oÄ
prüf das mal

kannst dazu mal das checken:
http://www.php.net/fopen
http://www.php.net/fputs
http://www.php.net/fclose

--

zum Seitenanfang zum Seitenende Profil || Suche
013
04.06.2003, 21:30
innovator



PHP-Quellcode:<?php
function writedown($filename,$insertvote)
  {
    
$fp fopen($filename,"w");
    
fputs($fp,$insertvote);
    
fclose($fp);
  }
?>
wenn ich jetzt writedown($commentfile,"blubberdiblubb") aufrufe gehts nicht.
$commentfile wird in einer global.inc angegeben, die in allen .php's includet ist.

wenn ich aber das ganze so schreibe, gehts:
PHP-Quellcode:<?php
$commentfile 
"comments.txt"
writedown($commentfile,"blubberdiblubb")
?>

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
014
04.06.2003, 21:57
CN



das is eh ungünstig
wenn du jetz 10 mal was rienschreiben willst dann macht der die datei auf, schreib und macht sie wieder zu
besser wär sie ienmal am anfang aufzumachen .. zu schreiben.. zu schreiben.. zu schreiben .... und sie dann zu schliessen

Zitat:
Quellcode:writedown($commentfile,"blubberdiblubb")...
wenn ich aber das ganze so schreibe, gehts:

Quellcode:$commentfile = "comments.txt"
writedown($commentfile,"blubberdiblubb")

dir sollte klar sein dass du ne variable vor benutzung deklarieren musst
im ersten falll gibts den fehler weil $commentfile anscheinend leer ist
im 2ten gehts weil du der variable nen wert zugewiesen hast

--

zum Seitenanfang zum Seitenende Profil || Suche
015
04.06.2003, 22:01
innovator



aaahrg sorry stupid *kopfhau*

hab aus versehen die variable bei der deklaration nicht $filename sondern $votename genannt...

*gnarf*

schlagt mich

--

Den IQ einer Gruppe von Menschen berechnet man, indem man den IQ des Dümmsten unter ihnen durch die Anzahl der Gruppenmitglieder teilt. ~ Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
016
05.06.2003, 01:54
Chronial



CN - Man bruacht aber auch nicht immer einen unschöneren Code produzieren, weil man glaubt "Da kann ich das Script um 0.0001% schneller machen, wenn ich das immer so mache".

Es giebt auch Leute, die behaupten, dass es schneller läuft, wenn man vor jede Variable eine Typendefinition schreibt, ich werde das jedoch trotzdem nicht machen, da es schlicht und ergreifend bei einem php-Script nichtig ist (Wir sprechen hier nicht von einer C++ engine, mit einem Codestück, dass mehrere hundert male pro sekunde aufgerufen wird...).

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren


Dieser Beitrag wurde am 05.06.2003 um 01:55 von Chronial bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
017
05.06.2003, 14:40
CN



das is auch quatsch mit der typendefinition

das andre hingegen nicht :P

"Da kann ich das Script um 0.0001% schneller machen, wenn ich das immer so mache"
jo und dann kannst du sicher gehen dass das auch auf älteren rechnern schnell genug läuft

--

zum Seitenanfang zum Seitenende Profil || Suche
018
05.06.2003, 15:43
Chronial



Witzbold - wer hostet denn mit einem älteren Rechner? Und wenn er mit nem älteren Rechner hostet, hat er eben nicht so viele Besucher.

Es ist einfach irrelevant, dieses bischen zu optimieren. Das bringts nur, wenn die Variable viele Daten enthält.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
019
05.06.2003, 16:13
CN



erm ja.. du hast auch noch nie was von zb commandline-tools in php gehört

komm mir ja nich mit "wer macht den so nen scheiss"
er steht vor dir (im übertragenen sinne)

--

zum Seitenanfang zum Seitenende Profil || Suche
020
05.06.2003, 16:15
Megge



ich finds ja gut, wenn ihr hier fachsimpelt, da lernt man viel von, aber könntet ihr das vielleicht ein einem weniger aggresiven ton machen, damit das hier nicht im streit ausartet ? danke ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
021
05.06.2003, 16:29
Chronial



wir würden uns nie Streiten! Arschloch! :D

CN, bei Commandlinetools mag das ja gerechtfertigt sein, aber es geht hier doch eindeutig um eine Website, und keine stark frequentierte, wie etwa ein Forum, sondern einfahc nur ein vote.

Ich benutz php auch zu solchen Zwecken - zwar keine Commandline tools, aber einfach Seiten, die ich dann mit meinem DL-Manager regelmäsig runterlade.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren


Dieser Beitrag wurde am 05.06.2003 um 16:31 von Chronial bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche