Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zufallsgenerator [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zufallsgenerator


 
stevieswebsite
20-07-2006, 10:33 
 
Ich bekomme immer eine Fehlermeldung von MySQL, wenn ich mein Script ausführe, aber ich hab keine Ahnung was ich noch ändern könnte.
Das Script soll ein bestimmter Zufallsgenerator sein:
Der Zufallsgenerator soll einen Link per Zufall aus einer Tabelle auswählen und dann z.B das wiedergeben:
<b>Benutzerwerbung: </b><a href="gfh" target="_new">gh</a>
Dann soll der Link einen Punkt weniger in der Tabelle haben. Wenn der Link dann 0 Punkte hat soll er gelöscht sein und die anderen Links rücken eine Id runter(in der MySQL Tabelle höher)

Hier ist mein Quelltext vom Script:
<?php
$user="xxxxx";
$passwort="xxxxx";
$datenbank="xxxxx";
$Verbindung=mysql_connect("localhost",$user,$passwort);
mysql_select_db($datenbank,$Verbindung);
$sql = "SELECT * FROM cptoplist_werbung";
$res = mysql_query($sql);
$anzahl = mysql_num_rows($res);
srand ((double)microtime()*1000000);
$ID = rand(1, $anzahl);
$sql2 = "SELECT * FROM cptoplist_werbung WHERE ID=$ID";
$result = mysql_query($sql2) or die (mysql_error());
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_assoc($result);
$update = $row["Punkte"]-1;
$sql = "UPDATE cptoplist_werbung SET Punkte = $update WHERE Link = $link";
$result = mysql_query($sql) or die (mysql_error());
echo "<a href=\"";
echo $row['Link'];
echo "\" target=\"_new\">Test</a>";
}
?>

Das ist die Tabelle cptoplist_werbung:
http://stevieswebsite.st.funpic.de/top/dateien/cptoplist_werbung.gif


und das ist meine Fehlermeldung:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/stevieswebsite/top/dateien/zufall.php on line 9
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 ''cptoplist_werbung' WHERE ID='1'' at line 1




Kann mir da jemand helfen?

 
prego
20-07-2006, 10:51 
 
Also wenn ich zufällig einen Eintrag aus einer Tabelle haben will mach ich folgendes:


SELECT * FROM tab1 ORDER BY rand() LIMIT 0,1

 
wahsaga
20-07-2006, 11:13 
 
Fällt mir schwer zu glauben, dass das wirklich dein original verwendeter Code ist - bei der Fehlermeldung.

(Benutze bitte die [php]-Tags des Forums - damit kannst du deinen Code auch "schön bunt" darstellen lassen, ohne selber jede Menge [color]-Tags da rein machen zu müssen.)

Bau doch mal eine Kontrolleausgabe der Query in die "or die(...)"-Statements mit ein - was kommt dabei raus ...?

 
stevieswebsite
20-07-2006, 11:33 
 
@wahsaga: Der ist Original habe den PHP Highlighter verwendet auf www.php-highlighter.de.vu
Ich kenn das mit dem or die gar nicht. Ich hab das Script schon vorher von einen anderen verbessern gelassen haben, er hat die reingemacht hat aber trotzdem nichts gebracht. Was meinteste damit?

@prego: Hat sich nichts verändert

 
wahsaga
20-07-2006, 11:44 
 
Original geschrieben von stevieswebsite
Der ist Original
Bezweifle ich weiterhin - die Fehlermeldung passt nicht dazu.
ahbe den PHP Highlighter verwendet auf www.php-highlighter.de.vu
Lass das bitte das nächste mal, verwende hier im Forum reinen plain text, den du in [php]-Tags einkleidest, siehe Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454).



Und dann beantworte bitte meine Rückfrage, wenn man dir weiterhelfen soll.

 
SuRaXor
20-07-2006, 13:16 
 
hi, :)

was mir aufgefallen ist (ist keine pflicht aber ich machs so)

$sql = "SELECT * FROM cptoplist_werbung";
zu
$sql = "SELECT * FROM `cptoplist_werbung`;";
und

$sql2 = "SELECT * FROM cptoplist_werbung WHERE ID=$ID";
$sql2 = "SELECT * FROM `cptoplist_werbung` WHERE ID={$ID};";

und undbedingt (ich weiß nicht ob die spalte link int oder varchar ist)

bei varchar (genau beim $link) in hochkommas setzen

$sql = "UPDATE cptoplist_werbung SET Punkte = $update WHERE Link = $link";
zu
$sql = "UPDATE `cptoplist_werbung` SET `Punkte` = {$update} WHERE `Link` = '{$link}';";

edit:
bei deiner Fehlermeldung:
''cptoplist_werbung' WHERE ID='1'' at line 1
wo kommen die Hochkommas her ?

gruß SuRaXor

 
stevieswebsite
20-07-2006, 13:47 
 
Danke es hat geklappt :)
Ich hatte schon eimal Hochkommas drin und davon ist die Fehlermeldung noch.

 
wahsaga
20-07-2006, 13:55 
 
Original geschrieben von stevieswebsite
Iech hatte schon eimla Hochkommas drin und davon ist die Fehlermeldung noch.
Genau deshalb fragte ich ja explizit nach - warum schwindelst du uns trotzdem an, und behauptest exakt den Code gepostet zu haben, der zu dieser Fehlermeldung führte?


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:06 Uhr.