La primer macana que tenés es que el enlace está mal armado. te falta hacerle el echo al $PHP_SELF y estás haciendo una macana al armar el query string. De todas formas, si querés que te ande con un PHP medio nuevo vas a tener que sacar el PHP_SELF del array $_SERVER. Así que primera nota, el enlace se haría así:
Código:
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?pid=<? echo $row['ID']; ?>&sum=1" > agregar </a>
Eso el aperitivo, de lo que sigue, lo primero que te comento es que estás asumiendo en todo el código que register_globals está encendido, cosa que puede no ser. Es decir, estás asumiendo que las variables de la sesión se registran como globales, que las variables pasadas por GET se registran como globales, etc. Por más que funcione es una reverenda porquería y te puede causar problemas.
Lo que esperás de la sesión, usalo siempre del array $_SESSION, lo que esperás del query string usalo siempre del array $_GET, lo que esperás submitido de un formulario por POST, sacalo siempre del array $_POST, olvidate de las variables globales. Los arrays son más cómodos, seguros y semánticos.
La primera vez que se ve esa macana es en la línea
Código PHP:
if(!isset($arts)){
y luego en
y creo que en ningún lugar más. Ahora no veo mucho porque me tomé una pizcola y estoy medio dormido.
Tenés otra macana recursiva en como pretendés manejar el array multidimensional que haces con $_SESSION. Todas las veces qeu hicistes algo de la onda:
Código PHP:
$_SESSION['id_p['.$i.']']
Deberías haber hecho:
Código PHP:
$_SESSION['id_p'][$i]
pues id_p es un array almacenado en $_SESSION, lo otro que escribes no tiene significado, es un error de parseo.
Haz estas correcciones y va a ser otra cosa, si hay un fallo puede ser de lógica, pero la sintáxis va a andar bastante bien.
Cualquier cosa postea el código correjido.
Saludos