Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: egiptoelcairo en 8 Junio 2012, 19:15 pm



Título: Relacionar basesde datos
Publicado por: egiptoelcairo en 8 Junio 2012, 19:15 pm
Buenas,

Supongamos que tenemos 2 bases de datos una "usuarios" y ortra "web"

En la base de datos usuarios tenemos una tabla llama "datos basicos" en la cual se especifican los campos "nombre de la cuenta" y "id" en nombre de la cuenta aparece "kirinvieco", en id "1" porque es el primer usuario.

Y en la base de datos "web" tenemos una tabla llamada "preferencias" en la cual hay 2 campos "id" seria el correspondiente al usuario de la base de datos de "usuario" y el otro campo "valor" ,el campo valor se encuantra en "0".

La pregunta seria ¿como puedo relacionar estas bases de datos para que la web identifique a el "usuario" con su "id" y modifique el campo "valor" + 25 tantas veces como se ejecute el script.?
Tengo este pero me tira error en la linea 16

esta linea
Código:
  echo $row['id'] . ;
Código:
<?php
$web = mysql_connect("localghost","xxx","xxx");
$user = mysql_connect("localhost","xxx","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


mysql_select_db("usuarios", $user);

$result = mysql_query("SELECT * FROM datos basicos");

while($row = mysql_fetch_array($result))
  {
  echo $row['id'] . ;
  echo "<br />";
  }

mysql_select_db("web", $web);
mysql_query("UPDATE account_data SET dp= + 25
WHERE id =".$result, $user);

mysql_close($con);


Título: Re: Relacionar basesde datos
Publicado por: #!drvy en 8 Junio 2012, 20:18 pm
Lo estas haciendo bien.. menos todo el script que tienes mal...

Código
  1. $web = mysql_connect("localghost","xxx","xxx");
  2. $user = mysql_connect("localhost","xxx","xxx");

Primero de server pones localghost y luego pones localhost.

Código
  1. if (!$con)
  2.  {
  3.  die('Could not connect: ' . mysql_error());
  4.  }
  5.  

Esta parte, es totalmente inútil puesto que no tienes ninguna variable que se llame $con.

Código
  1. $result = mysql_query("SELECT * FROM datos basicos");
datos basicos ? Si usas una tabla que tenga espacios en su nombre debes usar ya sean comillas simples o comillas dobles para marcar su nombre.

Código
  1. while($row = mysql_fetch_array($result))
  2.  {
  3.  echo $row['id'] . ;
  4.  echo "<br />";
  5.  }
  6.  

El error lo tienes donde aparece la linea de amarillo... levas un punto y después punto y coma. Eso esta mal puesto que le indicas a PHP que una a la variable otra cosa que luego no pones..

Código
  1. mysql_query("UPDATE account_data SET dp= + 25 WHERE id =".$result, $user);

Aquí igual.. un punto delante de $result que no sirve para nada.. ademas de coma después y $user que no se para que pones todo eso...

Código

No cierras absolutamente nada... la variable $con no existe..


Saludos


Título: Re: Relacionar basesde datos
Publicado por: egiptoelcairo en 8 Junio 2012, 22:45 pm
Retocando todo lo que me comentaste me queda asi pero me tira error en la linea de update

Código:
<?php
$web = mysql_connect("localhost","root","xxx");
$user = mysql_connect("localhost","root","xxx");
if (!$web)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("usuarios", $user);

$result = mysql_query("SELECT * FROM account");

while($row = mysql_fetch_array($result))
  {
  echo $row['id'];
  echo "<br />";
  {

mysql_select_db("web", $web);
mysql_query("UPDATE account_data SET dp= + 25 WHERE id ="$result);
mysql_close($web);
mysql_close($user);
?>


Título: Re: Relacionar basesde datos
Publicado por: #!drvy en 9 Junio 2012, 16:38 pm
Veamos,

Código
  1. $result = mysql_query("SELECT * FROM account");

Aquí no seleccionas ningún usuario en especifico, por tanto devolverá todos los usuarios y sus ids en el while que haces a continuación. Mal, porque el UPDATE le haces fuera del while por tanto siempre actualizaras al mismo usuario.

Por tanto esto debería ser algo así:
Código
  1. $result = mysql_query("SELECT * FROM account WHERE id='algo'");
o
Código
  1. $result = mysql_query("SELECT * FROM account WHERE nombre='algo'");

Al hacer while, estas tardando de mas, puesto que tu lo único que quieres es actualizar el de 1 solo usuario. Si utilizas while se da a entender que va a ser mas de uno. Por tanto, esto,

Código
  1. while($row = mysql_fetch_array($result))
  2.  {
  3.  echo $row['id'];
  4.  echo "<br />";
  5.  {

se convertiría en

Código
  1. $row = mysql_fetch_array($result);
  2. $userid = $row['id'];
  3. echo $userid.'<br />';

Y por ultimo,

Código
  1. mysql_query("UPDATE account_data SET dp= + 25 WHERE id =".$userid,$web);

Saludos


Título: Re: Relacionar basesde datos
Publicado por: egiptoelcairo en 10 Junio 2012, 00:17 am
Implementando todas las correcciones en el codigo, no logro entender como identifica al usuario registrado.

Código:
<?php
$web = mysql_connect("localhost","root","xxx");
$user = mysql_connect("localhost","root","xx");
if (!$web)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("usuarios", $user);

[color= "yellow" ][u]$result = mysql_query("SELECT * FROM account WHERE id='algo'");[/u][/color]

$row = mysql_fetch_array($result);
$userid = $row['id'];
echo $userid.'<br />';



mysql_select_db("web", $web);
mysql_query("UPDATE account_data SET dp= + 25 WHERE id ="[color=green].$userid[/color],$web);
mysql_close($web);
mysql_close($user);
?>

El codigo que se encuentra en amarillo en la parte donde me pusiste id="algo" , que variable tengo k introducir para que la propia web identifique al usuario registrado?, lo qjue se encuentra en verde no entiendo porque pones $userid,  seria $userno ?.


Título: Re: Relacionar basesde datos
Publicado por: #!drvy en 10 Junio 2012, 13:08 pm
Obviamente la identificación del usuario, o su nombre lo tienes que obtener tu, ya sea mediante un formulario de login o una cookie o lo que sea. PHP no es adivino para saber justo que ID que tiene que modificar.

El $userid es el ID del usuario que sacas de la base de datos de usuarios.
El $user, es la conexión que usas a la base de datos.


Saludos