Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Sprawdzanie czy istnieje już taki tytuł (videos system)


Przejdź do rozwiązania Rozwiązane przez Macsch15,

Rekomendowane odpowiedzi

Opublikowano

Mam takie pytanie odnośnie aplikacji videos system. Otóż chciałbym aby przy wysyłaniu filmu sprawdzało czy nie ma już takiego tytułu w bazie i jeżeli będzie zwracało komunikat. Ale niestety nie wiem od czego zacząć i jak to ugryźć. Czy da radę to wykonać w szablonach czy już potrzeba przegrzebać pliki aplikacji?

admin4YSh2.png


 

Opublikowano

W plikach aplikacji.

jeżeli wysłano formularz
        $this->DB->build( array( 'select' => 'COUNT(*) as test', 'from' => 'tabela', 'where' => 'nazwa = '.$this->request['poleznazwa'] ) );
        $this->DB->execute();
        $count = $this->DB->fetch();
if($count > 0)
{
//juz jest
}
else
{
//nie ma jeszcze
}
  • Lubię to 1

Znajdziesz mnie na LinkedIn

Opublikowano

Próbowałem wmontować ten kod do formularza, ale albo wyświetla się driver error albo pusta strona

 

Ponizej kawałek kodu odpowiadający za dodanie nowego filmu:

protected function mainForm( $type='add' )
	{		
		$data        = array();
		$catList     = array();
		$catID       = intval( $this->request['cat'] );
		$videoID     = intval( $this->request['id'] );
        $show_editor = "";
		
		# Generate Cat List
		$catList = $this->registry->getClass('video_categories')->categoryDropdown( 'add' );		

		# Nothing to continue with.
		
		if( !count( $catList ) )
		{
            $this->registry->output->showError( 'vs_no_cats_add_perms' );	
		}	
        
        if( $catID && $this->registry->getClass('video_categories')->cat_data_id[$catID]['cat_only'] )
        {
            $this->registry->output->showError( 'vs_category_cat_only' );    
        }	
		
		if( $type == 'add' )
		{			
			if( !$this->memberData['g_vs_add_video'] )
			{
                $this->registry->output->showError( 'vs_no_add_perms' );
			}
			
			$form['title']  = $this->lang->words['title_adding'];
			$form['button'] = $this->lang->words['add_video'];			
			$form['code']   = "add_save";	
			$data['cid']    = $catID;
            $autoSaveKey    = 'addvideo-'.$this->memberData['member_id'];	
			
		}
		
		
		else
		{
			if( !$this->memberData['g_vs_edit_video'] )
			{
  	            $this->registry->output->showError( 'vs_no_edit_group' ); 
			}			

Oraz kod z wpisaną tabelą:

//jeżeli wysłano formularz
        $this->DB->build( array( 'select' => 'COUNT(*) as test', 'from' => 'ipb_videos', 'where' => 'nazwa = '.$this->request['title'] ) );
        $this->DB->execute();
        $count = $this->DB->fetch();
if($count > 0)
{
//juz jest
}
else
{
//nie ma jeszcze
}

admin4YSh2.png


 

Opublikowano (edytowane)

where nazwa? Moze to zmienisz?

 

where domyślam sie że ma być nazwa kolumny z tytułami?

 

Zaraz zmienie i będę dalej próbował ;)

 

PS. A w tym fragmencie:

{
//juz jest
}
else
{
//nie ma jeszcze
}

to komunikat dać w "echo"?

 

 

PS2. Z driver error w logach jest to:

Error: 1064 - 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 '' at line 1
mySQL query error: SELECT COUNT(*) as test FROM ipb_ipb_videos WHERE title = 
Edytowane przez Mdx91

admin4YSh2.png


 

Opublikowano

TeeZ,

$this->DB->fetch()

Zwraca tablicę, więc w warunku powinno być:

if(count($count) > 0)

Lub...

if(sizeof($count) > 0)

Dodatkowo, jeżeli sprawdzamy tylko czy $count ma więcej niż 0, nie trzeba stosować > 0.
 

if(count($count))
if(sizeof($count))
  • Lubię to 2
Opublikowano

Próbowałem kombinować z kodem:

//jeżeli wysłano formularz
        $this->DB->build( array( 'select' => 'COUNT(*) as test', 'from' => 'ipb_videos', 'where' => 'title = '.$this->request['title'] ) );
        $this->DB->execute();
        $count = $this->DB->fetch();
if($count > 0)
{
//juz jest
}
else
{
//nie ma jeszcze
}

oraz zamieniając warunek z $count (sprawdzając to co pisał Macsh15)

cały czas jest to samo, zależnie od jakiego miejsca w które wmontuje kod to albo driver error albo pusta strona (co do pustej strony to próbowałem wyciągnąć jaki error siedzi ale po edycji pliku initdata.php (o ile dobrze pamiętam) to dalej jest pusta strona i nie pokazuje errorów)

admin4YSh2.png


 

Opublikowano
$count['test']

Ma wartość integer?

 

Takie coś co napisałeś sprawdziło by się gdyby:

$count = array(
	'test' => 122
);

Ale w takim przypadki to porównywanie zawartości a nie zwracanych rekordów z bazy.

 

Przykładowo:

$count = array();

var_dump($count > 0);

Zwróci true (mimo że nie ma nic w tablicy).

$count = array(
	'test' => 122
);

var_dump($count['test'] > 0);

Też true.

 

Natomiast:

$count = array(
	'test' => 'invisionize'
);

var_dump($count['test'] > 0);

FALSE.

Opublikowano

Wartość tak, ale nie typ. Każde dane trafiające z bazy danych do interpretatora PHP to stringi. Co nie zmienia faktu że stringi z wartością liczbową też można porównywać operatorami porównania.
 
Aby to o czym mówisz miało typ integer musiałbyś zrobić:

$count['test'] = intval($count['test'])
Opublikowano

Chłopaki, ja już z waszej dyskusji nie wiem nic :D i nie wiem czy kombinować z tym kodem czy nie jest dopracowany ;)

 

