Vote Script [Hilfe]

08/14/2013 16:11 DasPrinzip.#1
Hallo Com,

ich bin heute schon den ganzen Tag am Zweifeln meiner Künste in PHP.

Mein Vote Script klappt nicht. Ich hab ehrlich gesagt auch momentan keine Ahnung wie ich das eigentlich realisieren soll, aber hab ma was geschrieben.
Wo liegt der Fehler ? :D

1.php

PHP Code:
    include ("conn.php"); //Verbindung zur Datenbank
    
        $abfrage = mysql_query("SELECT * FROM *tabelle* ORDER BY RAND() LIMIT 999999");      

        $row = mysql_fetch_row($abfrage);


                        <form action="2.php" method="POST">
                        <div name="vote" value="<?php echo $row[1];?>" />
                        <input type="submit" name="submit" value="Vote" />
                        </form>

2.php

PHP Code:
    include ("conn.php"); //Verbindung zur Datenbank
        
        
$voting $_POST['vote'];
        
mysql_query("UPDATE *Tabelle* SET vote = vote+1 WHERE link = ".$voting.""); 
Danke :D
08/14/2013 18:18 Mozo_#2
Versuch es mal so:
PHP Code:
mysql_query("UPDATE *Tabelle* SET vote = 'vote+1' WHERE link = '".$voting."'"); 
08/17/2013 14:54 Bgzocker#3
Quote:
reject note Beschreibung
array mysql_fetch_row ( resource $result )

Liefert ein numerisch indizertes Array, das der geholten Zeile entspricht und bewegt den internen Datenatzzeiger vorwärts.
Quelle: [Only registered and activated users can see links. Click Here To Register...]
Du rufst mit deiner Abfrage bis zu 999999 Zeilen auf...
mysql_fetch_row akzeptiert maximal 1 Zeile...

So würds cih machen (sofern du auf mysql bestehst):
1.php
PHP Code:
<?
  
include ("conn.php"); //Verbindung zur Datenbank
    
        
$abfrage mysql_query("SELECT * FROM *tabelle* ORDER BY RAND() LIMIT 999999");      
?>

                        <form action="2.php" method="POST">
<?  while ($row mysql_fetch_array($abfrageMYSQL_NUM)) { ?>
                        <input type="submit" name="vote" value="<?php echo $row[1];?>" />
<? ?>
                        </form>
Frage von mir:
Geht sowas? o.O
PHP Code:
 <div name="vote" value="<?php echo $row[1];?>" />
08/18/2013 22:57 DasPrinzip.#4
Hab das Ganze jetzt so gelöst:

PHP Code:
                $abfrage mysql_query("SELECT * FROM *Tabelle* ORDER BY RAND() LIMIT 999999");      

        
$row mysql_fetch_row($abfrage); 

HTML Code:
						<form action="vote.php" method="POST">
						<input type="hidden" name="vote" value="<?php echo $row[1];?>" />
						<input type="submit" name="submit" value="Vote" />
						</form>
vote.php

PHP Code:
$voting $_POST['vote'];
        
mysql_query("UPDATE *Tabelle* SET vote = 'vote'+1 WHERE link = '".$voting."'"); 
Und so klappt das auch ;)
08/19/2013 07:37 Synatex#5
Quote:
Originally Posted by Bgzocker View Post
Frage von mir:
Geht sowas? o.O
PHP Code:
 <div name="vote" value="<?php echo $row[1];?>" />
Nur wenn du die gleiche Datei mit dem Formular aufrufst da dieses dann nen HTTP-Request sendet und dementsprechend die Seite erneut aufgerufen wird (oder du von einer anderen Seite wieder zurückleitest, auf jeden Fall ein Neuaufruf)
08/19/2013 08:37 Wroure#6
Quote:
Originally Posted by Mozo_ View Post
Versuch es mal so:
PHP Code:
mysql_query("UPDATE *Tabelle* SET vote = 'vote+1' WHERE link = '".$voting."'"); 
THANK Mozo_

Quote:
Originally Posted by Bgzocker View Post
Quelle: [Only registered and activated users can see links. Click Here To Register...]
Du rufst mit deiner Abfrage bis zu 999999 Zeilen auf...
mysql_fetch_row akzeptiert maximal 1 Zeile...

So würds cih machen (sofern du auf mysql bestehst):
1.php
PHP Code:
<?
  
include ("conn.php"); //Verbindung zur Datenbank
    
        
$abfrage mysql_query("SELECT * FROM *tabelle* ORDER BY RAND() LIMIT 999999");      
?>

                        <form action="2.php" method="POST">
<?  while ($row mysql_fetch_array($abfrageMYSQL_NUM)) { ?>
                        <input type="submit" name="vote" value="<?php echo $row[1];?>" />
<? ?>
                        </form>
Frage von mir:
Geht sowas? o.O
PHP Code:
 <div name="vote" value="<?php echo $row[1];?>" />
THANK Bgzocker

Quote:
Originally Posted by DasPrinzip. View Post
Hab das Ganze jetzt so gelöst:

PHP Code:
                $abfrage mysql_query("SELECT * FROM *Tabelle* ORDER BY RAND() LIMIT 999999");      

        
$row mysql_fetch_row($abfrage); 

HTML Code:
						<form action="vote.php" method="POST">
						<input type="hidden" name="vote" value="<?php echo $row[1];?>" />
						<input type="submit" name="submit" value="Vote" />
						</form>
vote.php

PHP Code:
$voting $_POST['vote'];
        
mysql_query("UPDATE *Tabelle* SET vote = 'vote'+1 WHERE link = '".$voting."'"); 
Und so klappt das auch ;)
THANK DasPrinzip

Quote:
Originally Posted by Synatex View Post
Nur wenn du die gleiche Datei mit dem Formular aufrufst da dieses dann nen HTTP-Request sendet und dementsprechend die Seite erneut aufgerufen wird (oder du von einer anderen Seite wieder zurückleitest, auf jeden Fall ein Neuaufruf)
THANK Synatex
08/20/2013 20:39 Chrisomator#7
@TE: Suche mal bitte bei Google nach MySQL Injection. Den oben stehenden Code würde ich nicht so stehen lassen, da er Angriffsfläche für eine MySQL Injection bietet. Du solltest Usereingaben !IMMER! durch irgendeine Filterfunktion jagen.

PHP Code:
$voting $_POST['vote']; 
Wenn die abgesendeten Daten nur Zahlen sind, dann kannst du die Eingabe in diesem Falle mithilfe der PHP Funktion intval() escapen bzw. absichern.

MfG
08/20/2013 20:50 Synatex#8
Integer casten geht schneller und ist kein unnötiger Funktionsaufruf - $voting = (int) $_POST['vote']