Foros del Web » Programando para Internet » PHP »

Quiero mostrarles mi código: opiniones, consejos, correcciones, etc

Estas en el tema de Quiero mostrarles mi código: opiniones, consejos, correcciones, etc en el foro de PHP en Foros del Web. Bueno quiero que vean mi código y me ayuden a mejorarlo. Yo no sé mucho de PHP y me cuesta saber si mi código está ...
  #1 (permalink)  
Antiguo 13/07/2013, 19:24
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 9 meses
Puntos: 1
Quiero mostrarles mi código: opiniones, consejos, correcciones, etc

Bueno quiero que vean mi código y me ayuden a mejorarlo. Yo no sé mucho de PHP y me cuesta saber si mi código está bien escrito, si es como debe ser, si falta organizar o limpiar etc. Por eso quiero que ustedes que son expertos lo vean y me digan qué está mal o qué falta mejorar.
El código funciona muy bien y hace lo que tiene que hacer, solo quiero saber si está bien hecho y en qué puedo mejorarlo.

Es una conexión a la API de un juego para obtener los datos de los jugadores. Primeramente obtiene el GET 'nick', si es que ese nick ya existe en mi base de datos le redirige a una página con sus datos y realiza otras funciones. Si no existe, hace la conexión con la API de la página de juego para comprobar los datos y agregarlos a mi base de datos.

Código PHP:
<? include('../bd/acceso.php');
//obtengo el nick por GET
$getnick mysql_real_escape_string($_GET['nick']);