Jeżeli moglibyście skleić ten kod w jedną całość to byłbym wdzięczny. I jezeli mógłbym prosić o jakąś pomoc gdzie umieścić ten kod. Chyba że to nie ma znaczenia (w co wątpie) :)

admin4YSh2.png


 

Opublikowano (edytowane)

Trochę odeszliśmy od tematu. :P

Jak tak to uzupełniłem ten fragment "tytułem" (który ma być sprawdzany)

 

Daj kod HTML tego formularza, bo coś mi się nie wydaje. :P

 

Tak troche bo ogólnie wszystkie funkcje (i inne rzeczy których nie potrafie nazwać :P ) wiązały się w jakimś sensie z tematem ;)

 

A co do tego HTML to masz na myśli szablon "wysyłki"? Bo jak przeglądałem plik submit.php to nie ma tam ani trochę HTML ;)

 

 

PS. Zamieszczam od razu szablon bo to wiadomo przyśpieszy wszystko (jeżeli o szablon chodzi :) )

<script type='text/javascript'>
//<![CDATA[ 
     	ipb.videos.video_values = \$H(
       		{$data['extra_videos']}
       	);
            
        ipb.lang['delete_confirm']   = '{$this->lang->words['please_confirm']}';    
        ipb.lang['no_extra_videos']  = '<i>{$this->lang->words['no_extra_video_js']}</i>';  
        ipb.templates['value_input'] = new Template("<li id='value_#{value_id}_wrap' style='display: none'>  <input type='text' id='values_#{value_id}' name='values[#{value_id}]' size='60' class='input_text' value='#{value_url}' maxlength='254' style='margin-bottom:2px;' /> <a href='#' id='remove_video_#{value_id}' title='{$this->lang->words['remove_video']}' class='cancel'>x</a>  </li>");
        ipb.templates['thumbnail_upload'] = new Template("<if test="thumbnailUploadDesc:|:$data['thumbnail_type'] == '1'">{$this->lang->words['thumbnail_already_uploaded']}<else />{$this->lang->words['video_thumbnail_desc']}</if><input type='file' name='thumbnail_upload' id='thumbnail_url' />	");
        ipb.templates['thumbnail_url'] = new Template("{$this->lang->words['thumbnail_url_desc']} <input type='text' class='input_text' size='50' name='thumbnail_url' id='thumbnail_url' <if test="thumbnailUrl:|:$data['thumbnail_type'] == '2'">value='{$data['thumbnail']}'</if> />	");

