Keine Ausgabe

sulospace

searcher
21 April 2006
1.721
115
Also nbischen hab ich schon in PHP und MySQL programmiert,
aber trotzdem drehe ich gleich durch warum folgendes keine Ausgabe abwirft:

PHP:
<?

  

$dbhost = 'localhost';											
$dbuser = 'root';												
$dbpass = 'abcdefg';												
$dbname = 'freegames';
																					
$dbh = mysql_connect($dbhost,$dbuser,$dbpass)							
	or die (mysql_error());															
																							
mysql_select_db($dbname);	

$sql = "SELECT
          *
        FROM
          games ";

$result = mysql_query($sql);echo mysql_error();
	
while($row = mysql_fetch_row ($result)){
$row[1]=$name;

echo $name;

}
 
Weil du $row[1] $name zuweist. $name ist nicht definiert (was du bemerken würdest, wenn du dir auch Notices ausgeben lassen würdest...) also bekommt $row[1] nicht zugewiesen. Dann gibts du $name aus. $name ist aber immer noch nicht definiert => Du gibst nichts aus.
 
PHP:
while($row = mysql_fetch_row ($result))
{ 
     $name = $row[1];

     echo $name;
}

So rum wird schon eher n Schuh draus. Ich würde aber empfehlen, die Feldnamen der Tabelle zu nehmen:
PHP:
while($row = mysql_fetch_assoc($result))
{ 
     $name = $row['game_name']; // je nachdem wie Deine Datenbanktabelle aussieht

     echo $name;
}
macht das Ganze Fehlerfreier, bspw. wenn Du die DB-Tabelle umbaust, wodurch "game_name" nicht mehr in $row[1] stehen würde, und der Code bleibt lesbarer.

edit:
siehe Paddya...


Gruß
 
...meine Güte?!?Das wars?

Vielen Dank!

Vieleicht könnt ihr mir nochmal helfen:

PHP:
$result="INSERT INTO ava_games (id,name,description,url,category_id,hits,published,user_submit,width,height,image,import,filetype,instructions,mochi,rating,featured) 
VALUES ('','$name','$description','$nurl','$ncat','$hits','1','0','$width','$height','$nimage','0','1','$instructions','0','','')";
$result2=mysql_query($result);
Warum klappt das nicht?
 
Zuletzt bearbeitet von einem Moderator:
hm...

das Feld description enthält "shoot 'em up".
Das hängt mit dem " ' " zusammen.
Wie löse ich das?
 
Zuletzt bearbeitet:
Hier mal der ganze Code,
kann mir einer Sagen warum das Script nach dem ersten Eintrag stoppt?

PHP:
<?

  

$dbhost = 'localhost';											
$dbuser = 'root';												
$dbpass = 'abcdefg';												
$dbname = 'freegames';
																					
$dbh = mysql_connect($dbhost,$dbuser,$dbpass)							
	or die (mysql_error());															
																							
mysql_select_db($dbname);	

$sql = "SELECT
          *
        FROM
          games";

$result = mysql_query($sql);echo mysql_error();
	
while($row = mysql_fetch_row ($result)){
$name=$row[1];
$description=$row[2];
$url=$row[4];
$width=$row[5];
$height=$row[6];
$image=$row[12];
$hits=$row[8];
$category_id=$row[7];
$location=$row[15];
$instructions=$row[22];
if ($category_id=='1'){ $ncat='103';}
if ($category_id=='2'){ $ncat='101';}
if ($category_id=='4'){ $ncat='100';}
if ($category_id=='7'){ $ncat='104';}
if ($category_id=='28'){ $ncat='111';}
if ($category_id==30){ $ncat=117;}
if ($category_id==29){ $ncat=111;}
if ($category_id==32){ $ncat=119;}
if ($category_id==31){ $ncat=104;}
if ($category_id==1){ $ncat=103;}
if ($category_id==33){ $ncat=1;}
if ($category_id==34){ $ncat=107;}
if ($category_id==35){ $ncat=113;}
if ($category_id==36){ $ncat=105;}
if ($category_id==37){ $ncat=118;}
if ($category_id==39){ $ncat=106;}
if ($category_id==40){ $ncat=112;}
if ($category_id==41){ $ncat=113;}
if ($category_id==42){ $ncat=115;}
if ($category_id==43){ $ncat=120;}
if ($category_id==44){ $ncat=114;}
if ($category_id==45){ $ncat=114;}
if ($category_id==56){ $ncat=121;}
if ($category_id==57){ $ncat=116;}
if ($category_id==58){ $ncat=122;}
if ($category_id==59){ $ncat=123;}
if ($category_id==60){ $ncat=124;}
if ($category_id==61){ $ncat=125;}
if ($category_id==62){ $ncat=126;}
if ($category_id==63){ $ncat=104;}
if ($category_id==135){ $ncat=104;}
if ($category_id==134){ $ncat=104;}
if ($category_id==133){ $ncat=104;}
if ($category_id==138){ $ncat=110;}
if ($category_id==137){ $ncat=110;}
if ($category_id==135){ $ncat=104;}
if ($category_id==169){ $ncat=119;}
if ($category_id==269){ $ncat=119;}
if ($category_id==369){ $ncat=119;}
if ($category_id==469){ $ncat=119;}
if ($category_id==569){ $ncat=119;}
if ($category_id==669){ $ncat=119;}
if ($category_id==769){ $ncat=119;}
if ($category_id==869){ $ncat=119;}

if ($location==0){
$nurl="https://www.zockomania.de/arcade/games/files/".$url;
$nimage="https://www.zockomania.de/arcade/games/images/".$image;
}
if ($location==1){
$nurl=$url;
$nimage=$image;
}
echo $name;
echo $nurl;
echo $nimage;
echo $ncat;
echo $width;
echo $height;	
echo $row[1];
$result="INSERT INTO ava_games (id,name,description,url,category_id,hits,published,user_submit,width,height,image,import,filetype,instructions,mochi,rating,featured) 
VALUES ('','$name','$description','$nurl','$ncat','$hits','1','0','$width','$height','$nimage','0','1','$instructions','0','','')";
$result2=mysql_query($result);echo mysql_error();


}

