PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Checkbox (https://www.php-resource.de/forum/php-developer-forum/92021-checkbox.html)

aboutme 18-05-2008 13:53

Checkbox
 
Hi,

ich habe folgendes Problem:

Der User hat eine Freundesliste und soll seine besten Freunde durch Ankreuzen der Checkbox markieren. Doch es funktioniert nicht richtig.. Ich hab keine Ahnung wo mein Fehler liegt. Kann mir bitte jemand helfen?

PHP-Code:

$anzahl = @mysql_result(mysql_query("select id from rockdudes_friends order by id desc limit 0,1"),0,0);

    for(
$x 0$x <= $anzahl$x++)
    {
        if(
$_POST[$x])
        {
                
mysql_query("UPDATE rockdudes_friends SET best='1' WHERE uid = '".$dude['id']."' AND fid = '".mysql_real_escape_string($_POST[$x])."'");
                
mysql_query("UPDATE rockdudes_friends SET checked='1' WHERE uid = '".$dude['id']."' AND fid = '".mysql_real_escape_string($_POST[$x])."'");
        }
    }

  
$best="UPDATE rockdudes_friends SET best='0' WHERE uid = '".$dude['id']."' AND checked = '0'";
  
$friend mysql_query($best);
  
  
$best="UPDATE rockdudes_friends SET checked='0' WHERE uid = '".$dude['id']."'";
  
$friend mysql_query($best);
  
$done '<div id="done"><h3>.: done!</h3><p>Friends goufen geännert.</p></div>'


martin_duisburg 18-05-2008 14:00

woher kommt $dude['id']."

warum machst du das?


[php]
WHERE uid LIKE $dude['id']
[php]

aboutme 18-05-2008 14:02

das ist die Userid des angemeldeten Users. Die wird in einer anderen Datei abgefragt und includet

martin_duisburg 18-05-2008 14:03

und warum

WHERE uid LIKE $dude['id'] ?

nicht WHERE uid = $dude['id']?

aboutme 18-05-2008 14:05

ok jetzt ist es =

aber das ändert ja nichts am script...

martin_duisburg 18-05-2008 14:07

und was funzt jetzt genau nicht...

keine der Abfrage nur ein Teil der Abfragen?

aboutme 18-05-2008 14:07

die user die markiert sind werden nicht als markiert in die DB geschrieben

martin_duisburg 18-05-2008 14:09

also dieser Teil hier?
PHP-Code:

 for($x 0$x <= $anzahl$x++)
    {
        if(
$_POST[$x])
        {
                
mysql_query("UPDATE rockdudes_friends SET best='1' WHERE uid = '".$dude['id']."' AND fid = '".mysql_real_escape_string($_POST[$x])."'");
                
mysql_query("UPDATE rockdudes_friends SET checked='1' WHERE uid = '".$dude['id']."' AND fid = '".mysql_real_escape_string($_POST[$x])."'");
        }
    } 


aboutme 18-05-2008 14:11

genau.. aber das komische ist. Sonst hat der immer funktioniert. Das versteh ich nicht.

$_Baker 18-05-2008 14:11

Zeig doch mal den Teil, der das Formular aufbaut.

martin_duisburg 18-05-2008 14:13

was enthält $_POST[$x]

wird die Schleife überhaupt durchlaufen?

was enthält $anzahl?

und warum schickst du zwei Querys ab wenn du den selben Datensatz veränderst?

PHP-Code:

 mysql_query("UPDATE rockdudes_friends SET best='1',checked='1'  WHERE uid = '".$dude['id']."' AND fid = '".mysql_real_escape_string($_POST[$x])."'"); 


aboutme 18-05-2008 14:14

is gut hab den Fehler gefunden. Danke :)

PHP-Code:

    for($x 0$x <= $anzahl$x++)
    {
        if(
$_POST[$x])
        {
                
mysql_query("UPDATE rockdudes_friends SET best='1' WHERE id = '".mysql_real_escape_string($_POST[$x])."'");
                
mysql_query("UPDATE rockdudes_friends SET checked='1' WHERE id = '".mysql_real_escape_string($_POST[$x])."'");
        }
    } 

so stimmts.

Danke

zaubatrik 20-05-2008 16:00

Hi,

warum machst du aus den zwei Querys nicht eine?

Code:

mysql_query("UPDATE rockdudes_friends SET checked='1', best='1' WHERE id = '".mysql_real_escape_string($_POST[$x])."'");
Ist doch völlig unnötig da zwei abzuschicken!

H2O 20-05-2008 16:35

Ausserdem macht mysql_real_escape_string() für nummerische Werte wenig Sinn. Besser int_val() benutzen und in der Abfrage die Anführungszeichen entfernen:
PHP-Code:

$sql "
    UPDATE 
        rockdudes_friends 
    SET 
        checked = 1, 
        best = 1
    WHERE
        id = " 
int_val($_POST[$x]);
$res mysql_query($sql) or exit("Fehler: " mysql_error() . "<br />Abfrage: $sql<br />";
... 


$_Baker 20-05-2008 17:26

OffTopic:
Die Funktion int_val möchste ich mal sehn ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG