gs-500.de

gs-500.de (https://forum.gs-500.de/index.php)
-   Computer, Handy, Technik, ... (https://forum.gs-500.de/forumdisplay.php?f=23)
-   -   php classes problem :( (https://forum.gs-500.de/showthread.php?t=23664)

red_bull 09.05.2010 12:30:13

php classes problem :(
 
Hi.

Ich habe da ein Problem mit den PHP classes. Ich habe noch nie vorher mit den Classes gearbeitet. Immer nur so einfach den Code von Php in z.B. PsPad eingegeben und via Localhost ausgegeben. Mein vorhaben ist ein ganz simples. Ich habe in einer Index.php Seite zwei eingabe Felder und einen Submit. In die Felder sollen jeweils eine Zahl eingegeben werden die dann miteinander addiert werden. Dies soll dann in eine Datenbank eingefügt werden. Der Code ansich ist richtig(habe ich getestet) aber sobald ich dan mit class berechnen und function hantiere packt er die sachen nicht in die Datenbank oder macht garnix. Weiß jemand warum? In meiner berechnen.php steht nun dieser code:

PHP-Code:

class berechnen
{
   public function 
rechnen($zahl,$zahl2)
    {
      
$zahl1=$_GET['zahl1'];
      
$zahl2=$_GET['zahl2'];
      
$ergebnis$zahl1 $zahl2 ;
      if (empty(
$zahl1) or empty($zahl2)) { echo " verzieh dich"; die;} 
      else
      if (!empty(
$zahl1) and !empty($zahl2))
     {
      
$db_server 'localhost';       
      
$db_user 'root';                
      
$db_passwort '';
      
$zahl1=$_GET['zahl1'];
      
$zahl2=$_GET['zahl2'];
      
$ergebnis$zahl1 $zahl2 ;
    
       
$db_link mysql_connect ($db_server$db_user$db_passwort);
     if (!
$db_link)
          {
          die (
'keine Verbindung möglich: ' mysql_error());
          }
      
$sql 'use iron';
      
$result mysql_query($sql$db_link);
       if (!
$result)
            {
           die (
'Ungültige Abfrage: ' mysql_error());
            }
     
$sql 'INSERT INTO maxx ';
     
$sql .= '(id, Zahl1, Zahl2, Ergebnis) ';
     
$sql .= "values ('Null', '$zahl1', '$zahl2', '$ergebnis')";

      
$result mysql_query($sql$db_link);
     if (!
$result)
            {
           die (
'Ungültige Abfrage: ' mysql_error());
            }
       echo 
"alles paletti das ergebnis ist $ergebnis;
    
     }
    
      
    }
    } 


acid 09.05.2010 16:15:34

1. public function rechnen($zahl1,$zahl2)
2. $sql = 'use iron';
Was soll denn das für ein SQL Statement sein? Das ist total sinnlos.

verdi 09.05.2010 17:26:31

wieso übergibst du der funktion rechnen denn 2 variablen wenn du die übergebenen werte sofort überschreibst ?

verdi 09.05.2010 17:27:30

Zitat:

Zitat von acid (Beitrag 389538)
1. public function rechnen($zahl1,$zahl2)
2. $sql = 'use iron';
Was soll denn das für ein SQL Statement sein? Das ist total sinnlos.

http://dev.mysql.com/doc/refman/5.0/en/use.html

red_bull 09.05.2010 17:27:55

1. hab ich nicht gesehen.
2. ich mach das mit xampp und das mit $sql=' use iron' ; ist der zugriff auf die datenbank mit dem namen iron. sprich diese datenbank ist in phpmyadmin von mir erstellt worden. und mit diesem statement sage ich dem skipt das es diese datenbank für die weiteren angaben benutzen soll.

red_bull 09.05.2010 17:29:32

@verdi
ich hab keine ahnung von den mit class und function kram. ich hab einfach mal rumprobiert und dann einfach die variablen da eingefügt zum probieren. bin total ungeübt in den sachen. :-(

verdi 09.05.2010 17:35:05

gib mal den ganzen code. also incl dem formular teil

acid 09.05.2010 17:36:02

Ah verstehe.

Die Übergabeparameter sind im Grunde sinnlos, da Du die Werte von zahl1 und zahl2 wie man sieht sowieso aus den $_GET Variablen ausliest. Wenn dann müsstest Du schreiben "rechne($_GET[zahl1], $_GET[zahl2])".

red_bull 09.05.2010 17:38:32

hier mal die index.php

PHP-Code:

<!-- notice the form submit action to formhandler.php -->
<
form action='berechnen.php' method='get'>
<
h1>iron</h1>


    <
b>Zahl1:</b><br/>
    <
input type='text' name='zahl1' value='' size='30'/><br/><br/>

    <
b>Zahl2:</b><br/>
    <
input type='text' name='zahl2' value='' size='30'/><br/><br/>


    <
br/><br/>
        <
input type='submit' name='submit' value='berechnen'/><br/>
</
form


red_bull 09.05.2010 17:42:22

falls einer von euch mit xampp und phpmyadmin arbeitet hier der code dafür
HTML-Code:

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 09. Mai 2010 um 18:40
-- Server Version: 5.1.41
-- PHP-Version: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Datenbank: `iron`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `maxx`
--

CREATE TABLE IF NOT EXISTS `maxx` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Zahl1` int(50) NOT NULL,
  `Zahl2` int(50) NOT NULL,
  `Ergebnis` int(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Daten für Tabelle `maxx`
--

INSERT INTO `maxx` (`id`, `Zahl1`, `Zahl2`, `Ergebnis`) VALUES
(1, 2, 2, 4),
(2, 1, 7, 8);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


verdi 09.05.2010 17:50:21

es fehlt immernoch der code aus der brechnen.php der die funktion dann aufruft ...

acid 09.05.2010 17:50:55

Wenn Du das Formular absendest, wird die berechnen.php aufgerufen. Aber da fehlt der Aufruf der Funktion rechne().

Mal ein Beispiel wie du das machen könntest OHNE Klassen.

Code:

if(!empty($_GET[a]) AND !empty($_GET[b])){
  $e = $_GET[a] + $_GET[b];
  //SQL Query mit INSERT
}
else{
  //Formular ausgeben
}


red_bull 09.05.2010 17:53:41

ja also das berechne.php was im ersten bericht steht ist eig alles was da drin steht in berechne.php. halt nur noch <?php ?>.
Zitat:

Aber da fehlt der Aufruf der Funktion rechne().
das habe ich mir schon fast gedacht das da was fehlt das er den weiß das er die funktion bearbeiten soll..hab aber keine ahnung wie das aussieht :oops::au:

acid 09.05.2010 17:56:07

Machs einfach ohne Klasse und les nochmal nach, was Klassen ausmacht, wie sie funktionieren und wie man Aufrufe formuliert:!:

red_bull 09.05.2010 17:58:48

Zitat:

Machs einfach ohne Klasse und les nochmal nach, was Klassen ausmacht, wie sie funktionieren und wie man Aufrufe formuliert
das problem ist ja das ich sowas in etwa in einer Klausur machen soll am mittwoch . ich hoffe einer kann mir eine rettende lösung aufzeigen . ansonsten heißt es viel lesen im internet ...

verdi 09.05.2010 18:11:54

berechnen.php

PHP-Code:


<?php
      
      
if (!empty($zahl1) and !empty($zahl2))
     {
      
$db_server 'localhost';       
      
$db_user 'root';                
      
$db_passwort '';
      
$zahl1=$_GET['zahl1'];
      
$zahl2=$_GET['zahl2'];
      
$ergebnis$zahl1 $zahl2 ;
    
       
$db_link mysql_connect ($db_server$db_user$db_passwort);
     if (!
$db_link)
          {
          die (
'keine Verbindung möglich: ' mysql_error());
          }
      
$sql 'use iron';
      
$result mysql_query($sql$db_link);
       if (!
$result)
            {
           die (
'Ungültige Abfrage: ' mysql_error());
            }
     
$sql 'INSERT INTO maxx ';
     
$sql .= '(id, Zahl1, Zahl2, Ergebnis) ';
     
$sql .= "values ('Null', '$zahl1', '$zahl2', '$ergebnis')";

      
$result mysql_query($sql$db_link);
     if (!
$result)
            {
           die (
'Ungültige Abfrage: ' mysql_error());
            }
       echo 
"alles paletti das ergebnis ist $ergebnis;
    
     }
     else
     {
        die(
'nix übergeben');
    
      
    }
      
?>


red_bull 09.05.2010 18:16:26

@verdi.

das ist ja der code ohne die klassen richtig?

das hatte ich ja auch schonmal ausprobiert und es hat auch gefunzt. das problem liegt halt bei den classes die ich irgendwie mit einbinden muss.

verdi 09.05.2010 18:21:43

PHP-Code:

<?php

class Rechner
{
    public function 
rechnen($zahl1,$zahl2)
    {
        
$ergebnis$zahl1 $zahl2;
        return 
$ergebnis;
    }
}



if (!empty(
$zahl1) and !empty($zahl2))
{

    
$db_server 'localhost';
    
$db_user 'root';
    
$db_passwort '';

    
$db_link mysql_connect ($db_server$db_user$db_passwort);
    if (!
$db_link)
    {
        die (
'keine Verbindung möglich: ' mysql_error());
    }

    
mysql_select_db('maxx'$db_link);

    
$zahl1=$_GET['zahl1'];
    
$zahl2=$_GET['zahl2'];
        
    
$meinrechner = new Rechner();
    
$ergebnis $meinrechner->rechnen($zahl1$zahl2);
        

    
$sql 'INSERT INTO maxx ';
    
$sql .= '(id, Zahl1, Zahl2, Ergebnis) ';
    
$sql .= "values ('Null', '$zahl1', '$zahl2', '$ergebnis')";

    
$result mysql_query($sql$db_link);
    if (!
$result)
    {
        die (
'Ungültige Abfrage: ' mysql_error());
    }

    echo 
"alles paletti das ergebnis ist $ergebnis;

}
else
{
    die(
'nix übergeben');


}







?>


verdi 09.05.2010 18:23:43

du solltest dir dringend mal nen grundlagen artikel zu OO durchlesen ... z.b. ( auf die schnelle bei google gefunden ) http://www.peterkropff.de/site/php/oop.htm

sowie nochmal die php basics http://tut.php-quake.net/de/

red_bull 09.05.2010 18:28:39

schonmal vielen dank verdi für deine mühen.

aber das funktioniert bei mir immer noch nciht :-(. der übergibt das nicht in die datenbank. hab den code kopiert , eingefügt und gespeichert.

ja ich muss mir die grundlagen nochmal ansehen. fataler fehler von mir in der schule nicht zugehört zu haben.

verdi 09.05.2010 18:33:40

was sagt er denn ?

red_bull 09.05.2010 18:36:30

sagen tut er nix. auf der index seite steht am anfang schon nix übergeben (ist klar warum) und nach absenden auch nix übergeben. scheinbar erkennt er kein problem so an sich, stellt aber auch nix in die datenbank rein

verdi 09.05.2010 18:41:11

mein fehler

die abfrage empty ging auf die falschen variablen

PHP-Code:

<?php

class Rechner
{
    public function 
rechnen($zahl1,$zahl2)
    {
        
$ergebnis$zahl1 $zahl2;
        return 
$ergebnis;
    }
}



if (!empty(
$_GET['zahl1']) && !empty($_GET['zahl2']))
{

    
$db_server 'localhost';
    
$db_user 'root';
    
$db_passwort ='';

    
$db_link mysql_connect ($db_server$db_user$db_passwort);
    if (!
$db_link)
    {
        die (
'keine Verbindung möglich: ' mysql_error());
    }

    
mysql_select_db('maxx'$db_link);

    
$zahl1=$_GET['zahl1'];
    
$zahl2=$_GET['zahl2'];
        
    
$meinrechner = new Rechner();
    
$ergebnis $meinrechner->rechnen($zahl1$zahl2);
        

    
$sql 'INSERT INTO maxx ';
    
$sql .= '(id, Zahl1, Zahl2, Ergebnis) ';
    
$sql .= "values ('Null', '$zahl1', '$zahl2', '$ergebnis')";

    
$result mysql_query($sql$db_link);
    if (!
$result)
    {
        die (
'Ungültige Abfrage: ' mysql_error());
    }

    echo 
"alles paletti das ergebnis ist $ergebnis;

}
else
{
    die(
'nix übergeben');


}







?>


red_bull 09.05.2010 18:49:06

da ist immernoch ein fehler drin. der sagte mir no database selected
vermutlich hat das mit dieser zeile zutun gehabt.


PHP-Code:

mysql_select_db('maxx'$db_link); 

hab diese dann durch die hier ersetzt und danach hat es funktioniert

PHP-Code:

 $sql 'use iron';
      
$result mysql_query($sql$db_link);
       if (!
$result)
            {
           die (
'Ungültige Abfrage: ' mysql_error());
             } 

danke nochmal verdi.du hast mit super geholfen. du bist der beste!!!:-)

verdi 09.05.2010 18:50:46

nein du musst nur das maxx durch iron ersetzen ... da muss halt dein datenbankname rein ...

hatte die db bei mir maxx genannt

red_bull 09.05.2010 18:56:21

hatte ich auch gedacht und geändert. hat nich gefunzt. jezz gerade wieder probiert und dann hat es funktioniert. hab mich wohl verschrieben.

DANKE VERDI


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01:53 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.