2010-11-12 6 views
0

J'ai une simple page/configuration de base de données où vous pouvez augmenter ou diminuer le total de points pour personne A ou personne B.instructions conditionnelles PHP/Mysql

J'ai eu un peu d'aide, jeter des choses dans leur propre fonction pour nettoyer les choses. Je suis nouveau sur php et mysql; en lisant ce que j'ai je comprends toute la logique, je ne peux pas comprendre comment finir, dans le sens où, comme c'est maintenant, n'importe quel bouton va ajouter un point; J'ai besoin de faire fonctionner le bouton de point de soustraction.

Ma base de données est la table 'utilisateur' avec des points et nom au sein

Voici ce que j'ai:

<?php 
function print_r_dump($val) 
{ 
echo '<pre>'; 
print_r($val); 
echo '</pre>'; 
} 

//if (isset($_POST) || isset($_POST['Add point'])) 
if (isset($_POST)) 
{ 

//Prints what's in post 
print_r_dump($_POST); 

$str = "select * from user where name = '"; 
$str .= $_POST['person']; 
$str .= "'"; 

$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); 
mysql_select_db('xxxxx_points', $link); 
$result = mysql_query($str , $link); 

$row = mysql_fetch_assoc($result) ; 
$points = $row['points']; 

$str = 'update user set points = '. ($points+1) . ' where name = \''. $_POST['person'] . '\''; 
$result = mysql_query($str , $link); 
} 




$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); 
mysql_select_db('xxxxx_points', $link); 

$str = "SELECT points FROM user WHERE name='Person A'" ; 
$str = "SELECT * FROM user "; 
$result = mysql_query($str , $link); 


$results = array(); 
while ($row = mysql_fetch_assoc($result)) 
{ 
$results[ $row['name'] ] = $row['points']; 
} 

?> 

Person A's count: <?php echo $results['Person A']; ?> 
<br> 


<form method="post" action="index.php"> 
<input type="submit" name="submit_button" value="Add point" /> 
<input type="submit" name="submit_button" value="Subtract point" /> 
<input type="hidden" name="person" value="Person A" /> 
</form> 

<br> 

Person B's count: <?php echo $results['Person B']; ?> 
<br> 

<form method="post" action="index.php"> 
<input type="submit" name="submit_button" value="Add point" /> 
<input type="submit" name="submit_button" value="Subtract point" /> 
<input type="hidden" name="person" value="Person B" /> 
</form> 

<? 

print_r_dump($results ); 

?> 
+0

Quelle est votre question, et qu'attendez-vous que nous fassions tout pour vous? –

+0

À l'heure actuelle, chaque bouton incrémente les points. J'ai besoin de différencier ainsi le bouton de soustraction décrémente. –

+0

Montrez-nous le code du formulaire d'entrée s'il vous plaît. – spanky

Répondre

1

On dirait que vous ne devez pas nécessairement la première requête SQL non plus. Vous pouvez utiliser la valeur actuelle dans la base de données et la mettre à jour elle-même, à condition que le champ points soit numérique et non une chaîne, par exemple. Essayez ceci pour la partie principale de PHP de votre code.

<?php 
function print_r_dump($val) 
{ 
echo '<pre>'; 
print_r($val); 
echo '</pre>'; 
} 

if (isset($_POST)) 
{ 

//Prints what's in post 
print_r_dump($_POST); 

$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); 
mysql_select_db('xxxxx_points', $link); 

$str = ""; 

    if ($_POST['submit_button']=='Add point') 
    { 
    $str = 'update user set points = points+1 where name = \''. $_POST['person'] . '\''; 
    } 
    else if ($_POST['submit_button']=='Subtract point') 
    { 
    $str = 'update user set points = points-1 where name = \''. $_POST['person'] . '\''; 
    } 
    if ($str) 
    { 
    $result = mysql_query($str , $link); 
    } 
} 

$str = "SELECT points FROM user WHERE name='Person A'" ; 
$str = "SELECT * FROM user "; 
$result = mysql_query($str , $link); 


