5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
1

Добавление элемента в конец массива

30.01.2014, 01:52. Показов 9043. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!

Сделала согласно мануалу, а н-нет - не работает.

PHP
1
2
3
4
5
6
7
$students = array();
switch($act){
    case "addstudent":
        $add = new Student($_GET['id'], $_GET['name'], $_GET['daybirth'], $_GET['monthbirth'], $_GET['yearBirth'], $_GET['course'], $_GET['term']);
        $students[] = $add;
     break;
}
Добавлено через 55 секунд
элементы добавляются, но каждый раз перезаписывая друг друга, то есть не в конец массива
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2014, 01:52
Ответы с готовыми решениями:

Добавление элемента в конец массива
В общем есть такая прога. using System; using System.Collections; using...

Добавление элемента в конец массива
Собственно как это сделать, если размер массива заранее не изветен? :)

Добавление элемента в конец динамического массива!
#include "stdafx.h" #include <iostream> #include <malloc.h> using namespace std; int main()...

Добавление элемента в конец динамического массива
Не понимаю почему у меня не выходит данный код (еще только учусь) void pushBack(int* arr, int*...

15
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
30.01.2014, 01:59 2
Цитата Сообщение от olea Посмотреть сообщение

элементы добавляются, но каждый раз перезаписывая друг друга, то есть не в конец массива
eсть такая команда
PHP
1
array_push(массив, переменные);
но твой код тоже должен работать, только ты каждый раз создаешь новый массив
PHP
1
$students = array();
тогда лучше записать так:
PHP
1
2
if(!$student) 
$students = array();
0
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
30.01.2014, 02:01  [ТС] 3
esculap_ra, тоже не работает(
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
30.01.2014, 02:10 4
хотя знаешь, если скрипт должен добавлять новые данные при каждом обращении, тогда базовый массив должен где-то сохраняться, и потом оттуда браться. иначе не получится.
0
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
30.01.2014, 17:12  [ТС] 5
esculap_ra, а где, например, его можно сохранить?
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
30.01.2014, 18:55 6
Цитата Сообщение от olea Посмотреть сообщение
esculap_ra, а где, например, его можно сохранить?
Если предполагается осуществлять поиск, то лучше в базе данных. При желании можно сохранять и в файле ini, только не массивом. Например (запись в ini):

[STUDENTS]
nums=1

[INITIALS]
name1=Ivan
somename1=Sidorov

[BIRTHDAYS]
year1=2014
month1=2

В общем тут тоже можно довольно эффективно организовать поиск, добавление и удаление. При парсинге файла у тебя получится массив типа
PHP
1
$students = array('STUDENTS'=>1,'INITIALS'=>array('name1'=>'ivan','somename1'=>'sidorov'...));
nums тут указывает количество студентов, а получить данные можно простой выборкой из массива, например
PHP
1
$name = $students['INITIALS']['name'.$id];// тут как то назначаешь $id
0
(-_(-_(o_O)_-)_-)
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 238
31.01.2014, 00:09 7
Цитата Сообщение от olea Посмотреть сообщение
$students[] = $add;
Попробуй так
PHP
1
$students[] .= $add;
Выложи весь код целиком, тогда получится дать ответ более подробно.
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
31.01.2014, 00:13 8
Цитата Сообщение от S1nner Посмотреть сообщение
Выложи весь код целиком, тогда получится дать ответ более подробно.
Смотри на код в начале поста. Там каждый раз создается массив, поэтому никакой речи о добавлении в конец и быть не может.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
31.01.2014, 00:50 9
Добрый вечер,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$act = "addstudent";
switch($act)
    {
    case "addstudent":
         session_start();
        if(!is_array($_SESSION['students'])) // если нету студентов - создаем массив студентов
            { 
                $_SESSION['students'] = array();
                $_SESSION['counts'] = 0; // если нету студентов - индекс первого 0
            }
        else
            {
                $a = $_SESSION['counts'] + 1; // вернёт текущей индекс студента, так что для нового добавляем
                $_SESSION['counts']++;
 
                $_SESSION['students'][$a] = array();
                $_SESSION['students'][$a]["id"] = $_GET['id']; 
                $_SESSION['students'][$a]["name"] = $_GET['name'];
                $_SESSION['students'][$a]["daybirth"] = $_GET['daybirth'];
 
                    
                    
            }
    break;
    }
                    echo "<pre>";
                    print_r($_SESSION);
                    echo "</pre>";
?>
Если, что-то не понятно - спрашивайте.

P.S. Проверить работу скрипта:
1) Сохранить на сайт, к примеру как yyy.php в корень сайта site_name.com
2) Перейти по ссылкам:
http://site_name.com/yyy.php?i... =319888-15
http://site_name.com/yyy.php?i... h=85-74-65
http://site_name.com/yyy.php?i... th=6666666
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
31.01.2014, 01:01 10
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Если, что-то не понятно - спрашивайте.
Безусловно ты молодец! Но... Так и будешь таскать в сессии массив из 100 тыс студентов (гипотетически)? Может вообще отказаться от баз данных и всю инфу сохранять в сессиях%
0
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
02.02.2014, 00:56  [ТС] 11
Спасибо всем за ответы.
Вот я сделала добавление в базу данных.
А, допустим, мне нужно использовать данные из нее.
вот код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$act = isset($_GET['act']) ? $_GET['act'] : "default";
 
