SQL ejercicio tienda

CREATE TABLE `tienda`.`productos` (
 `idproductos` INT NOT NULL AUTO_INCREMENT,
 `nombre` VARCHAR(50) NULL,
 `precio` DECIMAL(5,2) NULL,
 `descripcion` VARCHAR(400) NULL,
 PRIMARY KEY (`idproductos`));
 
 CREATE TABLE `tienda`.`clientes` (
 `idclientes` INT NOT NULL AUTO_INCREMENT,
 `mail` VARCHAR(100) NULL,
 `password` CHAR(32) NULL,
 `direccion` VARCHAR(200) NULL,
 `cpostal` CHAR(5) NULL,
 `ciudad` VARCHAR(50) NULL,
 PRIMARY KEY (`idclientes`));
 
 CREATE TABLE `tienda`.`pedidos` (
 `idpedidos` INT NOT NULL AUTO_INCREMENT,
 `idclientes` INT NULL,
 `fecha` DATETIME NULL,
 `importe` DECIMAL(6,2) NULL,
 `iva` DECIMAL(2,2) NULL,
 PRIMARY KEY (`idpedidos`));

 CREATE TABLE `tienda`.`pedidos_productos` (
 `idpedidos_productos` INT NOT NULL AUTO_INCREMENT,
 `idpedidos` INT NULL,
 `idproductos` INT NULL,
 `precio` DECIMAL(5,2) NULL,
 `cantidad` INT NULL,
PRIMARY KEY (`idpedidos_productos`)); ALTER TABLE `tienda`.`pedidos_productos` ADD INDEX `fk_productos_idx` (`idproductos` ASC); ALTER TABLE `tienda`.`pedidos_productos` ADD CONSTRAINT `fk_productos` FOREIGN KEY (`idproductos`) REFERENCES `tienda`.`productos` (`idproductos`) ON DELETE RESTRICT ON UPDATE NO ACTION; ALTER TABLE `tienda`.`pedidos_productos` ADD INDEX `fk_pedidos_idx` (`idpedidos` ASC); ALTER TABLE `tienda`.`pedidos_productos` ADD CONSTRAINT `fk_pedidos` FOREIGN KEY (`idpedidos`) REFERENCES `tienda`.`pedidos` (`idpedidos`) ON DELETE RESTRICT ON UPDATE NO ACTION; ALTER TABLE `tienda`.`pedidos` ADD INDEX `fk_clientes_idx` (`idclientes` ASC); ALTER TABLE `tienda`.`pedidos` ADD CONSTRAINT `fk_clientes` FOREIGN KEY (`idclientes`) REFERENCES `tienda`.`clientes` (`idclientes`) ON DELETE RESTRICT ON UPDATE NO ACTION;

Mostrar imágenes carpeta upload

chdir('upload');

if ($gestor = opendir('.')) {
while (false !== ($entrada = readdir($gestor))) {
if ($entrada != "." && $entrada != "..") {
$info= pathinfo($entrada);
if ($info['extension']=="jpg" || $info['extension']=="png"){
 echo '<img width="50" height="50" src="upload/'.$entrada.'">';
}
}
}
closedir($gestor);
}

Ficheros array

<form enctype=”multipart/form-data” action=”archivo.php” method=”POST”>

<!– MAX_FILE_SIZE debe preceder al campo de entrada del fichero –>

<input type=”hidden” name=”MAX_FILE_SIZE” value=”300000″ />

<!– El nombre del elemento de entrada determina el nombre en el array $_FILES –>

Foto: <input name=”foto” type=”file” /><br/>

Curriculum: <input name=”curri” type=”file” /><br/>

Informes: <input name=”informe[]” type=”file” /><br/>

<input name=”informe[]” type=”file” /><br/>

<input name=”informe[]” type=”file” /><br/>

<input type=”submit” value=”Enviar fichero” /></form>

$dir_subida = 'upload/';
$foto = $dir_subida . basename($_FILES['foto']['name']);
$curri = $dir_subida . basename($_FILES['curri']['name']);

if (move_uploaded_file($_FILES['foto']['tmp_name'], $foto)) {
 echo "Foto subida con éxito.\n";
} else {
 echo "¡Posible ataque de subida de ficheros!\n";
}

if (move_uploaded_file($_FILES['curri']['tmp_name'], $curri)) {
 echo "Curriculum subido con éxito.\n";
} else {
 echo "¡Posible ataque de subida de ficheros!\n";
}
for ($i=0;$i<count($_FILES['informe']['name']);$i++){
 if (move_uploaded_file($_FILES['informe']['tmp_name'][$i],
 $dir_subida . basename($_FILES['informe']['name'][$i]))) {
 echo "Informe $i subido con éxito.\n";
} else {
 echo "¡Posible ataque de subida de ficheros!\n";
}
}

Subir archivos PHP

Para subir un archivo necesitamos primero indicar en el formulario el typo de datos (multipart/form-data) y, opcionalmente, el máximo tamaño:

<!-- El tipo de codificación de datos, enctype, DEBE especificarse como sigue -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE debe preceder al campo de entrada del fichero -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- El nombre del elemento de entrada determina el nombre en el array $_FILES -->
    Enviar este fichero: <input name="fichero_usuario" type="file" />
    <input type="submit" value="Enviar fichero" />
</form>

Después, en el PHP, debemos recoger el archivo y moverlo a su ubicación definitiva:

$dir_subida = '/var/www/uploads/';
$fichero_subido = $dir_subida . basename($_FILES['fichero_usuario']['name']);

if (move_uploaded_file($_FILES['fichero_usuario']['tmp_name'], $fichero_subido)) {
    echo "El fichero es válido y se subió con éxito.\n";
} else {
    echo "¡Posible ataque de subida de ficheros!\n";
}

Carácter de nueva línea \n

El carácter de nueva línea sólo funciona cuando está encerrado entre comillas dobles:

$a='hola\n';
$b="hola\n";

En el primer caso no hace salto de línea, en el segundo sí. Esto se aplica a la hora de imprimir en pantalla o escribir en ficheros.

En general el entrecomillado doble permite carácteres de escape, mientras que el simple no:

Cadenas en PHP