$results = array(); 
while ($row = mysql_fetch_assoc($result)) 
{ 
$results[ $row['name'] ] = $row['points']; 
} 

?> 
+0

La seule chose que je ne sais pas comprendre est la ligne où vous utilisez 'Personne A' Pouvez-vous expliquer comment vous les utilisez, mais n'utilisez pas la Personne B ailleurs? Est-ce en quelque sorte, sinon A tout le reste puisque nous n'avons qu'une autre option? –

+0

Si vous voulez dire la ligne ($ str = "SELECT points de l'utilisateur WHERE name = 'Personne A'";) Je viens de laisser cela parce que vous l'aviez. Cette ligne ne fait rien car la ligne suivante ($ str = "SELECT * FROM user";) l'écrase et sélectionne toutes les données de la table utilisateur. Vous pourriez prendre la ligne avec la personne A, je pensais juste que vous aviez un but de débogage pour cela. – spanky

1

Il y a beaucoup d'erreurs:

  • Vous n'avez pas besoin pour créer un nouveau lien chaque fois que vous exécutez une requête.
  • Cette ligne n'est pas sûre du tout: $ str. = $ _POST ['person']; tout le monde peut pirater votre code.
  • Vous devriez vérifier si vos résultats (renvoyés par mysql) sont valides.

J'ai essayé de le nettoyer un peu. Il pourrait y avoir quelques erreurs ici et là (je n'ai pas testé), mais montrer ce que je viens de dire:

<?php 
function print_r_dump($val) 
{ 
echo '<pre>'; 
print_r($val); 
echo '</pre>'; 
} 
$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); 
mysql_select_db('xxxxx_points', $link); 


if (isset($_POST)) 
{ 
$str = "select * from user where name = '"; 
$str .= $_POST['person']; 
$str .= "'"; 

$result = mysql_query($str , $link); 

if($result) { 
    $row = mysql_fetch_assoc($result) ; 
    $points = $row['points']; 
    if(condition for adding) { // probably if(isset($_POST[submit_button_add)) 
     $str = 'update user set points = '. ($points+1) . ' where name = \''. $_POST['person'] . '\''; 
     $result = mysql_query($str , $link); 
    } else if(condition for subtracting){// probably if(isset($_POST[submit_button_sub)) 
     $str = 'update user set points = '. ($points-1) . ' where name = \''. $_POST['person'] . '\''; 
     $result = mysql_query($str , $link); 
    } 
    $str = "SELECT * FROM user WHERE 1"; 
    $result = mysql_query($str , $link); 
    if($result) { 
     $results = array(); 
     while ($row = mysql_fetch_assoc($result)) 
     { 
      $results[ $row['name'] ] = $row['points']; 
     } 
    } 
} 

?> 

Person A's count: <?php echo $results['Person A']; ?> 
<br> 


<form method="post" action="index.php"> 
<input type="submit" name="submit_button_add" value="Add point" /> 
<input type="submit" name="submit_button_sub" value="Subtract point" /> 
<input type="hidden" name="person" value="Person A" /> 
</form> 

<br> 

Person B's count: <?php echo $results['Person B']; ?> 
<br> 

<form method="post" action="index.php"> 
<input type="submit" name="submit_button" value="Add point" /> 
<input type="submit" name="submit_button" value="Subtract point" /> 
<input type="hidden" name="person" value="Person B" /> 
</form> 
+0

Oui, je sais que ce code n'est pas sécurisé du tout, mais ce ne sera pas une page publique ou connue. Partagé parmi une poignée de personnes. Permettez-moi de vérifier cela .. –

+0

Je ne peux pas comprendre les instructions conditionnelles .. if (isset ($ _ POST [submit_button] == 'Ajouter un point')) est ce que je suis venu avec .. –

+0

Il est préférable de ne pas utiliser ces espaces quand vous nommez quelque chose ... Au lieu d'utiliser Add Point, add_point est plus facile. La raison en est que les espaces sont gérés de différentes manières dans différentes couches. – tanjir

Questions connexes