php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.05.2005, 14:10  
Gast
 
Beiträge: n/a
Standard Daten mit Masql ausgeben ohne while

Hi leute

Ich habe mir ein Script gebastelt welches mir daten aus einer Mysql DB ausgeben soll, ohne dass eine while verwendet wird:

PHP-Code:
<?php
$query 
"SELECT * FROM `mypet_katzen` WHERE `id`='$pet_id'";
$ergebnis mysql_query($query);
$row mysql_fetch_row($ergebnis);
?>
Dies klappt auch, ABER: Anschlissend kommt eine if Abfrage, und siehe da: Nun ist die Variable row leer! Woran kann das sliegen? Die row wird mehrmals in der if verwendet, aber was ist daran falsch? Muss ich die Daten aus der DB anders formatieren?

Eine ratlose Garnele

P.s. mit mysql_fetch_object hatte ich genauso wenig Erfolg
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.05.2005, 14:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

1) $row ist ein array, auf was greifst du zu?
2) mehr code ?
robo47 ist offline  
Alt 21.05.2005, 14:16  
Gast
 
Beiträge: n/a
Standard

Hi

Ich greife mit $row[2] oder einer anderen zahl darauf zu.

Die ganze Datei (Achtung: Ich habs noch nicht mit function deshalb etwas zezaust):

PHP-Code:
<?php
include ("db.php");
$pet_id $_SESSION['pet_id'];
$timestamp time();
$query "SELECT * FROM `mypet_katzen` WHERE `id`='$pet_id'";
$ergebnis mysql_query($query);
$row mysql_fetch_row($ergebnis);
$Zeit $row[9];
$uhrzeit2 date("H:i",$Zeit);
$wohl $row[5];


if (
$row[9] ==00000000000000 or $row[9] < $timestamp)
{
if (
$action=="hunger")
{
   if (
$row[4]==10 or $row[4] > 10)
  {
    echo
"Du kannst deine Katze nicht weiter f&uuml;ttern!";
  }
  else
  {
     
$time 60 10;
     
$ttime $timestamp $time;
     
$hunger $row[4] +1;
     
$eintrag "UPDATE `mypet_katzen` SET `hunger` = '$hunger', `time`= '$ttime' WHERE `id` = '$pet_id'";
     
$eintragen mysql_query($eintrag);
     echo 
"Du f&uuml;tterst deine Katze.....";
   }
 exit;
}


else if (
$action=="wohlfühl")
{
  if (
$row[6] ==10 or $row[6] > 10)
  {
    echo
"Du kannst mit deiner Katze nicht weiter spielen!";
  }
  else
  {
    
$time 60 12;
    
$ttime $timestamp $time;
    
$wohlfühl $row[6] +1;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$wohlfühl', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du spielst mit deiner Katze.....";
   }
 exit;
}


else if (
$action=="heilen")
{
  if (
$row[5] ==or $row[5] > 1)
  {
    echo
"Du kannst deine Katze nicht weiter heielen!";
  }
  else
  {
    
$time 60 30;
    
$ttime $timestamp $time;
    
$krankheiten 0;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$krankheiten', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du heilst deine Katze.....";
   }
 exit;
}


else if (
$action=="pfund")
{
  if (
$row[8]==or $row[8] > 1)
  {
    echo
"Du kannst deiner Katze nicht weiter h&auml;ufchen entfernen!";
  }
  else
  {
    
$time 60 15;
    
$ttime $timestamp $time;
    
$pfund 0;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$pfund', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du putzst das H&auml;ufchen weg.....";
   }
 exit;
}

$wohl $row[5];

  if (
$row[4]>and $row[4]<10)
  {
    
$hunger "<a href=index.php?mode=looktopet&action=hunger>F&uuml;ttern</a>";
  }
  else if (
$wohl>and $wohl<10)
  {
    
$wohlfühl "<a href=index.php?mode=looktopet&action=wohlfühl>Mit der Katze spielen</a>";
  }
  else if (
$row[5]==1)
  {
    
$krankheiten "<a href=index.php?mode=looktopet&action=heilen>Heilen</a>";
  }
  else if (
$row[8]==1)
  {
    
$pfunden "<a href=index.php?mode=looktopet&action=pfund>H&auml;ufchen wegputzen</a>";
  }
    echo 
"Hier kannst du nach deiner Katze sehen. Nat&uuml;rlich braucht jede Handlung eine gewisse Zeit:

F&uuml;ttern: 10min
Mit der Katze spielen: 12min
Die Katze Heilen: 30min
H&auml;ufchen wegputzen: 15min

Das kannst du momentan f&uuml;r deine Katze tun: $hunger  $wohlfühl  $krankheiten  $pfunden"
;
}
else if (
$row[9] != $timestamp or $row[9] > $timestamp)
{
  echo 
"Du kannst dich noch nicht um dein Tier k&uuml;mmern, dies geht erst wieder um $uhrzeit2.";
  exit;
}
mysql_error();
mysql_close($verbindung);
?>
Danke, garnele
 
