Relacionar basesde datos

Iniciado por egiptoelcairo, 8 Junio 2012, 19:15 PM

0 Miembros y 1 Visitante están viendo este tema.

egiptoelcairo

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   echo $row['id'] . ;
<?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);

#!drvy

Lo estas haciendo bien.. menos todo el script que tienes mal...

Código (php,1) [Seleccionar]
$web = mysql_connect("localghost","xxx","xxx");
$user = mysql_connect("localhost","xxx","xxx");


Primero de server pones localghost y luego pones localhost.

Código (php) [Seleccionar]
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


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

Código (php) [Seleccionar]
$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 (php,3) [Seleccionar]
while($row = mysql_fetch_array($result))
  {
  echo $row['id'] . ;
  echo "<br />";
  }


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 (php) [Seleccionar]
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 (php) [Seleccionar]
mysql_close($con);

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


Saludos

egiptoelcairo

Retocando todo lo que me comentaste me queda asi pero me tira error en la linea de update

<?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);
?>

#!drvy

Veamos,

Código (php) [Seleccionar]
$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 (php) [Seleccionar]
$result = mysql_query("SELECT * FROM account WHERE id='algo'");
o
Código (php) [Seleccionar]
$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 (php) [Seleccionar]
while($row = mysql_fetch_array($result))
  {
  echo $row['id'];
  echo "<br />";
  {


se convertiría en

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


Y por ultimo,

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

Saludos

egiptoelcairo

#4
Implementando todas las correcciones en el codigo, no logro entender como identifica al usuario registrado.

<?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 ?.

#!drvy

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