Foros del Web » Programando para Internet » PHP »

Error extraño, no se por qué?

Estas en el tema de Error extraño, no se por qué? en el foro de PHP en Foros del Web. bueno gente. estoy trabajando con MySQL y aqui uno tiene que hacer el autoincremento. El caso es que necesito llenar una tabla con cierta info, ...
  #1 (permalink)  
Antiguo 08/02/2003, 09:20
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Error extraño, no se por qué?

bueno gente.

estoy trabajando con MySQL y aqui uno tiene que hacer el autoincremento. El caso es que necesito llenar una tabla con cierta info, el primer campo es el id y para que cada campo sea llenado con un Id mayor que el anterior tengo esto:
$query = "select max(id)+1 as next from fotos";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

$cid = $row["next"];
if ($id == NULL)
$id = 1;


$query = "INSERT INTO `fotos` ( `id` ,`cid`, `image1` , `description1` )
VALUES ("
.$id.","
.$cid.","
."'".$image1."',"
."'".$decription1."',"
."'')";

$result = mysql_query($query);
if ($result){
echo "<script>document.location.href='/php/uploadForm2.php?f=2&cid=".$cid."'</script>";
}else{
echo " <script>document.location.href='/php/error.php?err=0'</script>";
//echo $query;
}

} // insertar



Pero me da este error:
Parse error: parse error, unexpected T_VARIABLE in /home//upload2.php on line 224


Esa linea 224 es precisamente donde trato de hacer el autoincremento:
$query = "select max(id)+1 as next from fotos";


Cómo lo hago? por ´qué falla?

Gracias!

Última edición por rashid; 08/02/2003 a las 11:21
  #2 (permalink)  
Antiguo 08/02/2003, 09:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
estoy trabajando con MySQL y aqui uno tiene que hacer el autoincremento
Menudo lio te has hecho ...

Mysql TIENE un tipo de campo (o propiead mejor dicho) que es:

AUTO INCREMENT
http://www.mysql.com/doc/en/example-AUTO_INCREMENT.html

A su vez .. se usa junto con la propiedad de "Unico" para que no se repitan .. (PRIMARY KEY)

Definelo así tu campo ID de tu tabla y olvidate de tdoo ..

Al hacer tu INSERT simplemente deja vacio dicho VALUE del ID .. con eso Mysql asume q ha de incrementarlo .. si le indicas algo ahí lo tomará como valor literar y si existe dicho ID .. ya te avisará de problema de "keys duplicadas".

Un saludo,
  #3 (permalink)  
Antiguo 08/02/2003, 09:50
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Cluster Gracias.

Estaba presisamente ahorita leyendo de eso en faqsdelweb. Asi es que hice esto en la BD
Create table tablaEjemplo(campo_id int not null auto_increment... primary key(campo_id))


y ahora tengo ese campo con el autoincremento, pero me da un error al iniciar el sql, es raro, todo lo tengo bien, creo:

como quité todo lo del autoincremento, ahora tengo:
$query = "INSERT INTO `fotos` ( `id` ,`cid`, `image1` , `description1` )

etc...

y me da este error en esa línea:
Parse error: parse error, unexpected T_VARIABLE in /home/upload2.php on line 233


Por qué?

Gracias
  #4 (permalink)  
Antiguo 08/02/2003, 09:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te da tanto error por usar comillas dobles .. ademas q (no lo he revisado) .. es probable q la concatenación q hace no sea correcta ...

usa simplemente este tipo de estructuras:
Código PHP:
$sql="INSERT INTO fotos (id,cid,image1,description1) VALUES ('','$cid','$image1','$description1')"
Así .. sin saltos de linea (por si acaso xD) .. y usando comillas simples ..

Como veras ya te he dejado el '' en tu campo id .. para q lo interprete el auto incremente .. Podrias incluso quitarlo .. Yo siempre lo uso .. así queda mas claro el numero de campos y posicion q actuan en la consulta..

Un saludo,