Alt 21.05.2005, 14:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

ab wo ist es denn nicht mehr nutzbar?

desweitere:

error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird)
PHP-Code:
error_reporting(E_ALL); 
damit werden dann alle Fehler ausgegeben.
Mögliche Fehler die dann auftreten und wie man sie beheben kann:
Notice: Use of undefined constant ...
Notice: Undefined variable ...

mysql error
man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
PHP-Code:
$sql "SELECT feld1,feld2 FROM table WHERE id=5";
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql); 
select * from
Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q/q-sql-select.html


und eventuel:

register_globals
http://www.phpfriend.de/ftopic26569.html
-> lesen, verstehen, umsetzen !!

woher kommt $action

mfg
robo47
robo47 ist offline  
Alt 21.05.2005, 14:40  
Erfahrener Benutzer
 
Registriert seit: 14.04.2005
Beiträge: 1.004
search
Standard

error_reporting(E_ALL); <- oben ins script dann kriegst du Fehlermeldungen in Echtzeit :wink:

PHP-Code:
<?php
$ergebnis 
mysql_query($query) or die ("Achtung Fehler irgendwas!
"
.mysql_error().""); 
?>
du benutzt keine mysql_error() ausgabe!!! zieht sich übers komplette script hin

PHP-Code:
<?php
echo '<pre>';
print_r($row);
echo 
'</pre>';
?>
rein ins script damit du siehst ob dein array überhaupt so gefüllt ist wie es soll ...

PHP-Code:
<?php
$timestamp 
time();
$time 60 12;
$ttime $timestamp $time;

// vs

$ttime = (time() + (60 12));
?>
.
.
.
... search
__________________
schlimmer gehts nimmer.... dümmer immer!
search ist offline  
Alt 21.05.2005, 14:47  
Gast
 
Beiträge: n/a
Standard

Hi

Zu error_repotrting: Is jetzt eingebaut
Zu mysql_error: Steht am Ende der Datei
Zu register_globals: Es wird kein Formular für die Daten verwendet

Zu $action: Die wird via URL übergeben Bsp.: $pfunden = "<a href=index.php?mode=looktopet&action=pfund>H&auml; ufchen wegputzen</a>";

Nun, es ist so dass egal was in der Mysql Db steht: Es wird immer nur $wohlfühl augegeben, alle anderen nicht. (Witzig: Wenn ich statt mysql_fetch_row mysql_fetch_object nehme wird nur $pfunden ausgegeben!)

Danke, Garnele

P.s. wer es sich ansehen möchte: http://www.test.garnelenforum.ch/mypet

Usename: Testuser
Pass: test

Die betroffene Datei findet sich unter Tier füttern
 
Alt 21.05.2005, 14:51  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zu $action: Die wird via URL übergeben Bsp.: $pfunden = "<a href=index.php?mode=looktopet&action=pfund>H&auml; ufchen wegputzen</a>";
und damit benutzt du register globals, sobald du daten via SESSION, GET POST oder sonstwas übergibst hat das was mit register globals zu tun

um welcehn teil des scriptes geht es? ich seh massig fehler:

Zitat:
Notice: Undefined offset: 9 in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 12

Notice: Undefined offset: 9 in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 17

Notice: Undefined variable: action in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 19

Notice: Undefined variable: action in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 38

Notice: Undefined variable: action in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 57

Notice: Undefined variable: action in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 76

Notice: Undefined variable: hunger in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112

Notice: Undefined variable: krankheiten in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112

