Autor Tema: Necesito coger exactamente...  (Leído 2235 veces)

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Necesito coger exactamente...
« en: 08 de Julio de 2008, 19:08:32 pm »
hola, necesito ayuda con un codigo PHP. Bien, yo tengo un sistema de Placas en PHP.
Estoy añadiendo para poder tener la misma placa mas de una vez, por ejemplo la de administrador dos veces. Esto lo hago por MYSQL, en la base de datos, pero tengo el siguiente problema:

Como puedo hacer para que si el usuario tenia ya la placa, se le actualice el campo 'cantidad' que esta en la tabla 'placas', y si no la tiene se le inserte? Tengo esto, pero cuando vuelvo a comprar la placa no se me actualiza :S

Código: [Seleccionar]
<?php
include ("conectar.php");
$user $_GET [&#39;user&#39;];
$placa $_GET [&#39;placa&#39;];

// Cantidad, siempre 1!
$cantidad $_GET [&#39;cantidad&#39;];
$sq1 mysql_query("SELECT * FROM placas WHERE user=&#39;$user&#39;");
$ver mysql_fetch_array($sq1);
$antigua $ver["cantidad"];
$veruser $ver["user"];
$vermueble $ver["placa"];
// Añadirlo
if ($user == $veruser && $placa == $verplaca) {
mysql_query("UPDATE placas SET cantidad=&#39;$antigua&#39;+&#39;$cantidad&#39; WHERE placa=&#39;$placa&#39;");
} else {
mysql_query("INSERT INTO placas VALUES (&#39;1&#39;, &#39;$user&#39;, &#39;$placa&#39;, &#39;$cantidad&#39;);");
}
?>


Me gustaria saber como puedo hacer saber a MYSQL que me actualice justamente, la cantidad de la placa del usuario. Es decir, como un WHERE doble, el de la placa para que sepa que placa es y el del user, asi un user puede tener 3 y otro 1 de lo contrario todos tendrian las mismas xD


Mersi, si me estoy haciendo un lio jaja espero que lo entendais y me ayudeis =)

Comunidad PHPeros

Necesito coger exactamente...
« en: 08 de Julio de 2008, 19:08:32 pm »

Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #1 en: 08 de Julio de 2008, 23:14:35 pm »
Hola, en cuanto a lo de las placas, no encuentro nada a mano en este momento  xD

Pero creo que estas lineas:

// 1
$sq1 mysql_query("SELECT * FROM placas WHERE user=&#39;$user&#39;");

// 2
mysql_query("UPDATE placas SET cantidad=&#39;$antigua&#39;+&#39;$cantidad&#39; WHERE placa=&#39;$placa&#39;");

// 3
mysql_query("INSERT INTO placas VALUES (&#39;1&#39;, &#39;$user&#39;, &#39;$placa&#39;, &#39;$cantidad&#39;);");



Te las intentaré corregir  ;):


// 1
$sq1 mysql_query("SELECT * FROM `placas` WHERE `user`=&#39;".$user."&#39;");

// 2
$nueva $antigua $cantidad;
mysql_query("UPDATE `placas` SET `cantidad`=&#39;".$nueva."&#39; WHERE `placa`=&#39;".$placa."&#39;");

// 3
mysql_query("INSERT INTO `placas`(campo1, campo2, campo3, campo4) VALUES(&#39;1&#39;, &#39;$user&#39;, &#39;$placa&#39;, &#39;$cantidad&#39;);");



Bueno, no me creas mucho porque todavía soy novato en PHP  xD

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #2 en: 08 de Julio de 2008, 23:45:59 pm »
Pero es lo mismo que yo he echo xD Yo lo que quiero es que si el user ya tiene esa placa actualizar la cantidad de esa placa para ese usuario xD. Pero mersi. Alguien sabe algo?

Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #3 en: 09 de Julio de 2008, 00:06:41 am »
Bueno, por intentar no se pierde nada  xD:

<?
include(
"conectar.php");
$query mysql_query("SELECT * FROM `placas` WHERE `user` = &#39;".$_GET[&#39;user&#39;]."&#39;");
$array mysql_fetch_array($query);
$nuevo $array[&#39;cantidad&#39;] + $_GET[&#39;cantidad&#39;];
if ($array[&#39;placa&#39;]!=$_GET[&#39;placa&#39;]) {
mysql_query("INSERT INTO `placas` (campo1, campo2, campo3, campo4) VALUES(&#39;1&#39;, &#39;".$_GET[&#39;user&#39;]."&#39;,&#39;".$_GET[&#39;placa&#39;]."&#39;,&#39;".$_GET[&#39;cantidad&#39;]."&#39;)");
} else {
mysql_query("UPDATE `placas` SET `cantidad` = &#39;".$nuevo."&#39; WHERE `placa` = &#39;".$_GET[&#39;placa&#39;]."&#39;");
}
?>

Creo que es lo mismo que has hecho tu xD

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #4 en: 09 de Julio de 2008, 20:24:09 pm »
Nadie sabe como hacerlo? Me es algo urgente..

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #5 en: 09 de Julio de 2008, 20:40:49 pm »
podrias utilizar mysql_num_rows()

$query = mysql_query("SELECT * FROM `placas` WHERE campo2 = '".$_GET['user']."'");
$rows = mysql_num_rows($query);

if(!$rows) {
INSERT
} else {
UPDATE
}

Creo k te refieres a eso...

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #6 en: 10 de Julio de 2008, 02:23:37 am »
Lo que quiero es lo siguiente:

El usuario puede comprar 3 tipos de placas. Compra la primera placa. En el MYSQL se le añaden a la tabla PLACAS:
nombreplaca, nombreuser, cantidad
Despues, lo que quiero es si vuelve a comprar la misma placa se añada a la tabla PLACAS, a la antigua fila, la cantidad antigua +1. El problema que tengo esque se añade al mysql pero se repite la fila, es decir:
admin, ramfu, 1
y despues si vuelvo a comprar la placa admin se vuelve a añadir
admin, ramfu, 1
y lo que quiero es que quede
admin, ramfu, 2

Saludos!

Desconectado Blackenger

  • PHPer@ Fijo
  • ***
  • Mensajes: 114
  • Karma: 5
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #7 en: 11 de Julio de 2008, 00:56:26 am »
He reprogramado tu script original y pienso que es lo que buscas.
<?php
include ("conectar.php");

// Comprobamos que user y placa esten correctos
if(isset($_GET[&#39;user&#39;]) &&
   
isset($_GET[&#39;placa&#39;]) &&
   
!empty($_GET[&#39;user&#39;]) &&
   
!empty($_GET[&#39;placa&#39;])){

// Escapamos las superglobales
$user mysql_real_escape_string($_GET[&#39;user&#39;]);
$placa mysql_real_escape_string($_GET[&#39;placa&#39;]);

// Vericamos si el usuario tiene la placa que intenta adquirir
 
$sql mysql_query("SELECT * FROM placas WHERE user=&#39;{$user}&#39; AND placa=&#39;{$placa}&#39;");
	
if(
mysql_num_rows($sql)){
	

  
// Si la tiene le sumamos uno a la cantidad
  
mysql_query("UPDATE placas SET cantidad = cantidad + 1 WHERE user=&#39;{$user}&#39; AND placa=&#39;{$placa}");
   echo &
#39;Usted actualiz&oacute; su placa &#39;. $placa;
  

  else {
  
// Si no la tiene se la agregamos
  
mysql_query("INSERT INTO `placas` (user,placa,cantidad) VALUES 
              (&#39;"
.$user."&#39;,&#39;".$placa."&#39;,&#39;1&#39;)");
  echo 
"Le hemos agregado la placa con exito";
  }
 } else {
 echo 
"Ha ocurrido un error";
}
?>


Fíjate que en el INSERT hice unos cambios, pensando que la primera fila de la tabla placa es (ID) y que esta en auto_increment, así que lo borré. Cualquier duda o error solo postea.

NOTA: Aun puedes implementar ciertas medidas para mejorar el script entre ellas están comprobar si el usuario existe o si la placa que intenta adquirir esta disponible para él.

Saludos.
« Última modificación: 11 de Julio de 2008, 01:07:58 am por Blackenger »

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #8 en: 16 de Julio de 2008, 04:18:18 am »
Muchas Gracias, es precisamente lo que buscaba :D!

Y ahora, si quiero mostrar la cantidad de esas placas como lo haria? Gracias!
« Última modificación: 16 de Julio de 2008, 04:39:14 am por RamFu »

Desconectado Blackenger

  • PHPer@ Fijo
  • ***
  • Mensajes: 114
  • Karma: 5
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #9 en: 16 de Julio de 2008, 10:03:54 am »
No se si estarás usando sessiones o que, pero sería algo así:

<?
// conectas
// Compruebas que el script se ejecute de mera correcta

// Utilizaré GET, pero no se si usas COOKIES o SESSIONES... 
$user mysql_real_escape_string($_GET[&#39;user&#39;]);

$placas mysql_fetch_row(mysql_query("SELECT SUM(candidad) FROM placas WHERE user = {$user}"));
echo 
"El usuario {$user} tiene {$placas} placas.";
?>


Espero te sirva, cualquier duda postea.

Saludos.

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #10 en: 16 de Julio de 2008, 14:59:51 pm »
Gracias ;) Si, uso sesiones. Cojere el nombre de usuario por sesion, etc. Ya lo he modificado, gracias!

Desconectado Blackenger

  • PHPer@ Fijo
  • ***
  • Mensajes: 114
  • Karma: 5
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #11 en: 16 de Julio de 2008, 19:59:25 pm »
Cometi un error en el echo, no se si lo notaste. Deberia ir así:
echo "El usuario {$user} tiene {$placas[0]} placas.";

Saludos.

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #12 en: 16 de Julio de 2008, 22:19:12 pm »
No, el echo no lo use, de todas formas gracias.
Ahora otra duda para no abrir otro post.
Código: [Seleccionar]
<?php
include ("conectar.php");
$user $_POST[&#39;user&#39;];
$razon $_POST[&#39;razon&#39;];
$mod $_GET[&#39;mod&#39;];
$query mysql_query("SELECT * FROM usuarios WHEREuser=&#39;$user&#39;");
$ver mysql_fetch_array($query);
if(
mysql_query("UPDATE usuarios SET baneado=&#39;1&#39; , motivo=&#39;$razon&#39; WHERE user=&#39;$user&#39;" and mysql_query "INSERT INTO baneos (user,motivo,mod) VALUES (&#39;$user&#39;,&#39;$razon&#39;,&#39;$mod&#39;)") {
echo &
#39;Baneado con exito!&#39;;
} else {
echo &
#39;Error al banear&#39;;
}
?>


Me da un error de comillas en la linea 8. Y otra cosa, la primera ejecucion MYSQL si la ejecuta, la segunda no :s

Desconectado Blackenger

  • PHPer@ Fijo
  • ***
  • Mensajes: 114
  • Karma: 5
    • Ver Perfil
Re: Necesito coger exactamente...
« Respuesta #13 en: 17 de Julio de 2008, 00:35:00 am »
Esta linea no esta bien estructurada, además de que tienes una consulta al principio que ni siquiera usas.
if(mysql_query("UPDATE usuarios SET baneado=&#39;1&#39; , motivo=&#39;$razon&#39; WHERE user=&#39;$user&#39;" and mysql_query "INSERT INTO baneos (user,motivo,mod) VALUES (&#39;$user&#39;,&#39;$razon&#39;,&#39;$mod&#39;)") {

Prueba así:
<?php
include ("conectar.php");
$user mysql_real_escape_string(strip_tags($_POST[&#39;user&#39;]));
$razon mysql_real_escape_string(strip_tags($_POST[&#39;razon&#39;]));
$mod mysql_real_escape_string(strip_tags($_GET[&#39;mod&#39;]));

$query mysql_query("SELECT * FROM `usuarios` WHERE user = {$user}");
 if(
mysql_num_rows($query)){
 
  
$ban mysql_query("UPDATE `usuarios` SET baneado = &#39;1&#39;, motivo = {$razon} WHERE user = {$user}");
  
$bann mysql_query("INSERT INTO `baneos` (user,motivo,mod) 
                       VALUES (&#39;"
.$user."&#39;,&#39;".$razon."&#39;,&#39;".$mod."&#39;)");

 if(
$ban && $bann){
 echo &
#39;Baneado con exito!&#39;;
 
} else {
 echo &
#39;Error al banear&#39;;
 
}
} else {
echo 
"El usuario que intentas banear no existe";
}
?>


Saludos.

Desconectado RamFu

  • Moderadores Flash
  • PHPero Experto
  • ****
  • Mensajes: 778
  • Karma: 72
  • Sexo: Masculino
  • Programador y desarollador Actionscript y PHP
    • Ver Perfil
    • Google
Re: Necesito coger exactamente...
« Respuesta #14 en: 17 de Julio de 2008, 02:13:44 am »
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\xampplite\htdocs\pruebas\baneo.php on line 8
El usuario que intentas banear no existe

:(