Задать вопрос
  • Как распечатать многомерный массив в виде таблицы?

    0xD34F
    @0xD34F
    $keys = array_keys($arr);
    
    $head = "<tr><th>year</th>".implode("", array_map(function($n) {
      return "<th>$n</th>";
    }, $keys))."</tr>";
    
    $rows = implode("", array_map(function($key) use($arr) {
      return "<tr><td>$key</td>".implode("", array_map(function($n) use($key) {
        return "<td>$n[$key]</td>";
      }, $arr))."</tr>";
    }, array_keys($arr[$keys[0]])));
    
    echo "<table>$head$rows</table>";
    Ответ написан
    1 комментарий
  • Добавление таблиц и данных в базу данных из json php?

    xISRAPILx
    @xISRAPILx
    Кратко не получится
    Даю пример с созданием таблиц, код накинул за 5 минут. Нет никаких сложных конструкций, только основы.
    function createTableFromJson(array $json){
        $result = "";
        
        if(isset($json["tables"])){
            foreach($json["tables"] as $tableName => $data){
                $result .= "CREATE TABLE `".$tableName."`";
                
                if(isset($data["columns"]) && count($data["columns"]) >= 1){
                    $result .= " (";
                    $columnDefinations = [];
                    foreach($data["columns"] as $columnName => $columnDefination){
                        $columnDefinations[] = "`".$columnName."` ".$columnDefination."";
                    }
                    
                    $result .= implode(", ", $columnDefinations);
                    
                    if(isset($data["mods"])){
                        $result .= ", ".implode(", ", $data["mods"]);
                    }
                    
                    $result .= ")";
                }
                
                $result .= ";".PHP_EOL;
            }
        }
        
        return $result;
    }
    
    echo createTableFromJson(json_decode($твоя_строка_с_json));
    Ответ написан
    Комментировать
  • Почему не работает цикл в PHP?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Ошибка с формами, радио кнопки у вас на одной форме, а отправляете файл вы совсем через другую спс. тов. Дмитрий
    code
    <form action="functions.php" method="post">
      A4 <input type="radio" name="ans" value="ans1">
      A3 <input type="radio" name="ans" value="ans2"  /><br />
    </form>
      
        <form method="post" enctype="multipart/form-data">
          <input type="file" name="file">
          <input type="submit" value="Datei herunterladen!">
        </form>



    Надо сделать так примерно
    code
    <form action="#" method="post" enctype="multipart/form-data">
                A4 <input required type="radio" name="ans" value="ans1">
                A3 <input type="radio" name="ans" value="ans2">
                <input type="file" name="file">
                <input type="submit" value="Загрузить">
            </form>


    Проверяете условие, а потом объявляете переменную, естественно у вас условие не выполняется.
    code
    if ($answer == "ans1") {
    $answer = $_POST['ans'];

    Надо сначала объявлять переменную, потом уж делать с ней что душе угодно. Но именно в данном случае в объявлении функции она не к месту. См. след. пункт.
    code
    $answer = $_POST['ans'];  	
    if ($answer == "ans1") {

    Как заметил Дмитрий так функции нельзя объявлять
    code
    if ($answer == "ans1") {
    $answer = $_POST['ans'];  	
         function make_upload($file){	
      // формируем уникальное имя картинки: случайное число и name
      $name = mt_rand(0, 10000) . $file['name'];
      copy($file['tmp_name'], 'Folder_A4_SW_EIN/' . $name); //ПАПКА ДОК
       return true;    
       }
    }else{
        function make_upload($file){	
      // формируем уникальное имя картинки: случайное число и name
      $name = mt_rand(0, 10000) . $file['name'];
      copy($file['tmp_name'], 'img7/' . $name); //ПАПКА, КУДИ ПАДАЮТЬ ДОКУМЕНТИ
      }      
    }


    Вынесите название в отдельный аргумент
    code
    function make_upload($file, $folder)
    {    
        // формируем путь + уникальное имя картинки
        $name = $folder . DIRECTORY_SEPARATOR . uniqid(true) . $file['name'];
        copy($file['tmp_name'], $name);
        return true;    
    }
    UPD: рабочий г-но код
    <?php
        include_once('functions.php')
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Загрузить изображения на сервер</title>
        </head>
        <body>
            <form action="#" method="post" enctype="multipart/form-data">
                A4 <input required type="radio" name="ans" value="ans1">
                A3 <input type="radio" name="ans" value="ans2">
                <input type="file" name="file">
                <input type="submit" value="Загрузить">
            </form>
            <?php
            // если была произведена отправка формы
                if(isset($_FILES['file']))
                {
                    // проверяем, можно ли загружать изображение
                    $check = can_upload($_FILES['file']);
    
                    if($check === true)
                    {
                        $folder = $_POST['ans'] == 'ans1' ? 'Folder_A4_SW_EIN' : 'img7';
                        make_upload($_FILES['file'], $folder); // загружаем изображение на сервер
                        echo "<strong>Файл был успешно загружен!</strong>";
                    }
                    else
                    {
                        // выводим сообщение об ошибке
                        echo "<strong>$check</strong>";  
                    }
                }
            ?>
        </body>
    </html>

    <?php
        function can_upload($file)
        {
            // если имя пустое, значит файл не выбран
            if($file['name'] == '')
            return 'Вы не выбрали файл.';
    
            /* если размер файла 0, значит его не пропустили настройки 
            сервера из-за того, что он слишком большой */
            if($file['size'] == 0)
            return 'Файл слишком большой.';
    
            // разбиваем имя файла по точке и получаем массив
            $getMime = explode('.', $file['name']);
            
            // нас интересует последний элемент массива - расширение
            $mime = strtolower(end($getMime));
            
            // объявим массив допустимых расширений
            $types = array('jpg', 'png', 'gif', 'bmp', 'jpeg', 'pdf', 'ppt', 'ods', 'dotx', 'docx', 'doc');
    
            // если расширение не входит в список допустимых - return
            if(!in_array($mime, $types))
            return 'Недопустимый тип файла.';
    
            return true;
        }
    
        function make_upload($file, $folder)
        {    
            // формируем путь + уникальное имя картинки
            $name = $folder . DIRECTORY_SEPARATOR . uniqid(true) . $file['name'];
            copy($file['tmp_name'], $name);
            return true;    
        }

    Ответ написан
    3 комментария