?>

Wenn ich das "INSERT INTO" weglasse werden mir alle Einträge der Tabelle "games" angezeigt.
 
Zuletzt bearbeitet:
#1:
Den Fehler verursacht es nicht zwangsläufig, aber:

$result="INSERT INTO ava_games (id,...)

VALUES ('',

Ich gehe davon aus, dass "id" auto_increment ist. Dann wird diese ID automatisch mit jedem neuen Insert um eins erhöht -> Kannst Du aus dem Query komplett rauslassen.

#2:
MySQL möchte, wenn das Feld nicht null sein darf, einen Wert bekommen, oder einen Defaultwert wissen. Hat bspw. das Feld "hits" die Eigenschaft "NOT NULL", dann muss entweder auch die Eigenschaft "DEFAULT 0" (0 != NULL) da sein, oder das Feld MUSS bei jedem Insert mit einem Wert beschrieben werden.


Ich hoffe, ich hab das jetzt nicht zu undeutlich beschrieben, das beste wär vermutlich aber auch die Tabellenstruktur zu kennen.

PHP:
$result="INSERT INTO ava_games (id,name,description,url,category_id,hits,published,user_submit,width,height,image,import,filetype,instructions,mochi,rating,featured) 
VALUES ('','$name','$description','$nurl','$ncat','$hits','1','0','$width','$height','$nimage','0','1','$instructions','0','','')";
$result2=mysql_query($result);echo mysql_error();
Spukt mysql_error() denn überhaupt irgendwas aus?

auch würde ich:

PHP:
if (!(mysql_query($result))
{
    echo mysql_error();
}
schreiben.

Gruß
 
Zuletzt bearbeitet:
PHP:
CREATE TABLE `ava_games` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` text NOT NULL,
  `description` text NOT NULL,
  `url` text NOT NULL,
  `category_id` varchar(10) NOT NULL,
  `hits` int(11) NOT NULL default '0',
  `published` tinyint(3) NOT NULL default '0',
  `user_submit` varchar(10) NOT NULL default '0',
  `width` varchar(4) NOT NULL default '',
  `height` varchar(4) NOT NULL default '',
  `image` text NOT NULL,
  `import` char(1) NOT NULL default '0',
  `filetype` char(3) NOT NULL default '1',
  `instructions` text NOT NULL,
  `mochi` tinyint(1) NOT NULL default '0',
  `rating` int(4) NOT NULL,
  `featured` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21353 ;
Das ist die Tabellenstruktur.

EDIT: Wie gesagt es wird immer nur der erste Datensatz in die Datenbank geschrieben.

Führe ich das Script jetzt mehrmals hintereinander wird die ID auch nach oben gezählt.
 
Also,

name, description, url, category_id, image, instructions, rating und featured müssen immer beschrieben werden. Wenn die Variablen also leer sind, weil in bei der Abfrage nix bei raus kam, bricht MySQL hier mit einem Fehler ab.

Gruß
 
Wie wäre es $result nicht mit einem string zu überschreiben. Ändere $result in $result2 und $result2 ind $result3, sollte dann funzen. Am besten aber bessere Variablennamen nutzen.
 
Verstehe ich jetzt nicht ganz,
aber warum wird dann der erste Datensatz eingetragen?

Vielleicht, werden beim ersten durchlauf alle Felder richtig beschrieben. Wenn beim zweiten Datensatz, dann bspw. URL fehlt, also leer ist, bricht er ab. Bei jedem weiteren Versuch (F5) wird dann immer wieder nur der erste Quell-Datensatz eingetragen.

Wenn URL ein optionales Feld ist, dann ändere es in "NULL" statt "NOT NULL" oder schreib einen Defaultwert wie "N/A" rein.

Bsp: $nurl = ($url) ? $url : 'N/A';

Edit:
Strolchs Durchblick wieder :D


Gruß
 
Hier ist auch irgendwo ein Fehler den ich nicht sehe...

PHP:
$result2="INSERT INTO ava_users (id,username,password,email,active,about,group,location,interests,msn,website,admin,plays,joined,favourites,avatar,points,ratings,comments,messages,moderator) 
VALUES ('','$name','$password','$email','1','','','','','','','','','','','','','','','','')";

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group,location,interests,msn,website,admin,plays,joined,favourites,avatar,points' at line 1