pd:
Hechale un vistazo:
http://otri.us.es/recursosPHP/manual..._registros.htm
  #5 (permalink)  
Antiguo 08/02/2003, 10:29
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Mismo error en misma línea:
Parse error: parse error, unexpected T_VARIABLE in /home/upload2.php on line 233


$sql="INSERT INTO fotos (id,cid,image1,description1) VALUES ('','$cid','$image1','$description1')";
alguna idea?
  #6 (permalink)  
Antiguo 08/02/2003, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pon el código completo .. subelo algun sitio con extension .txt para verlo en su contexto .. para mi q ese error ya no proviene de esa liena sino de alguna anterior .. (no porqué PHP marque error en cierta línea .. el error está en esa misma línea .. los errores sobre todo de "parse" se suelen arrastrar de mucho antes ..)

Un saludo,
  #7 (permalink)  
Antiguo 08/02/2003, 11:04
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Lo subí al servidor, pero este siempre lo procesa, aunque lo guarde como txt y le quité los <? aún asi lo procesa (http://www.gallerywebs.com/rashid/enrredo2.txt), por eso lo pongo aquí:

Esta es la f[ormula
Nota , le quité todos los <? para que lo lea como texto.

<html>
<head>
<title>Image Upload</title>
<script>
Esto es un JS
function getparameter(idparam){
var dir = new String(document.location);
//alert(dir);
var p1 = dir.split('?');
var currentparam='';
var i = 0;
var name ='';
var value = '';
var data='';

if(p1[1]!=''){
params =p1[1];
params = params.split('&');
for(i=0;i<params.length;i++){
currentparam = params[i];
data = currentparam.split('=');
name = data[0];
value = data[1];
if (idparam == name){
//alert (idparam + '='+value);
return value;
}
}//for
return '';
}//hay params
}
function checkform(form){
if(form.source_file.value ==""){
alert("Must select a Image");
form.source_file.focus();
return false;
}
form.path.value = form.source_file.value;

return true;
}
function fill(){
Attachments.username.value = getparameter('f');
Attachments.username.value = getparameter('u');
Attachments.cid.value = getparameter('c');
}

</script>

</head>
<body onLoad="fill()" marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">


switch ($f){

case "1":
echo "<form name='Attachments' method='POST' action='/php/upload2.php?f=1' enctype='multipart/form-data' onSubmit='return checkform(this);'>
<tr>
<td nowrap width='1%'>&nbsp;&nbsp;</td>
<td colspan=2>&nbsp;</td>
</tr>
<table width='33%' border='0'>
<tr>
<td><div align='center'>Select your logo file</div></td>
</tr>
<tr>
<td><table width='33%' border='0'>
<tr>
<td width='7%'><div align='center'><b>Image: </b></div></td>
<td width='93%'><div align='center'><b>
<input type=file name=source_file size=20>
</b></div></td>
</tr>
<tr>
<td width='7%'><div align='center'><b>Image: </b></div></td>
<td width='93%'><div align='center'><b>
<textarea name='decription'></textarea>
</b></div></td>
</tr>
<tr>
<td><div align='center'>
<input type=hidden name=box value=''>
<input type='hidden' name='path' value=''>
<input type='hidden' name='username' value=''>
<input type='hidden' name='cid' value=''>
</div></td>
<td><div align='center'>
<input type=submit name=btnSubmit value=Submit size=20 style='border: 1px solid #0000FF'>
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><div align='center'></div></td>
</tr>
</table>
</form>";
break;

case "2":
echo "<form name='Attachments' method=POST action='/php/upload2.php' enctype='multipart/form-data' onSubmit='return checkform(this);'>
<tr>
<td nowrap width='1%'>&nbsp;&nbsp;</td>
<td colspan=2>&nbsp;</td>
</tr>
<table width='33%' border='0'>
<tr>
<td><div align='center'>Select the second Imagen</div></td>
</tr>
<tr>
<td><table width='33%' border='0'>
<tr>
<td width='7%'><div align='center'><b>Image: </b></div></td>
<td width='93%'><div align='center'><b>
<input type=file name=source_file size=20>
</b></div></td>
</tr>
<tr>
<td><div align='center'>
<input type=hidden name=box value=''>
<input type='hidden' name='path' value=''>
<input type='hidden' name='username' value=''>
<input type='hidden' name='cid' value=''>
<input type='hidden' name='id' value=''>
</div></td>
<td><div align='center'>
<input type=submit name=btnSubmit value=Submit size=20 style='border: 1px solid #0000FF'>
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><div align='center'></div></td>
</tr>
</table>
</form>";
break;


}


</body>
</html>


Esta es la pag. que procesa la formula Upload2.php


session_start();

php


# een paar externe variabelen
# $place is de plaats waar de functie inAgent $agent gevonden heeft
# in $thestring onthouden we die $agent
# $HTTP_USER_AGENT is het equivalent van
# getenv('HTTP_USER_AGENT') en $_SERVER['HTTP_USER_AGENT']
# Perl: $ENV{'HTTP_USER_AGENT'}
# ASP: Request.ServerVariables("HTTP_USER_AGENT")
# JavaScript: navigator.userAgent
#
# de functie inAgent zoekt uit of een een string in $HTTP_USER_AGENT voorkomt
# de return waarde is true als dat zo is en false in het andere geval
function inAgent($agent)

{
# global is een aanduiding dat je externe variabelen gebruikt

# als je dit vergeet maakt php er nieuwe aan
global $HTTP_USER_AGENT, $thestring, $place;

$thestring = $agent;
$place = strpos($HTTP_USER_AGENT, $thestring) + 1;
# eregi() trekt zich niets aan van het verschil tussen grote en kleine letters
return eregi($HTTP_USER_AGENT, $agent);
}

# en nu begint 't pas echt




# exotische browsers vermommen zich meestal als MSIE of NN
# als we zoeken of er 'msie' in onze $HTTP_USER_AGENT staat
# hebben we veel kans om valse detecties te krijgen
# we beginnen dus met de best gecamoufleerde browsers
if (inAgent('konqueror'))

{
$browser = 'Konqueror';
# als we Konqueror hebben detecteren is het OS zeker Linux
$os = 'Linux';
}
# de validators
elseif (inAgent('w3c_validator'))$browser = 'W3C_Validator';






elseif (inAgent('jigsaw'))
{
$browser = 'W3C_CSS_Validator';

$version = substr($HTTP_USER_AGENT, $place + strlen($thestring), 6);
}

elseif (inAgent('lynx'))$browser = 'lynx';
elseif (inAgent('omniweb')) $browser = 'OmniWeb';
elseif (inAgent('opera')) $browser = 'Opera';
elseif (inAgent('webtv')) $browser = 'WebTV';
elseif (inAgent('icab')) $browser = 'iCab';
# NN kan enkel gedetecteerd worden doordat er geen 'msie' in $HTTP_USER_AGENTstaat
elseif (inAgent('msie')) $browser = 'Internet Explorer';
# 't is NN of een NN compatibele browser
elseif (!inAgent('compatible'))



{
# 't is NN (of Mozilla) zelve

# de browserversie staat dus op de 8e plaats
$browser = 'Netscape Navigator';

$version = substr($HTTP_USER_AGENT,8,4);
}
# als we het niet weten,


# weten we dat we het niet weten
else $browser = 'Een onbekende browser';

# isset() controleert het bestaan van een variabele
if (!isset($version))




{
# het versienummer komt net na $thestring
# strlen() geeft de lengte in karakters van een string
$version = substr($HTTP_USER_AGENT, $place + strlen($thestring),4);
}
# we hebben net iets teveel ingelezen voor het versienummer
$version = ereg_replace(' ', '', $version);



$version = ereg_replace(';', '', $version);
# hier zoeken we het OS
if (!isset($os))


{
if (inAgent('linux')) $os = 'Linux';

elseif (inAgent('x11')) $os = 'Unix';
elseif (inAgent('mac')) $os = 'Mac';
elseif (inAgent('win')) $os = 'Windows';
# tja, je kan niet alles weten he
else $os = 'een onbekend besturingssysteem';
}
# door het gebruik van dubbele quotes wordt in de string




# gezocht naar variabelen
# gebruik dus geen dubbele quotes als je dat niet wilt
# dit doet nogal vreemd aan, maar ik zweer dat het hetzelfde is als
# echo 'U gebruikt '.$browser.' '.$version.' onder '.$os.'!<br />'; of
# echo 'U gebruikt ',$browser,' ',$version,' onder ',$os,'!<br />';
//echo "Usted esta usando $browser $version en $os!<br />";


$ftp_server='dominicalbeach.com';//serverip
$conn_id = ftp_connect($ftp_server);


// login with username and password
$user="dombeach";
$passwd="apdo84";
$login_result = ftp_login($conn_id, $user, $passwd);

sigue...
  #8 (permalink)  
Antiguo 08/02/2003, 11:04
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
}
//directorylike /www.velibaba.com/images
ftp_chdir($conn_id, "www");
ftp_chdir($conn_id, "php");
ftp_chdir($conn_id, "images");
ftp_chdir($conn_id, "clients");
$destination_file=ftp_pwd($conn_id);

$file=getname($path,$browser);
$extencion = substr($file,strlen($file)-3,strlen($file));
$destination_file= date("Ymdhis").".".$extencion;
//echo $destination_file;
//exit;

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
//echo $username." -- ". $cid;
updatedbimagename($destination_file, $username, $cid);

echo "
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Upload Success ".$destination_file."</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
</head>
<body background='images/fondoparaflash.jpg'>
<table width='100%' border='0'>
<tr>
<td align='center'>UPLOAD SUCCESS</td>
</tr>
<tr>
<td align='center'><a href='javascript:window.close();'>Click Here to Close</a></td>
</tr>
</table>
</body>
</html>
";
}

