Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - gAb1

#311
Estoy tratando de automatizar el proceso usando un foreach y pasandole una lista de todos los elementos del formulario, pero algunos son array y no estoy seguro si lo estoy haciendo bien. mysqli prepare me esta dando un error ("near col1, col2, etc").

Así es como lo estoy haciendo:

Código (php) [Seleccionar]
$list = array('use', 'type', 'status', 'bhk', 'baths', 'size', 'location', 'price', 'description');
foreach($list as $name) {
   if ($name != 'description')
       $var = "\$" . $name . "=filter_input(INPUT_POST, '" . $name . "', FILTER_SANITIZE_NUMBER_INT);";
   else if ($name == 'description')
       $var = "\$" . $name . "=filter_input(INPUT_POST, '" . $name . "', FILTER_SANITIZE_STRING);";
   eval($var);  // que nadie use esto lol
}

$area_1 = $size['area1'] != '' ? $size['area1'] : 0;
$area_2 = $size['area2'] != '' ? $size['area2'] : 0;
$city   = $location['city'];
$zone   = $location['zone'];
$sale   = $price['sale'] != '' ? $price['sale'] : 0;
$rent   = $price['rent'] != '' ? $price['rent'] : 0;


El problema viene cuando le hago un echo a los array, imprime 0 o nada. Y me he asegurado varias veces de rellenar el input...

Creo que el problema está en que no se puede usar filter_input() con arrays, pero no estoy seguro.

Este es el codigo con el que se guardan los datos en la db:

Código (php) [Seleccionar]
if ($stmt = $mysqli->prepare('INSERT INTO property (use, type, status, bhk, baths, area_1, area_2, city, zone, sale_price, monthly_price, description) VALUES ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?')) {
   $stmt->bind_param('iiiiiiiiiiis', $use, $type, $status, $bhk, $baths, $area1, $area2, $city, $zone, $sale, $rent, $description);
   $stmt->execute();

   $id = $mysqli->insert_id;

   if ($sale != 0) {
       if ($stmt = $mysqli->prepare('INSERT INTO for_sale VALUES ?')) {
           $stmt->bind_param('i', $id);
           $stmt->execute();
       }
   }

   if ($rent != 0) {
       if ($stmt = $mysqli->prepare('INSERT INTO for_rent VALUES ?')) {
           $stmt->bind_param('i', $id);
           $stmt->execute();
       }
   }
} else echo "Statement failed: " . $mysqli->error . "<br>";


Y el error:

CitarStatement failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'use, type, status, bhk, baths, area_1, area_2, city, zone, sale_price, monthly_p' at line 1

Por ultimo estoy buscando una manera de introducir la id del anuncio en las tablas "for_sale" y "for_rent" dependiendo si se ha introducido un precio en $price['sale'] y $price['rent']. ¿Sabeis alguna manera limpia de hacerlo? ¿O creeis que es mejor crear dos columnas más en la tabla property para indicar si se vende o alquila?

Gracias!
#312
Gracias por la ayuda y los consejos. Tengo que seguir estudiando mucho.

Una duda más, si quiero que haya la misma separación entre el label del checkbox y el div input, ¿cual sería la mejor manera? float left y margin-right pero no queda bien, estoy buscando una mejor manera... Lo facil para mi seria darle a cada .input un margen-left pero para hacerlo como me has enseñado
#313
Hola buenas, estoy teniendo problemas con el estilo css para mostrar y ocultar input text cuando se checkea un checkbox.

Tengo cuatro <li>, el primero y tercero son los checkboxes y el segundo y cuarto los input text. Necesito que esten alineados horizontalmente, pero que no se mueva nada al aparecer los input text los checkboxes no deben moverse y los input aparezcan a la derecha.