switch($act){
    case "addstudent":
        $add = new Student($_GET['id'], $_GET['name'], $_GET['daybirth'], $_GET['monthbirth'], $_GET['yearbirth'], $_GET['course'], $_GET['term']);
        $host='localhost'; // имя хоста (уточняется у провайдера)
        $database='learning'; // имя базы данных, которую вы должны создать
        $user='root'; // заданное вами имя пользователя, либо определенное провайдером
        $pswd=''; // заданный вами пароль
 
        $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
        mysql_select_db($database) or die("Не могу подключиться к базе.");
        mysql_query("INSERT INTO `students` (id, name, dayBirth, monthBirth, yearBirth, course, term) values ('".$_GET['id']."', '".$_GET['name']."', '".$_GET['daybirth']."','". $_GET['monthbirth']."','". $_GET['yearbirth']."','".$_GET['course']."','".$_GET['term']."')");
 
        echo ' Допустим чтение из БД';
        
        $rs = mysql_query("SELECT * FROM students WHERE (id = 3)");
 
 
        while($row = mysql_fetch_array($rs)) {
            echo $row['id'] . "<br />";
 
        }
Скажите как тогда использовать ООП? я подозреваю. что необходимо сделать выборку из бд. Создать объект со свойствами из бд и затем уже к нему применять методы?
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
02.02.2014, 01:02 12
Цитата Сообщение от olea Посмотреть сообщение
я подозреваю. что необходимо сделать выборку из бд. Создать объект со свойствами из бд и затем уже к нему применять методы?
объект получим
PHP
1
mysql_fetch_object
и к нему обращаемся типа, $obj->name (с массивами бы $obj['name'])
1
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
02.02.2014, 14:26  [ТС] 13
esculap_ra, а как методы применить?(
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
02.02.2014, 17:36 14
Цитата Сообщение от olea Посмотреть сообщение
esculap_ra, а как методы применить?(
В смысле - методы? Есть методы класса, а какие методы могут быть у ряда, извлеченного из таблицы в виде объекта?
0
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
02.02.2014, 21:09  [ТС] 15
esculap_ra, а зачем тогда создавать методы в классе, если их невозможно применить к данным, в данном случае, из БД?
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
04.02.2014, 19:51 16
Если работать с методами классов, то допустим, есть клас JDB
у него есть методы: insert, set, apply
тогда
PHP
1
2
3
4
5
6
$db = new JDB($host,$user,$bb,$passw);  
 $query = $db->$query;     
 $query ->insert("students');
 $query ->set("id',$id);
...
 $db->apply($query);
и тут выполниться код, подобный:
PHP
1
mysql_query("INSERT INTO `students` (id, name, dayBirth, monthBirth, yearBirth, course...
Разумеется, в приведенном примере ничего не выполнится, так как такого класса и таким методов еще не существует, и их нужно создавать самостоятельно. Чтобы в этом разобраться, посмотрите класс JDBo для Джумлы.
1
04.02.2014, 19:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2014, 19:51
Помогаю со студенческими работами здесь

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе...

Добавление элемента в конец
Добрый вечер. Есть контейнер: &lt;div id='main_content'&gt; // дочерние элементы &lt;/div&gt; Как...

Добавление элемента в конец списка
Помогите, пожалуйста. Напишите программу добавления элемента в конец односвязного списка(без...

Добавление элемента в конец списка
Сначала добавляет первый элемент, а далее не хочет? Посмотрите свежим глазом, а то я лагаю! void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru