Foros del Web » Programando para Internet » PHP »

explode, trim, mysql query y un detalle

Estas en el tema de explode, trim, mysql query y un detalle en el foro de PHP en Foros del Web. Estimados colegas, Pues tengo aqui un codigo que me gustaria comentar con uds. Código PHP: <? $cnx  =  mysql_connect ( "localhost" , "root" , "" ...
  #1 (permalink)  
Antiguo 30/01/2005, 16:09
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
explode, trim, mysql query y un detalle

Estimados colegas,

Pues tengo aqui un codigo que me gustaria comentar con uds.

Código PHP:
<?
$cnx 
mysql_connect("localhost","root","");
mysql_select_db("test");


$pexplode("-","-Afganistán - Albania - Alemania - Andorra - Angola - Anguila - Antigua República Yugoslava de Macedonia - Antigua y Barbuda - Arabia Saudí - Argelia - Argentina - Armenia - Australia - Austria - Azerbaiyán  - Bahamas - Bahráin - Bangladesh - Barbados - Bélgica - Belice - Benín - Bermudas - Bielorrusia - Birmania (actualmente Myanmar) - Bolivia - Bosnia y Herzegovina - Botsuana - Brasil - Brunéi - Bulgaria - Burkina Faso - Burundi - Bután - Cabo Verde - Camboya - Camerún - Canadá - Chad - Chequia - Chile - China - Chipre - Cisjordania y Franja de Gaza - Colombia - Comoras - Congo - Corea del Norte - Corea del Sur - Costa de Marfil - Costa Rica - Croacia - Cuba - Dinamarca - Dominica- Ecuador - Egipto - El Salvador - Emiratos Árabes Unidos - Eritrea - Eslovaquia - Eslovenia - España - Estados Unidos - Estonia - Etiopía - Filipinas - Finlandia - Fiyi- Francia - Gabón - Gambia - Georgia - Ghana - Granada - Grecia - Guadalupe - Guam - Guatemala - Guinea - Guinea-Bissau - Guinea Ecuatorial - Guyana - Haití - Holanda (Países Bajos)- Honduras - Hong Kong - Hungría - India - Indonesia - Irán - Iraq - Irlanda - Islandia - Islas Marshall - Islas Salomón - Israel  - Italia - Jamaica - Japón - Jordania - Kazajistán - Kenia - Kirguizistán - Kiribati - Kuwait - Laos - Lesoto - Letonia - Líbano - Liberia - Libia - Liechtenstein - Lituania - Luxemburgo - Macedonia  - Madagascar - Malasia - Malaui - Maldivas - Malí - Malta - Marruecos - Mauritania - Mauricio - México - Micronesia - Moldavia - Mónaco - Mongolia - Montenegro - Mozambique - Myanmar - Namibia - Nauru - Nepal - Nueva Zelanda - Nicaragua - Níger - Nigeria - Niue - Noruega -  Omán -Países Bajos - Pakistán - Palau - Palestina - Panamá - Papúa-Nueva Guinea - Paraguay - Perú - Polonia - Portugal - Puerto Rico - Qatar - Reino Unido - República Centroafricana - República Democrática del Congo - República Dominicana - Rumania - Rusia - Ruanda - Sahara Occidental - Samoa - San Cristóbal y Nieves - San Marino - San Vicente y las Granadinas - Santa Lucía - Santa Sede (vinculado a la Ciudad del Vaticano) - Santo Tomé y Príncipe - Senegal - Serbia - Seychelles - Sierra Leona - Singapur - Siria - Somalía - Sri Lanka - Sudáfrica - Sudán - Suecia - Suiza - Surinam - Suazilandia - Tailandia - Taiwán - Tanzania - Tayikistán - Timor Oriental - Togo - Tonga - Trinidad y Tobago - Túnez - Turkmenistán - Turquía - Tuvalu - Ucrania - Uganda - Uruguay - Uzbekistán - Vanuatu - Ciudad del Vaticano  - Venezuela - Vietnam - Yemen - Yibuti - Yugoslavia - Zambia - Zimbabue - ");
$c count($p);
echo 
$c."<br>";




for (
$i=1;$i<=$c;$i++)
{

$trim trim($p[$i]);
//echo $p[$i];
mysql_query("insert paises(Pais) values ('$trim')");


}





mysql_close($cnx);

?>

Que es lo que se supone debe hacer:

Tiene una lista de paises que estan entre guiones "-" el programa tiene que partirme el largo string de paises y generarme un array con cada pais, luego con trim limpio los espacios en blanco y despues con un for creo unos querys para que me inserte los datos, hasta alli todo bien, los datos me los inserta asi

ID_Pais Pais
.....
181 Sudán
182 Suecia
183 Suiza
..........

Para mi eso esta correcto, el detalle y que no e podido arreglar.. es que al final de los 200 y tantos registros me crea dos registros en blanco... ¿por que ocurre eso? que hago mal?


Un saludo


PD: la estructura de mi tabla es asi

Código PHP:
CREATE TABLE `paises` (
  `
ID_Paissmallint(11unsigned NOT NULL auto_increment,
  `
Paisvarchar(60NOT NULL default '',
  
PRIMARY KEY  (`ID_Pais`)
TYPE=InnoDB

Última edición por NRLABS; 30/01/2005 a las 16:16
  #2 (permalink)  
Antiguo 30/01/2005, 16:18
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Por ejemplo si modifican y dejan asi

Código PHP:

for ($i=1;$i<=$c;$i++)
{
//$p[$i]'
$trim trim($p[$i]);
echo 
"insert paises (Pais) values ('$trim')"."<br>";





al ejecutar la consulta sera algo similar: (al final de todo)

......
insert paises (Pais) values ('Vietnam')
insert paises (Pais) values ('Yemen')
insert paises (Pais) values ('Yibuti')
insert paises (Pais) values ('Yugoslavia')
insert paises (Pais) values ('Zambia')
insert paises (Pais) values ('Zimbabue')
insert paises (Pais) values ('')
insert paises (Pais) values ('')

..........


como ven, me crea unos registros "en blanco"
  #3 (permalink)  
Antiguo 30/01/2005, 16:21
Avatar de braulito  
Fecha de Ingreso: abril-2004
Ubicación: Cusco - Perú
Mensajes: 597
Antigüedad: 20 años
Puntos: 8
Debes tener en cuenta que los arreglos en PHP empiezan desde 0 y terminan en un número menor a la longitud del arreglo.
Intenta cambiando

for ($i=1;$i<=$c;$i++)

Por

for ($i=0;$i<$c;$i++)
__________________
Braulio Soncco
braulio at buayacorp dot com
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 30/01/2005, 16:27
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Hola, dejandolo como me dijiste...

Código PHP:
<?
$p
explode("-","-Afganistán-Albania-");
$c count($p);
echo 
$c."<br>";

for (
$i=0;$i<=$c;$i++)
{
//$p[$i]'
$trim trim($p[$i]);
echo 
"insert paises (Pais) values ('$trim')"."<br>";
}
?>

Me lo deja asi:
insert paises (Pais) values ('')
insert paises (Pais) values ('Afganistán')
insert paises (Pais) values ('Albania')
insert paises (Pais) values ('')
insert paises (Pais) values ('')



muchas gracias por responder, sigo intentando..


UPDATE: probe con un "while" y el drama es el mismo,

Última edición por NRLABS; 30/01/2005 a las 16:35
  #5 (permalink)  
Antiguo 30/01/2005, 16:42
Avatar de braulito  
Fecha de Ingreso: abril-2004
Ubicación: Cusco - Perú
Mensajes: 597
Antigüedad: 20 años
Puntos: 8
deberías quitar el guión que tienes antes de Albania y el guión que tienes despues de Zimbague, el explode está tomando como elementos del arreglo lo que está antes del guión de Albania, y lo que está despues de Zimbague

y reemplaza bien lo que te dije, es:

Código PHP:
for ($i=0;$i<$c;$i++)
{
    
$trim trim($p[$i]);
    echo 
"insert paises(Pais) values ('$trim') <br />";

__________________
Braulio Soncco
braulio at buayacorp dot com
Buayacorp - Programación y Diseño
  #6 (permalink)  
Antiguo 30/01/2005, 16:45
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Vaya si ese era el error!

Muchas gracias braulito

ahora funciona muy bien.
  #7 (permalink)  
Antiguo 30/01/2005, 23:25
 
Fecha de Ingreso: febrero-2004
Mensajes: 221
Antigüedad: 20 años, 2 meses
Puntos: 0
Consejo, por que no usas foreach?

Saludos
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 14:51.