Código (html5) [Seleccionar]
<ul>
    <li style="margin-top: 9px;">
        <input type="checkbox" id="price1" value="">
        <label for="price1"><span></span>Se Vende</label>
    </li>
    <li class="price-1" style="display: none;">
        <input type="text" placeholder="Precio de Venta" name="price[sale]" /> <span class="unit unit-2">&euro;</span>

    </li>
    <li class="test">
        <input type="checkbox" id="price2" value="">
        <label for="price2"><span></span>Se Alquila</label>
    </li>
    <li class="price-2" style="display: none;">
        <input type="text" placeholder="Precio de Alquiler" name="price[rent]" /> <span class="unit unit-2">&euro;</span>

    </li>
</ul>


Alomejor tengo que cambiar la estructura o es simplemente arreglando el css.

Aquí un link a fiddle: http://jsfiddle.net/nazu61p7/

Gracias!
#314
Desarrollo Web / input type file no sube archivos
7 Noviembre 2015, 05:41 AM
(Edito toda la pregunta)

Estoy usando la libreria dropzone.js para que se pueda ver un preview de la imagen antes de subirla. He estado teniendo problemas para adaptar el formulario (que al parecer el area de soltar archivos ocupa todo el formulario y no funcionan las opciones para cambiar esta area a otro contenedor y aunque se usen sigue ocupando todo el form).

Encontré una opción (que no venia en la web) para poner (append) el <input type="file"> donde se desee, asi que lo puse dentro de un div en mi formulario, pero al parecer los archivos no se están subiendo (creo que se debe a un evento de la libreria, aparte de que tengo que poner una opción para que no se suban automaticamente).

Modifique un poco la libreria para que le pusiera el atributo "name="file[]"" (linea 548) al hidden input y ahora si parece que funciona pero al contar los archivos solo cuenta 1...

Código (javascript) [Seleccionar]
_this.hiddenFileInput.setAttribute("name", "file[]");

Ahora el input que crea es el siguiente (dentro de mi form):
Código (html5) [Seleccionar]
<input class="dz-hidden-input" type="file" name="file[]" multiple="multiple" accept="image/*" style="visibility: hidden; position: absolute; top: 0px; left: 0px; height: 0px; width: 0px;">

En php cuento los archivos pero siempre imprime 1:
Código (php) [Seleccionar]
$file_count = count($_FILES['file']['name']);
echo $file_count;


Y por ultimo las opciones que le doy al instanciarse:

Código (javascript) [Seleccionar]
Dropzone.options.myAwesomeDropzone = {
   url: 'upload.php',
   paramName: "file",
   acceptedFiles: 'image/*',
   addRemoveLinks: true,
   parallelUploads: 6,
   maxFilesize: 6,
   maxFiles: 6,
   autoDiscover: false,
   autoProcessQueue: false,
   uploadMultiple: true,
   hiddenInputContainer: '#inputFile',

   init: function () {
       thisDropzone = this;
       thisDropzone.on("maxfilesexceeded", function(file) { thisDropzone.removeFile(file); });
   }
};


Me gustaría saber si hay alguna manera de comprobar que los archivos soltados en el area estan realmente en el hidden input type file, porque no lo parece...

Al final va ser más facil crear los previews que estar dependiendo de esta libreria...
#315
Gracias, ya conseguí que funcione.
#316
Hola buenas, estoy buscando una manera de enviar variables a php a la vez que le doy a un link para cambiar de pagina (?page=2), ya que la lista y la paginación se cargan mediante ajax y al darle a un link las variables enviadas por ajax post se borran y hay que enviarlas de nuevo.

Necesito saber de alguna manera para hacerlo, no se me ocurre nada por el momento...

Gracias!
#317
Solución: Coger lo que necesitas e imprimirlo.

Código (jquery) [Seleccionar]
}).done(function(data) {
       var new_content = $(data).find('#search');
       $( "#search" ).html( new_content );
});
#318
Hola buenas, estoy intentando enviar variables a php sin tener que recargar la página y ya tengo el script creado, aunque estoy teniendo problemas...

