SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 28.04.2006, 21:31:30
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 36
Beiträge: 96
Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Wie legt man eine Variable so an, dass der Wert einmal festgelegt wird und von anderen Variablen geändert werden kann?

Ich meine es so:
Es gibt zwei Variablen; $a=50 ; $b=30 .
Nun würde ich es gerne eine function erstellen, welche $b von $a abzieht. Dies ist ja nicht so schwer, allerdings gibt es noch $b1 und $b2.
Die function sollte so geschrieben sein, dass sie, wenn man über eine check-box z.B. $b2 auswählt, der Wert von $a durch den von $b2 vermindert wird.

Ich habe an so einer gedacht:

function division()
{
$a=$a-$divisor;
}

die würde natürlich nur dann funktionieren, wenn es die Variable $divisor gibt.
Nun suche ich nach einer Möglichkeit, die ausgewählte $b - Variable nur dann in $divisor umzubenennen, wenn sie über die Check-box ausgewählt wurde.
Dh. ich wähle $b1, eine Variable benennt sie in $divisor um, die Funktion division() subtrahiert $b1 von $a und legt sie wieder auf $a ab.

Geändert von Ichthys (29.04.2006 um 19:52:48 Uhr)
Mit Zitat antworten
  #2  
Alt 30.04.2006, 14:37:51
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 40
Beiträge: 579
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Dir ist klar, dass du dann für jede einzelne Rechenoperation die Seite neu laden musst? Verwend für so was lieber JavaScript...
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #3  
Alt 30.04.2006, 19:20:01
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 36
Beiträge: 96
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Ja,
aber derzeitig habe ich in Inof halt PHP.
Da bleibt mir ja nichts anderes übrig...
Mit Zitat antworten
  #4  
Alt 01.05.2006, 17:52:55
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

was du da machen willst ist subtraktion, nicht division.
Mit Zitat antworten
  #5  
Alt 01.05.2006, 19:39:40
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 40
Beiträge: 579
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Wenn du aus irgend ner Liste auswählst und das Formular dann abschickst, dann wird dir doch eh nur der eine ausgewählte Wert übergeben. Wo genau liegt dann dein Problem?
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #6  
Alt 02.05.2006, 21:10:13
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 36
Beiträge: 96
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Bei mir haperts ja schon am einfachsten. Mein Infolehrer hat uns den Auftrag gegeben, ein Rollenspiel über PHP zu realisieren.
Nun bin ich dabei, über Radiobuttens die Auswahl zu machen, aber ich habe keine Ahnung, wie man dabei php-Sachen einbauen kann.

ich hab es so probiert
PHP-Code:
<form action="input_radio.htm">
  <p>Angriff:</p>
  <p>
    <input type="radio" name="angriff_1" value="<?php angriff1 ?>"> Angriff 1<br>
Dabei ist "angriff1" bei value eine function. Falls so etwas nicht gehen sollte, würde ich es auch über Variabeln machen, allerdings funktioniert dies auch nicht so wirklich.

Was mache ich falsch?

@feuervogel:
Du hast recht, Mensch, ich darf gar nicht sagen, dass ich LK Mathe habe...
Mit Zitat antworten
  #7  
Alt 02.05.2006, 21:52:49
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 40
Beiträge: 579
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Ich muss sagen, ich begrüße es, dass bei euch PHP unterrichtet wird. Ist auf jeden Fall sinnvoller als das unsägliche Pascal, das man sonst überall im Informatikunterricht antrifft... Nicht begrüßen kann ich allerdings, wie das anscheinend unterrichtet wird. Denn wenn man vernünftig an die Sache rangeht, würde man das einmal so aufbauen, dass solche Fragen wie deine gar nicht aufkommen können, und daneben nicht als erstes Projekt eine Art Browsergame wählen...

Wenn dich PHP wirklich interessiert (oder du ne gute Note haben willst ;)) empfehle ich dir, das Ganze selbst in die Hand zu nehmen. Nimm dir die Zeit, und arbeite dieses Tutorial durch, da lernst du dann ne ganze Menge. Und, was wichtig ist: Du lernst vor allem, wies richtig geht.