// close the FTP stream
ftp_close($conn_id);


function getname($ruta,$browser){
//echo $ruta;
$strKeywordsTokens = explode("\\\\",trim($ruta));
$ult = count($strKeywordsTokens);
$last = $strKeywordsTokens[$ult-1] ;
//echo $browser;
if ($browser =='Netscape Navigator'){
$last= substr($last,0,strlen($last)-2);
}
if ($browser =='Opera'){
$last= substr($last,0,strlen($last)-2);
}

return $last;
}
switch ($f){

case "1":

function updatedbimagename($destination_file, $username, $cid){
@ $db=mysql_connect ("localhost", "h_r", "r");
if (!$db){
echo "Error: Could not connect to database. Please try again later.";
exit;
}
mysql_select_db ("h_d");

($HTTP_POST_VARS['btnSubmit']!="")

$sql="INSERT INTO fotos (id,cid,image1,description1) VALUES ('','$cid','$image1','$description1')";
$result = mysql_query($query);
if ($result){
echo "<script>document.location.href='/php/uploadForm2.php?f=2&cid=".$cid."'</script>";
}else{
echo " <script>document.location.href='/php/error.php?err=0'</script>";
//echo $query;
}

} // insertar
;
break;
  #9 (permalink)  
Antiguo 08/02/2003, 17:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

La 233 supongo que sera la del insert, ¿verdad?. Es para no contarlas. Ademas, mi aleman (u holandes, o lo que sea) no es muy bueno. Pero como te comento Cluster, el fallo viene de una linea anterior, exactamente de la anterior (si es que lo que se ve en el mensaje es lo que tienes):
Código PHP:
($HTTP_POST_VARS['btnSubmit']!=""
¿Que es esto? Para mi es una condicion de un if. Como no entiendo muy bien la estructura del codigo (definir funciones dentro de un switch) no se si has querido quitar el if o ha sido un accidente. Solucion: quitas esa linea si no tienes que te el if; o pones el if y sus { } correspondientes.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 09/02/2003, 21:17
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Amigo,´ya no me da ese mismo error, de hecho borré esa línea, ahora me da este:

Parse error: parse error, unexpected $ in /home/upload2.php on line 241


Esa linea es la ultima, o sea, despu[es del break; termina el script con un ?>

En ese ?> es donde marca el error.

Alguna idea.


  #11 (permalink)  
Antiguo 10/02/2003, 15:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Primera idea: antes de modificar codigo ajeno, aprende que hace exactamente cada parte de ese codigo.

Segunda idea: antes de modificarlo y despues de saber que hace, planifica muy bien la modificacion.

Tercera idea: cuando elimines codigo, revisa que la sintaxis del codigo que queda es correcta (que no queden } sueltas, ...).

Las que te interesan:

Cuarta idea: averiguar donde se abre la } con el comentario // insertar (el ultimo antes del ultimo break). Pista: te comente que la linea que acabas de quitar parecia la condicion del if; pues creo que esta } tambien pertenecia al if.

Quinta idea: ir al manual de PHP a revisar la sintaxis del switch. Hay ceras que a tu codigo le falta algo.

Sexta idea: una vez que has corregido los errores de sintaxis, quizas tienes tiempo de plantearte la siguiente pregunta: ¿de verdad necesito un switch si solo tengo una opcion (case)?

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 10/02/2003, 16:00
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Gracias Josemi, tus corteses sugerencias me enrriquecen.

Ciertamente estoy empezando con PHP (es mi segunda o tercer semana) y debido a que tengo un proyecto encima, es que me veo en necesidad de modificar el script de otro.

Es cierto lo del if, quité esa línea pues no la necesitaba, después quité también} al final.