Código (javascript) [Seleccionar]
   $('.click').click(function() {

       if ($('#res_prop').is(':checked')) {
           var prop_type = $('#res_prop').val();
       }
       else if ($('#com_prop').is(':checked')) {
           var prop_type = $('#com_prop').val();
       }

       $.ajax({
           method: "POST",
           url: "/search",
           data: {
               prop_type: prop_type,
               city: $('select[name=city]').val(),
               zone: $('select[name=zone]').val(),
           }
       }).done(function(data) {
           $('.cont-1').hide();
           $('.cont-2').show();
       });

       return false;
   });


No tengo mucha idea de como funciona Ajax, espero una cosa pero recibo otra, me explico: yo creía que al darle al botón el nuevo código ya compilado sería mostrado automaticamente en la página (sin recargar ni hacer nada más) pero sin embargo me encuentro con que el nuevo código se encuentra dentro de data y no tengo ni idea de como reemplazar el codigo actual (todo el código de la página actual) con el nuevo recibido.

Gracias!
#319
Ah la carpeta root del subdominio... Gracias voy a probar (solo con header set).

Gracias ahora ya funcionan las fuentes!
#320
Hola buenas, ¿alguien sabe que es eso de CORS? estoy viendo en la consola de firefox que se esta bloqueando las fuentes de mi web (en un hosting, en local funciona bien).

Las fuentes (y css, js, etc) están en un subdominio, ya que las url son procesadas por el index.php y no funcionan las rutas en el dominio.

CitarCross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at /fonts/Oxygen-Regular.ttf. (Reason: CORS header 'Access-Control-Allow-Origin' missing). <unknown>
downloadable font: download failed (font-family: "Oxygen-Regular" style:normal weight:normal stretch:normal src index:0): bad URI or cross-site access not allowed source: /fonts/Oxygen-Regular.ttf styles.css:10:12
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at /fonts/Montserrat-Regular.ttf. (Reason: CORS header 'Access-Control-Allow-Origin' missing). <unknown>
downloadable font: download failed (font-family: "Montserrat-Regular" style:normal weight:normal stretch:normal src index:0): bad URI or cross-site access not allowed source: /fonts/Montserrat-Regular.ttf styles.css:6:12
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at /fonts/glyphicons-halflings-regular.woff2. (Reason: CORS header 'Access-Control-Allow-Origin' missing). <unknown>
downloadable font: download failed (font-family: "Glyphicons Halflings" style:normal weight:normal stretch:normal src index:1): bad URI or cross-site access not allowed source: /fonts/glyphicons-halflings-regular.woff2 bootstrap.css:267:12
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at /fonts/glyphicons-halflings-regular.woff. (Reason: CORS header 'Access-Control-Allow-Origin' missing). <unknown>
downloadable font: download failed (font-family: "Glyphicons Halflings" style:normal weight:normal stretch:normal src index:2): bad URI or cross-site access not allowed source: /fonts/glyphicons-halflings-regular.woff bootstrap.css:267:12
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at /fonts/glyphicons-halflings-regular.ttf. (Reason: CORS header 'Access-Control-Allow-Origin' missing). <unknown>
downloadable font: download failed (font-family: "Glyphicons Halflings" style:normal weight:normal stretch:normal src index:3): bad URI or cross-site access not allowed source: /fonts/glyphicons-halflings-regular.ttf bootstrap.css:267:12

He estado leyendo sobre el problema y me parece que hay que activar en el hosting algo sobre CORS pero he estado viendo (en kloxo) y no veo nada parecido.

¿Alguien sabe como solucionar esto?

Gracias!

Edito: Acaba de encontrar la web enable-cors.org pero parece que no funciona... ya he añadido el header al archivo .htaccess (ya que no se como acceder desde kloxo a archivos conf de apache).

Así es como lo tengo actualmente, pero no funciona de ninguna de las maneras (tal vez hay que reiniciar apache o esperar mas?):

Options -Indexes

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

DirectoryIndex index.php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>