//]]>
</script>

<form action="{$this->settings['base_url']}app=videos" method="post" name="video_form" enctype="multipart/form-data">
<input type='hidden' name='module' value='post' />
<input type='hidden' name='section' value='submit' />
<input type='hidden' name='do' value='{$form['code']}' />
<input type='hidden' name='id' value="{$data['tid']}" />
<input type='hidden' name='date' value="{$r['date']}" />
<input type='hidden' name='old_cat' value="{$data['cid']}" />
<input type='hidden' name='author_id' value="{$r['author_id']}" />
<input type='hidden' name='author_name' value="{$r['author_name']}" />
<input type='hidden' name='auth_key' value='{$this->member->form_hash}' />

<div class='ipsBox_container'>

<div class='post_form'>
<h2 class="maintitle">{$form['title']}</h2>
<fieldset>
<h3 class='bar'>{$this->lang->words['vs_video_information']}</h3>
<div class='message error' id='form_errors' style='display:none;'>{$this->lang->words['required_fields_js']}</div><br />
<ul>
<li class='field'>
	<label for='title'>{$this->lang->words['video_title']}</label>
	<input id='title' class='input_text' type="text" size="40" name="title" value="{$data['title']}" tabindex="1" /> 	
	<span class='desc'>{$this->lang->words['vs_video_title_desc']} <font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field'>
	<label for='short_desc'>{$this->lang->words['video_description']}</label>
<select name="short_desc">
	<option value='Lektor PL'>Lektor PL</option>
	<option value='Dubbing'>Dubbing</option>
	<option value='Film Polski'>Film Polski</option>
        <option value='Napisy'>Napisy</option>
	<option value='Język Oryginalny'>Język Oryginalny</option>
</select>
<span class='desc'>Wybierz wersje językową <font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field'>
	<label for='category'>{$this->lang->words['vs_category']}</label>
	
        <select id='category' name='cid' class='input_select'>
        <option value='0'>{$this->lang->words['vs_select_category']}</option>
	<foreach loop="categories:$catList as $category">
		<option value='{$category[0]}'<if test="catselected:|:$category[0]==$data['cid']"> selected='selected'</if>{$category[2]}>{$category[1]}</option>
	</foreach>
        </select>
	<span class='desc'>{$this->lang->words['vs_category_desc']} <font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field'>
	<label for='embed'>{$this->lang->words['vs_video_type']}</label>
	<select id='video_type' name='video_type'>
<option value='media_url' <if test="media_url_select:|:$data['video_type'] == 'media_url'">selected='selected'</if>>{$this->lang->words['vs_media_url']}</option>

<if test="canPostEmbed:|:$this->memberData['g_vs_embed_video']">
<option value='media_embed' <if test="media_embed_select:|:$data['video_type'] == 'media_embed'">selected='selected'</if>>{$this->lang->words['vs_paste_embed_code']}</option>
</if>
</select>
	<span class='desc'><font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field' id='media_url' style='display:none;'>
	<label for='media_url'>{$this->lang->words['vs_enter_media_url']}</label>
	<input id='media_url_data' class='input_text' type="text" size="60" name="media_url_data" value="<if test="$data['video_type'] == 'media_url'">{$data['video_data']}</if>" tabindex="2" />
	<span class='desc'>{$this->lang->words['vs_enter_media_url_desc']} <a href='#' class='view_media_sites'>({$this->lang->words['vs_view_media_sites']})</a>  <font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field' id='media_embed' style='display:none;'>
	<label for='media_embed'>{$this->lang->words['vs_video_embed_code']}</label>
	<textarea name='media_embed_data' id='media_embed_data' class='input_text' cols='60' rows='5' tabindex='4'>{$data['embed']}</textarea>
	<span class='desc'>{$this->lang->words['vs_video_embed_code_desc']} <a href='#' class='view_media_sites'>({$this->lang->words['vs_view_embed_codes']})</a> <font color='red'><b>{$this->lang->words['vs_required']}</b></font></span>