Notice: Undefined variable: pfunden in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112
was genau ist die looktopet.php

mfg
robo47
robo47 ist offline  
Alt 21.05.2005, 14:57  
Gast
 
Beiträge: n/a
Standard

Hi

Hauptsächlich um den Teil:

Code:
Notice: Undefined variable: hunger in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112 

Notice: Undefined variable: krankheiten in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112 

Notice: Undefined variable: pfunden in /home/virtual/site195/fst/var/www/test.garnelenforum.ch/mypet/looktopet.php on line 112
dass die Variablen action leer sind ist ja auch klar, da diese ja erst noch übergeben werden müssen. Also register globals ist übrigens auf on.

Dei datei looktopet soll zusehen dass die Mysql DB geupdatzet wird wenn jemand sich um sein "Tier" kümmert. Ausserdem soll sie überpfüfen ob mann si schon wieder um das Tier kümmern kann. (Quellcode: Siehe oben)

LG
Garnele
 
Alt 21.05.2005, 15:03  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Also register globals ist übrigens auf on.
ist kein grund den von mir geposteten link zu ignorieren :P
kann mich nur wiederholen -> lesen verstehen umetzen.
die fehler zeigen dass du nicht sauber arbeitest
-> nutze $_GET und nutze dann isset vorher und vereinfache die struktur vieleicht mit einem switch.

2) ein mysql_error gehlört direkt hinter das query und sollte das script abbrechen
-> die() nix anderes

3) mach das select * raus und nimm die felder die du wirklich brauchst
4)
greif auf das zu was du willst oder brauchst nicht auf $row[9] ohne zu wissen was es ist, woher es kommt etc
-> mysql_fetch_assoc bringt die die feldnamen ins array.

mfg
robo47
robo47 ist offline  
Alt 21.05.2005, 20:56  
Gast
 
Beiträge: n/a
Standard

Hi leuts

Also ich habe alles so gemacht wie robo47 es vorgeschlagen hat, aber ich habe noch immer dasselbe problem. Nun wird nur noch das Feld hunger berücksichtig, alle anderen nicht. Hier nochmals die datei:

PHP-Code:
<?php
include ("db.php");
$pet_id $_SESSION['pet_id'];
$timestamp time();
$query "SELECT hunger, krankheiten, wohlfühl, pfund, time FROM `mypet_katzen` WHERE `id`='$pet_id'";
$ergebnis mysql_query($query) or die ("Achtung Fehler irgendwas!
"
.mysql_error().""); 
$row mysql_fetch_assoc($ergebnis);
$Zeit $row["time"];
$uhrzeit2 date("H:i",$Zeit);
$wohl $row["wohlfühl"];


