PHP Mein PHP-Noob Frage Thread

Timdaroxxa

Lieutenant
Registriert
März 2009
Beiträge
954
Hey,
also meine erste Frage ist zu folgendem Code:

PHP:
<?php
$datei = fopen("counter.txt","r+");
$counterstand = fgets($datei, 10);
if($counterstand == "")
   {
   $counterstand = 0;
   }
$counterstand++;
echo $counterstand;
rewind($datei);
fwrite($datei, $counterstand);
fclose($datei);
?>

Rechte sind 777 für cpunter.txt und counter.php

nun erscheint folgender Text
Warning: fopen(counter.txt) [function.fopen]: failed to open stream: No such file or directory in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/counter.php on line 2

Warning: fgets(): supplied argument is not a valid stream resource in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/counter.php on line 3
1
Warning: rewind(): supplied argument is not a valid stream resource in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/counter.php on line 10

Warning: fwrite(): supplied argument is not a valid stream resource in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/counter.php on line 11

Warning: fclose(): supplied argument is not a valid stream resource in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/counter.php on line 12


Wieso?

Gruß Tim
 
Zuletzt bearbeitet von einem Moderator: (Kleiner Tipp: Für PHP gibts ein eigenes Tag samt Syntax highlighting. ;))
liegt daran, dass er in /mnt/web7/30/21/52249221/htdocs/Html/Combatarms/ keine counter.txt findet

Edit: Die resltichen Fehlermeldungen entstehen dann, weil null als Argument übergeben wird.

Edit2: Ich sehe auch gerade, dass du selbst schreibst:
"Rechte sind 777 für cpunter.txt"
 
mhhm, aber counter.txt ist vorhanden !

das war nur ein schreibfehler^^
 
Fehlermeldung sagt eindeutig das es die Datei nicht gibt.

Überprüfe doch mal den Pfad.
Liegen die beiden Dateien im gleichen Ordner, oder in einem unterordner?

Versuche doch mal die Datei im Browser aufzurufen.
 
ok
irgendwas stimmt dann nicht mit der einbindung?
den wenn ich das Php Dokument aufrufe, dann funktioniert alles...

index.php
in diese Datei ist inhalt.php eingebunden
und in diese counter.php
die letzten 2 liegen im selben unterordner!

Muss counter.txt evtl. in den selben ordner wie index?


EDIT:

Lösung gefunden: Ja die txt muss in den selben Ordner!
Ergänzung ()

Neues Problem

Ich habe 2 Divs

#1 mit 4 Grafiken für eine navbar
#2 mit einem zur Navbar passenden hintergrund, und dem Counter als Inhalt!

Irgendwie kann ich #2 nie neben #1 setzen

Lösung?
 
Poste mal den Quellcode.

Aber generell gilt es für divs die neben einander sollen:

HTML:
#div_links {
margin:0px 0px; 
border:0px solid #000000; // ohne Rand = 0px mit Rand = 1-xpx solid legt die Farbe fest.
background-color:#FFFFFF; // Hintergrundfarbe = #FFFFFF = weiß
width:300px; // Breite des divs, in px
float:left; // Dies ist die Ausrichtung in diesem Fall "left" = links
padding:0px; // mit padding kannst du den seitlichen Abstand bestimmen. ( 0=rand und so weiter)
10px 10px; würde auf der linken bzw rechten Seite 10px Abstand zum Rand enstehen
}

und das ganze kannst du auch für rechts nehmen, einfach float:left->float:right; 

Dann legst du noch einen Hauptdiv drum und gut.

#main {
border:0px solid #000000;
width:1024px;
float:none;
padding:0px;
margin-top: auto;
margin-right: auto;
margin-bottom: auto;
margin-left: auto; 
 
}

//Aufbau:

<div id="main">
        <div id="div_links">Inhalt von div links</div>
                   <div id="div_rechts">Inhalt von div rechts</div>
                                                                  </div>
sieht dann so aus:

[  [ div links ]   {haupt}   [ div rechts ]  ]

Hier kannst du dich mal schlau lesen:
http://de.selfhtml.org/css/eigenschaften/positionierung.htm#float
 
Zuletzt bearbeitet:
ok, nun wird aber ein Abstand zwischen den Divs angezeigt. Hab schon alles auf margin/padding 0px gesetz, der Abstand bleibt!
 
ach egal hat sich erldigt:

neue Frage:

Ich habe jetzt diesen "schönen Counter"
Jetzt möchte ich die Zahlen 1 bis 9 durch Img ersetzen... bis jetzt habe ich irgemdwas mit repleace gefunden... kanns mir jemand erklären?

Gruß Tim
 
Naja, entweder du hast 10 Bilder von 0 bis 9 und machst dann halt einfach <img src="1.jpg" /> usw. (nicht schön) oder du erstellst mit GDLib ein Bild: http://macx.de/essays/gdlib/

Kannst auch vorhandene Bilder manipulieren, z.B. baust du dir mit Photoshop einen Hintergrund für deinen Counter und schreibst dort dann per PHP die Ziffern drauf
 
die erste Methode kapier ich net, wenn ich einfach img scr mache b leibt da doch immer das selbe Bild! Ich will aber, dass wenn z.B. der Coutner bei 10034 steht folgende Bilder angezeigt werden: 1.jpg 0.jpg 0.jpg 3.jpg und 4.jpg !
 
Dann zerlege den String und Arbeite das array ab:

PHP:
$string = str_split($counter, 1);

echo print_r($string);
//Ausgabe ->
array  (

    [0] => 1
    [1] => 0
    [2] => 0
    [3] => 3
    [4] => 4
)
 
Zuletzt bearbeitet: (Ausgabe hinzugefügt)
Wenn mich nicht alles täuscht kann er sogar einfach per $counter[1] usw. draufzugreifen, ohne split
 
Also pass auf:

Du hast einen String mit deinem Counter "10034"
Dann machst du das, was volcem vorgeschlagen hat:

PHP:
$string = str_split($counter, 1);

Das zerlegt deinen String in ein Array. Die Felder von 0 bis 4 sind mit 1,0,0,3 und 4 belegt.

Jetzt durchläufst du den Array mit einer For-Schleife und liest aus, was in den Feld drin steht und fügst deinen Img-Code an.

Bsp:
PHP:
for ($i = 0; $i < sizeof($string); $i++) {
echo "<img src=\"" . $string[$i] . " alt=\"Counter\" />";
}
 
Nein, die For-Schleife durchläuft den Array von 0 bis Länge-von-Array ($i = 0 und $i<sizeof($string))

Das ist ja der Sinn einer Forschleife ;)

Wenn du ohne For-Schleife arbeiten würdest, müsstest du 5-mal hintereinander
echo "<img src=\"" . $string[0] . "\ alt=\"counter\" />";
echo "<img src=\"" . $string[1] . "\ alt=\"counter\" />";
usw. schreiben.

probiers einfach mal aus, dann siehst du wie die For-Schleife funktioniert
 
Ergänzung ()

naja habs schon wieder anders gelöst... aber jetzt mal etwas was ich wirklich nicht weis:

wie lese ich eine Datei komplett aus?
also bis jetzt hab ich

$datei = fopen("datei.txt","r");
$array = fgets ($datei, 100);


das geht ja bis zur 100. Stelle, wie lasse ich alle VORHANDENEN Stellen auslesen?

Gru0 Tim
 
Zuletzt bearbeitet:
Zurück
Oben