En lo que respecta al Switch, es que se manejarán 6 diferentes fotos, cada una rellenará una parte diferente, por eso usaré un switch, pára decir
Foto 1 haga esto.
foto 2, esto
foto 3... foto 6 esto.


Apresio su ayuda.
Creo que estoy usando bien la estructura del switch hasta la primera opción, (no me he interesado en la exactitud de ahi en adelante pues ahún no he arrancado con el primer insert y esa parte del script no es leída pues no estoy pasando el parámetro f=2).

La razón principal por la que pido ayuda es por que no se mucho de php. Y estoy usando un script de otro, pues no se programar mucho.

Aprecio su ayuda, si ves un error informámelo.

Gracias.
  #13 (permalink)  
Antiguo 10/02/2003, 16:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

La estructura del switch es:
Código PHP:
switch($f){
case 
"1":
// tu codigo
break;
case 
"2":
// otro codigo
break;
...
// esta llave te falta 
La llave final es la que cierra el switch(). Es obligatoria ponerla, ya tengas una opcion o un millon.

Te compadezco,creo que la peor forma de empezar con un lenguaje de programacion es con un proyecto grande y por necesecidad.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 10/02/2003, 17:44
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Josemi, gracias por toda tu ayuda, pero esto cada vez se me hace mas desmadre.
Quite todos los switch y deje una sola condicion y aun asi me da el mismo error.

Lo que hare es empezar de nuevo.

Gracias.
De seguro despues pregunto.
  #15 (permalink)  
Antiguo 11/02/2003, 15:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si empiezas de cero con ese codigo, te recomiendo que pases las funciones a otro fichero que luego incluyes en el script con include() al principio del mismo. De esa forma tendras un codigo mas limpio y sencillo. Tambien te recomendaria que usases un editor que sea capaz de localizar los bloques de codigo (el codigo encerrado por { y }). Con eso puedes comprobar si te faltan llaves o si estan mal emparejadas.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #16 (permalink)  
Antiguo 11/02/2003, 17:11
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.006
Antigüedad: 15 años, 11 meses
Puntos: 11
Gracias Josemi, buenisimas ideas.

Uso Ultradev mx, este tiene esa función?
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 11:18.