if (
$row["time"] ==00000000000000 or $row["time"] < $timestamp)
{
if (
$_GET['action']=="hunger")
{
   if (
$row["hunger"]==10 or $row["hunger"] > 10)
  {
    echo
"Du kannst deine Katze nicht weiter f&uuml;ttern!";
  }
  else
  {
     
$time 60 10;
     
$ttime $timestamp $time;
     
$hunger $row["hunger"] +1;
     
$eintrag "UPDATE `mypet_katzen` SET `hunger` = '$hunger', `time`= '$ttime' WHERE `id` = '$pet_id'";
     
$eintragen mysql_query($eintrag);
     echo 
"Du f&uuml;tterst deine Katze.....";
   }
 exit;
}


else if (
$_GET['action']=="wohlfühl")
{
  if (
$row["wohlfühl"] ==10 or $row["wohlfühl"] > 10)
  {
    echo
"Du kannst mit deiner Katze nicht weiter spielen!";
  }
  else
  {
    
$time 60 12;
    
$ttime $timestamp $time;
    
$wohlfühl $row["wohlfühl"] ++;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$wohlfühl', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du spielst mit deiner Katze.....";
   }
 exit;
}


else if (
$_GET['action']=="heilen")
{
  if (
$row["krankheiten"] ==or $row["krankheiten"] > 1)
  {
    echo
"Du kannst deine Katze nicht weiter heielen!";
  }
  else
  {
    
$time 60 30;
    
$ttime $timestamp $time;
    
$krankheiten 0;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$krankheiten', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du heilst deine Katze.....";
   }
 exit;
}


else if (
$_GET['action']=="pfund")
{
  if (
$row["pfund"]==or $row["pfund"] > 1)
  {
    echo
"Du kannst deiner Katze nicht weiter h&auml;ufchen entfernen!";
  }
  else
  {
    
$time 60 15;
    
$ttime $timestamp $time;
    
$pfund 0;
    
$eintrag "UPDATE `mypet_katzen` SET `wohlfühl` = '$pfund', `time`= '$ttime' WHERE `id` = '$pet_id'";
    
$eintragen mysql_query($eintrag);
    echo 
"Du putzst das H&auml;ufchen weg.....";
   }
 exit;
}

$wohl $row["wohlfühl"];

  if (
$row["hunger"]>and $row["hunger"]<10)
  {
    
$hunger "<a href=index.php?mode=looktopet&action=hunger>F&uuml;ttern</a>";
  }
  else if (
$wohl>and $wohl<10)
  {
    
$wohlfühl "<a href=index.php?mode=looktopet&action=wohlfühl>Mit der Katze spielen</a>";
  }
  else if (
$row["krankheiten"]==1)
  {
    
$krankheiten "<a href=index.php?mode=looktopet&action=heilen>Heilen</a>";
  }
  else if (
$row["krankheiten"]==1)
  {
    
$pfunden "<a href=index.php?mode=looktopet&action=pfund>H&auml;ufchen wegputzen</a>";
  }
    echo 
"Hier kannst du nach deiner Katze sehen. Nat&uuml;rlich braucht jede Handlung eine gewisse Zeit:

F&uuml;ttern: 10min
Mit der Katze spielen: 12min
Die Katze Heilen: 30min
H&auml;ufchen wegputzen: 15min

Das kannst du momentan f&uuml;r deine Katze tun: $hunger  $wohlfühl  $krankheiten  $pfunden"
;
}
else if (
$row["time"] != $timestamp or $row["time"] > $timestamp)
{
  echo 
"Du kannst dich noch nicht um dein Tier k&uuml;mmern, dies geht erst wieder um $uhrzeit2.";
  exit;
}
mysql_close($verbindung);

?>
Meine Frage: Was mache ich falsch? Wieso berücksichtigt er immer nur das eine Feld und nicht alle?

Lg
Garnele
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgeben der DB Daten nicht an richtiger Stelle Kein Genie PHP Tipps 2008 4 11.06.2008 10:55
Daten als Rotation ausgeben superskunk PHP Tipps 2008 16 24.05.2008 21:15
Es werden zuviel Daten ausgeben Kein Genie PHP Tipps 2006 5 12.11.2006 12:37
while Schleife gibt nicht alle Daten aus PHP Tipps 2006 2 12.01.2006 19:24
Mehrere Daten ausgeben Sonja PHP Tipps 2005-2 11 10.08.2005 14:52
Mysql: Daten nach Anfangsbuchstaben Sortiert Ausgeben PHP Tipps 2005-2 5 09.07.2005 15:56
daten ausgeben + ändern möchtegernchegga PHP Tipps 2005-2 10 04.06.2005 14:48
Daten aus DB gruppiert ausgeben?! medico PHP Tipps 2005 9 07.01.2005 09:38
Mit While selektieren und Daten rausholen (HILFE)!! Spike_php Datenbanken 7 12.12.2004 20:08
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Daten in Spalten ausgeben, wo ist mein fehler?? PHP Tipps 2004 5 28.09.2004 12:37
highscore-msql daten in php ausgeben PHP Tipps 2004 4 14.09.2004 18:41
Daten ausgeben PHP Tipps 2004 3 25.08.2004 14:14
daten in umgekehrter reihenfolge ausgeben, ohne order by Datenbanken 3 31.07.2004 18:10
SQL Daten ausgeben PHP Tipps 2004 5 19.06.2004 21:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql ohne while, mysql daten ausgeben ohne while, php datenbank ausgeben ohne while, php daten ausgeben ohne while, daten ausgeben php ohne while, mysql datensätze ausgeben ohne while, datenbank mehr einträge ohne while, php datensatz ohne while, ausgeben ohne while, datenbank einträge ausgeben ohne while, row ausgeben ohne while, etwas ausgeben ohne while, query ohne whoile direkt ausgeben, mysql php db ausgeben ohne while

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.