//compruebo si ese nick está registrado en mi base de datos. este proceso ya lo hago antes de acceder a esta página, pero de igual maneara lo vuelvo a hacer
$sql mysql_query("SELECT nick FROM pilotos WHERE nick='".$getnick."'"); 
//si hay más de 0 registros con ese nick quiere decir ya está registrado y lo redirige a una página con sus datos
if(mysql_num_rows($sql) > 0) {  
    
header("Location: ../datos/".$getnick."");
//si no hay hago la conexion con la API del juego para comprobar si el nick existe
}else { 
    function 
xmlnick($url$postDaten) {  
        
$Abfrage curl_init();  
        
curl_setopt($AbfrageCURLOPT_URL$url);  
        
curl_setopt($AbfrageCURLOPT_HEADERtrue);  
        
curl_setopt($AbfrageCURLOPT_RETURNTRANSFERtrue);  
        
$ausgAbfrage curl_exec($Abfrage);  
        
curl_close($Abfrage);  
        
$xmlAbfrage strstr($ausgAbfrage'<?xml');  
        
$arrayAbfrage simplexml_load_string($xmlAbfrage);        
        return 
$arrayAbfrage;  
    }   

    
$arrayLeaderboard xmlnick('https://test.com/'.$getnick.'/profile'$getnick);  

//me devuelve un XML y empiezo a recoger los datos
    
$xml = ($arrayLeaderboard);
    
$name $xml->attributes()->name;
    
$levell $xml->attributes()->level;
    
$image $xml->attributes()->image;

//si $name es vacio quiere decir que no existe y lo redirige a una página
    
if ($name == ''){
        
header("Location: ../stats/".$getnick."");
//si no es vacio quiere decir existe. procedo a agregar la informacion del jugador a mi base de datos
    
}else{
        
$ag mysql_query("INSERT INTO pilotos (nick, nivel, avatar) VALUES ('".$name."', '".$levell."', '".$image."' )");

//esta es la funcion que obtiene su record en una determinada pista por POST
        
function xmlpost($url$postDaten) {  
            
$Abfrage curl_init();  
            
curl_setopt($AbfrageCURLOPT_URL$url);  
            
curl_setopt($AbfrageCURLOPT_HEADERtrue);  
            
curl_setopt($AbfrageCURLOPT_RETURNTRANSFERtrue);  
            
curl_setopt($AbfrageCURLOPT_POSTtrue);  
            
curl_setopt($AbfrageCURLOPT_POSTFIELDS$postDaten);  
            
$ausgAbfrage curl_exec($Abfrage);  
            
curl_close($Abfrage);  
            
$xmlAbfrage strstr($ausgAbfrage'<?xml');  
            
$arrayAbfrage simplexml_load_string($xmlAbfrage);
            return 
$arrayAbfrage;  
        }   
//aquí hago un select de las pistas que tengo guardadas en mi base de datos
         
$sqlps mysql_query("SELECT idpista FROM pistas");
//aquí hago un while de las pistas. como son 65 pistas entonces esto se repite 65 veces
         
while ($psq=mysql_fetch_array($sqlps)){

//estas son la variables con las que obtiene los datos de la pista. Aquí estoy haciendo las peticiones de las pistas en Multiplayer. $b es el id de la pista que lo obtiene como resutado del while - $et es el modo de juego: 2 multiplayer y 1 singleplayer, en este caso multiplayer. $lt es otro dato de las pistas que no es necesario explicarlo xD
             
$b=$psq['idpista'];
             
$et='2';
             
$lt='1';

             
$postString 'eid='.$b.'&et='.$et.'&lt='.$lt.'&dn='.$getnick;
//aquí hago la peticion por POST, llamando a la funcion xmlpost y combinando la URL con la variable $postString que contiene las variables de la petición
             
$arrayLeaderboard xmlpost('https://test.com/test'$postString);  
//empiezo a recoger los datos del xml recibido
             
$xml = ($arrayLeaderboard);
             foreach (
$xml->worldLeaderboard as $mensaje){
                 
$arr $mensaje->attributes();
                 
$bb = ($arr["personaName"]); 
                 
$c = ($arr["eventDuration"]); 
                 
$car utf8_decode($arr["carName"]);
                 
$event = ($arr["eventId"]);
              }

//si el dato $bb no está vacio quiere decir que tiene un record en esa pista. procedo a agregar los datos a mi base de datos
             
if ($bb != ''){

//compruebo si ya existe un registro de esa prueba para ese piloto
                 
$consulta="SELECT pista FROM datos WHERE piloto='".$bb."' AND pista='".$event."'  "
                 
$resultado=mysql_query($consulta) or die (mysql_error()); 
                 
$ec=mysql_num_rows($resultado);

//si no existe, agrega el registro con los datos
                 
if ($ec == 0){ 
                    
$reg mysql_query("INSERT INTO datos (piloto, pista, tiempo, coche) VALUES ('".$bb."', '".$event."', '".$c."', '".$car."' )");
//si ya existe lo actualiza
                 
}else {
                    
$que mysql_query("UPDATE datos SET coche='".$car."', tiempo='".$c."'  WHERE piloto='".$bb."' AND pista='".$event."' ");
                 }
//si el dato $bb es vacio quiere decir que no tiene un record, asi que no hace nada
             
}else{    
             }

//aquí hago exactamente lo mismo que lo anterior pero para el modo Singleplayer
             
$b2=$psq['idpista'];
             
$et2='1';
             
$lt2='1';

             
$postString2 'eid='.$b2.'&et='.$et2.'&lt='.$lt2.'&dn='.$getnick;
             
$arrayLeaderboard2 xmlpost('https://test.com/test'$postString2);  

             
$xml2 = ($arrayLeaderboard2);

             foreach (
$xml2->worldLeaderboard as $mensaje2){
                 
$arr2 $mensaje2->attributes();
                 
$bb2 = ($arr2["personaName"]); 
                 
$c2 = ($arr2["eventDuration"]); 
                 
$car2 utf8_decode($arr2["carName"]);
                 
$event2 = ($arr2["eventId"]);
             }
    
             if (
$bb2 != ''){
                 
$consulta2="SELECT pista FROM datos WHERE piloto='".$bb2."' AND pista='".$event2."'  "
                 
$resultado2=mysql_query($consulta2) or die (mysql_error()); 
                 
$ec2=mysql_num_rows($resultado2);
    
                 if (
$ec2 == 0){ 
                    
$reg2 mysql_query("INSERT INTO datos (piloto, pista, tiempo2, coche2) VALUES ('".$bb2."', '".$event2."', '".$c2."', '".$car2."' )");
                 }else {
                    
$que2 mysql_query("UPDATE datos SET coche2='".$car2."', tiempo2='".$c2."'  WHERE piloto='".$bb2."' AND pista='".$event2."' ");
                 }
             }else{    
             }
        }
//al completar el while lo redirige a una página donde calcula los datos y le asigna puntajes y posiciones
        
header("Location: ../calcular/".$getnick."");
    }
}
?>
Bueno eso es todo y estoy preparado para críticas. Esto es lo que mi conocimiento da, puede que haya fallado al escribir este código. Me falta conocimiento y experiencia por eso quiero saber sus opiniones.

Última edición por mathiasmontiel; 13/07/2013 a las 20:09
  #2 (permalink)  
Antiguo 18/07/2013, 11:50
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Quiero mostrarles mi código: opiniones, consejos, correcciones, etc

- Bueno mysql esta obsoleto y se eliminara en el futuro asi que una migracion no te vendria mal mysqli o pdo.
- Las verificaciones donde verificas valores vacios o 0 if ($name == '') yo te recomiendo usar empty http://es1.php.net/manual/es/function.empty.php
- Despues de un header donde tu redireccionas debes finalizar con exit; si no el script continua su ejecucion

header('location:pagina');
exit;
  #3 (permalink)  
Antiguo 20/07/2013, 02:26
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Quiero mostrarles mi código: opiniones, consejos, correcciones, etc

gracias por tu respuesta :D

Etiquetas: consejos, mysql, opiniones, quiero, registro, select, sql, variable, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:34.