</li>

<li class='field' id='extra_videos' style='display:none;'>
            <label for='extra_videos'>{$this->lang->words['extra_videos']}</label>
             <ul id='videos_container' style='float:left;'></ul><span class='desc'>
             <a href='#' id='add_video' title='{$this->lang->words['add_video']}'><strong>({$this->lang->words['add_video']})</strong></a> {$this->lang->words['add_video_desc']}</span>
</li>


<if test="thumbnailUpload:|:$this->settings['vs_thumbnail_upload'] OR $this->settings['vs_thumbnail_url']">
<li class='field'>
	<label for='thumbnail'>{$this->lang->words['video_thumbnail']}</label>
             <select id='thumbnail_type' name='thumbnail_type'>
                  <option value='0' <if test="thumbnail_type_select0:|:$data['thumbnail_type'] == '0'">selected='selected'</if>>----</option>
                  <if test="thumbnailUploadOption:|:$this->settings['vs_thumbnail_upload']"><option value='1' <if test="thumbnail_type_select1:|:$data['thumbnail_type'] == '1'">selected='selected'</if>>{$this->lang->words['upload_image']}</option></if>
                  <if test="thumbnailUrlOption:|:$this->settings['vs_thumbnail_url']"><option value='2' <if test="thumbnail_type_select2:|:$data['thumbnail_type'] == '2'">selected='selected'</if>>{$this->lang->words['enter_image_url']}</option></if>
             </select>

        <span id='thumbnail_desc' style='display:none;'></span>
        <span class='desc'><i>{$this->lang->words['thumbnail_type_desc']}</i></span>    
</li>
</if>

</ul>

</fieldset>

<if test="showVideoContent:|:$this->settings['vs_show_video_content']">
<fieldset>
<h3 class='bar'>{$this->lang->words['vs_video_content']}</h3>
{$editor}
</fieldset>
</if>

<fieldset class='submit'>
<input class='input_submit' type="submit" name="Submit" id='submit_video' value="{$form['button']}" /> 
<input class='input_submit' type="reset" name="Reset" value="{$this->lang->words['vs_reset_form']}" />
{$this->lang->words['vs_or']} 
<a href='{parse url="app=videos" seotitle="false" template="app=videos" base="public"}' title='{$this->lang->words['vs_cancel']}' class='cancel' tabindex='0'>{$this->lang->words['vs_cancel']}</a>
		
</fieldset>

</div>
</div>
</form>
Edytowane przez Mdx91

admin4YSh2.png


 

Opublikowano

Daje cały błąd (wcześniej dałem tylko fragment który był przydatny (moim skromnym zdaniem))

Date: Wed, 01 May 2013 18:09:02 +0000
 Error: 1064 - 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 '' at line 1
 IP Address: XXX - /index.php?app=videos&module=post&section=submit&do=add_video&cat=
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 mySQL query error: SELECT COUNT(*) as test FROM ipb_ipb_videos WHERE title = 
 .--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
 | File                                                                       | Function                                                                      | Line No.          |
 |----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
 | admin/applications_addon/other/videos/modules_public/post/submit.php       | [public_videos_post_submit].mainForm                                          | 49                |
 '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
 | admin/sources/base/ipsController.php                                       | [public_videos_post_submit].doExecute                                         | 306               |
 

admin4YSh2.png


 

Opublikowano

No ja się wycofuję, bo gdybym sam to robił to był sprawdził kilka możliwości.. Ogólnie to

<php>
error_reporting(0);
var_dump($this->request);
</php>

Sprawdź jak przesyłany jest tytuł.

  • Lubię to 1

Znajdziesz mnie na LinkedIn

Opublikowano

Nie wiem czy o to chodziło, ale po wklejeniu tego kodu i wejściu na stronę z formularzem, na samej górze wyświetliło coś takiego:

NULL array(6) { ["app"]=> string(6) "videos" ["module"]=> string(4) "post" ["section"]=> string(6) "submit" ["do"]=> string(9) "add_video" ["cat"]=> string(0) "" ["request_method"]=> string(3) "get" } 

Po wysłaniu filmu już się nie pokazuje nic

admin4YSh2.png


 

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.