Aber um dir dann noch mal bei deinem Problem zu helfen: So, wie du das aufgeschrieben hast, funktioniert das nicht. Prinzipiell könnte man den value-Teil zwar durch nen Funktionsaufruf füllen, dieser müsste dann aber zumindest von runden Klammern abgeschlossen werden. Was jedoch nicht geht (und ich vermute, dass du dir das so vorgestellt hättest) ist, dass dann beim Abschicken automatisch die Funktion aufgerufen wird, die bei value drinsteht. Theoretisch möglich ist so was natürlich schon, aber nicht so. Ich zeig dir mal, wie es ginge:

PHP-Code:
<form action="input_radio.php" method="get">
  <
p>Angriff:</p>
  <
p>
    <
input type="radio" name="angriff" value="1"Angriff 1<br>
    <
input type="radio" name="angriff" value="2"Angriff 2<br
    <
input type="radio" name="angriff" value="3"Angriff 3<br>
... 
Du siehst hier drei Dinge:
1. Alle Radiobuttons haben nun den gleichen Namen. Das ist ganz normal so, denn durch den Namen wird ausgedrückt, dass die in der gleichen Gruppe stehen. Dadurch kann dann immer nur ein Angriff ausgewählt werden.
2. Es wurde kein PHP-Code eingefügt. Das ist einfach noch nicht notwendig. Der ganze PHP-Kram steht erst in der Datei input_radio.php, die ich mal entsprechend umbenannt hab, das man auch erkennt, dass es ne php-Datei sein soll.
3. Ich hab beim Formular noch angefügt, auf welche Art die Daten übermittelt werden sollen. GET bedeutet hierbei, dass sie an die URL angehängt werden. (Einfach mit ?variablenname=wert, hast du sicher schon mal gesehen)

Interessant wird dann die input_radio.php:

PHP-Code:
<?php
function angriff1() {...} 
function 
angriff2() {...} 
function 
angriff3() {...} 
// weitere mögliche Angriffe

// Hier wird jetzt die entsprechende Angriffsfunktion aufgerufen
angriff{$_GET['angriff']}();
?>
Interessant ist hierbei die letzte Zeile. $_GET ist ein assoziatives Array, das alle Inhalte enthält, die per GET an die Seite übertragen worden sind. Als Schlüssel (Der Teil in den eckigen Klammern) dient dabei bei Formularen praktischerweise der Name des Formularelements. (Im Klartext: Beim Abschicken des Formulars wird automatisch als Wert für 'angriff' der übertragen, der im value-Attribut des ausgewählten Radiobuttons besteht.)
Der dadurch ermittelte Wert wird dann an 'angriff' angehängt und eine Funktion mit passendem Namen gesucht. (Dass man so was schreiben kann ist übrigens überhaupt nicht selbstverständlich - in den meisten Programmiersprachen wär so was absolut undenkbar!)

Was fällt jedoch daran auf? Erst mal brauchst du für jeden Angriff ne eigene Funktion, auch wenn die meisten Abläufe vielleicht gleich sind. Dann ist das Ganze relativ unübersichtlich und auf den ersten Blick auch nicht verständlich. Darum würd ich das eher mit einer Funktion lösen, die als Parameter die Nummer des Angriffs übermittelt kriegt und danach entscheidet, was sie tut. Sähe dann in etwa so aus:

PHP-Code:
<?php
function angriff($angriffsnummer) {
  
// Sachen, die für alle Angriffe gleich sind
  
...
  
// Angriffsspezifisches Zeug
  
switch($angriffsnummer) {
    case 
1:
      
// Was machen wir bei Angriff 1?
      
break;
    case 
2:
      
// Was machen wir bei Angriff 2?
      
break;
    case 
3:
      
// Was machen wir bei Angriff 3?
      
break;
  }
}

// Angriffsfunktion aufrufen
if(isset($_GET['angriff'])) angriff($_GET['angriff']);
Dieses seltsame switch-Konstrukt macht folgendes: Es wird geschaut, welchen Wert die Variable hat. Je nach Wert wird dann alles nach dem entsprechenden case-Fall abgearbeitet. Mit alles meine ich dabei auch wirklich alles, wäre die Variable beispielsweise 1, würden erst mal auch alle Anweisungen nach case 2 und case 3 ausgeführt. Da dies hier nicht gewollt ist, sorgt der Befehl break dafür, dass die Abarbeitung gestoppt wird.
Die letzte Zeile ruft die Funktion mit dem entsprechenden Parameter auf. Die if-Abfrage dient dazu, dass die Funktion nur aufgerufen wird, wenn wirklich ein Angriff stattfinden soll. Könnte ja sein, dass gar nicht ausgewählt worden ist.


Ich hoff einfach mal, ich konnt dir mit diesem doch etwas länglicheren Text n bisschen weiterhelfen...
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.

Geändert von Serp (02.05.2006 um 21:53:54 Uhr)
Mit Zitat antworten
  #8  
Alt 03.05.2006, 21:34:56
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 36
Beiträge: 96
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Vielen Dank erst mal. Nun erst mal zu deiner Kritik:
es ist zwar nicht das erste, was wir in PHP machen, aber der Unterrichtsstil, na ja, zum einen kommen wir nicht wirklich voran, zum anderen habe ich manchmal das Gefühl, das wir es uns selber breibringen sollen.

Leider habe ich heute nicht mehr die Zeit, es mir richtig anzugucken, aber mein erster Eindruck beim Überfliegen: Sehr gut.

Ich hoffe, dass ich es mir morgen genauer anschauen kann.

Wegen isset: wie ist dieser Text hier zu verstehen? Ich habe mal nachgeguckt, wofür Isset da ist, aber diese Erklärung hilft mir leider nicht sonderlich...
Zitat:
Diese Funktion liefert TRUE, wenn die Variable oder das Array-Element var existiert, sonst FALSE.
Mit Zitat antworten
  #9  
Alt 04.05.2006, 00:18:55
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 40
Beiträge: 579
AW: Wert einer Variable ändern und die Änderung auf die Variable ablegen.

Hm... Was soll ich dazu erklären, was nicht in dem Text steht? Einfach mal ein Beispiel...

PHP-Code:
$variable 'irgendwas';
isset(
$variable); // true, da die Variable existiert.
$varibale '';
isset(
$variable); // true, die Variable existiert, ob sie einen leeren String enthält oder was sinnvolles ist egal
isset($variable2); // false, da so ne Variable niemals deklariert wurde
$array['key'] = 12345;
isset(
$array); // true, da die Variable existiert
isset($array['key']); // true, da der Schlüssel im Array existiert
isset($array['nochNKey']); // offensichtlich false 
Halbwegs verständlich, was die Funktion macht?

In diesem Beispiel funktioniert das jetzt wie folgt: Wenn einer der Radiobuttons ausgewählt worden ist, wird in der URL etwas in der Art 'angriff=#' übergeben. In diesem Fall existiert also der Schlüssel 'angriff' im $_GET - Array, die Funktion liefert true. Ist kein Radiobutton ausgewählt, wird nichts übergeben, der Schlüssel existiert nicht, die Funktion liefert also false. Damit wird dann auch keine angriffsfunktion aufgerufen.

Dies funktioniert übrigens nicht bei so Sachen wie Textfeldern. Wenn da keine Angabe gemacht wird, wird die Variable zwar übergeben, enthält aber nur nen leeren String. In diesem Fall müsstest du statt isset() !empty() verwenden, das überprüft, ob die Variable einen Inhalt halt. (empty() prüft, ob die Variable leer ist, und das ! dreht den Wert des Ergebnisses um)
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bestimmtes Feld in MySQL auslesen und Wert in PHP Variable schreiben pregopresto MySQLi/PDO/(MySQL) 0 28.11.2005 19:43:00
Nach mysql_fetch_object Wert in Variable speichern sputnik72 PHP Grundlagen 2 09.10.2005 14:33:42
Array wert nach einer Variable finden RDJ PHP für Fortgeschrittene und Experten 4 30.08.2005 15:01:43
Wert aus einer Variable ausschneiden user8 PHP für Fortgeschrittene und Experten 2 14.07.2005 12:19:11
Wie kann man eine Seite bei Variable ohne Wert nicht öffnen lassen? Michael PHP für Fortgeschrittene und Experten 1 12.10.2002 11:07:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:53:47 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt