problema insert

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

problema insert

salut, am codul acesta

Cod: Selectaţi tot

 <?php
       if(isset($_POST['submit']))
       {
        $mesaj = 'Imagine adaugat cu succes</p>';
        $img=$_POST['img'];
        $inserare="Insert into foto_bd (img) values ('$img')";
           mysql_query($inserare) or die("NU se poate adauga!");
           echo  $mesaj;
         }
       else
       {
          print "<form action='adaugare_foto.php' method='post' enctype='multipart/form-data'>";
          print "Imagine:<br>";
          print "<input type='text' name='img' size='30'><br>";
          print "<input type='submit' name='submit' value='Adauga FOTO'></form>";
       }
    ?>
acest cod merge foarte bine, dar problema este urmatoarea, am vaz la cateva site-uri ca atunci cand adauga ceva le apare mesajul si nu se mai poate adauga nimic numai daca completeaza iara si sa adaugare, cum fac si eu asta ca la mine la acest cod imi adauga in bd dar daca ii dau un reflesh imi mai adauga inca o data si de cateori dau reflesh imi adauga, cum fac ca imi opreasca asta ci cand imi adaug sa imi adauge sa imi apara doar mesajul si casutele de adaugare inca o data. multumesc, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
O solutie ar fi urmatoarea:
Dupa ce adauga datele in baza de date (dupa mysql_query($inserare)) sa setezi o sesiune, de ex. $_SESSION['added']='add';
Si inainte de a adauga datele sa verifice si existenta acelei sesiuni, sa adauge doar daca ea nu exista, cam asa:
if(isset($_POST['submit']) && !$_SESSION['added']) { // add ... }

trif Mesaje:500
salut, am facut cum ai zis si tot nu merge. uite cum am facut:

Cod: Selectaţi tot

<?php
       if(isset($_POST['submit']) && !$_SESSION['added']) 
       {
	    $message = 'Imagine adaugat cu succes</p>';
        $img=$_POST['img'];
        $inserare="Insert into foto_bd (img) values ('$img')";
           mysql_query($inserare) or die("NU se poate adauga!");
		   $_SESSION['added']='img';
           echo  $message;
         }
       else
       {
          print "<form action='adaugare_foto.php' method='post' enctype='multipart/form-data'>";
          print "Imagine:<br>";
          print "<input type='text' name='img' size='30'><br>";
          print "<input type='submit' name='submit' value='Adauga FOTO'></form>";
       }
    ?>
nu stiu ce sa ii fac, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Incearca asa (cu "!isset()") la $_SESSION
if(isset($_POST['submit']) && !isset($_SESSION['added']))

- trebuie sa fie session_start() la inceputul fisierului.

trif Mesaje:500
salut, am facut asa cum mi-ai zis, am modificat si am pus asta if(isset($_POST['submit']) && !isset($_SESSION['added'])) si la inceputul paginii session_start() si merge, DAR problema este ca nu mai ma lasa sa introduc nimic numai daca ies de pe site si intru din nou, si mie nu imi trebuie sa se faca asa ci sa ma lase sa introduc eu de cate ori vreau eu dar sa nu imi adauge cand ii dau reflesh, ci atunci cand ii dau reflesh sa imi zica ca trebuie sa introduc ceva date ca sa imi adauge in bd. nu stiu ce sa ii mai fac... :-?? cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Incearca asa, un redirect cu JavaScript catre aceeasi pagina, dupa ce adauga datele si afiseaza o fereastra Alert cu mesajul:

Cod: Selectaţi tot

<?php
if(isset($_POST['submit']))
{
  $message = 'Imagine adaugat cu succes';
  $img=$_POST['img'];
  $inserare="Insert into foto_bd (img) values ('$img')";
   mysql_query($inserare) or die("NU se poate adauga!");
   echo  '<script type="text/javascript">alert("'.$message.'"); window.location = ""; </script>';
 }
else
{
  print "<form action='adaugare_foto.php' method='post' enctype='multipart/form-data'>";
  print "Imagine:<br>";
  print "<input type='text' name='img' size='30'><br>";
  print "<input type='submit' name='submit' value='Adauga FOTO'></form>";
}
?>
- Daca vrei sa schimbi pagina de redirect, adauga adresa paginii la window.location = "adresa_pagina"
Dupa redirect, refreshul nu mai contine datele din formular.
Alta solutie, mai buna, poate stie si posteaza altcineva.

trif Mesaje:500
salut, nu merge cum ai facut ca nu ma mai lasa sa mai inserez nimic dupa o inserare, am gasit alt cod in care face ceea ce vreau eu. uite codul
din index.php

Cod: Selectaţi tot

<?php  
	 //****** seteaza variabila message, care deocamdata e goala. va contine mesajele de la validarea formularului
if(isset($_POST['submit'])) {
	$errors = valideaza_formular();
	if(empty($errors)) {
		//******* pregateste valorile sa fie bagate in BD
		$img = mysql_prep($_POST['img']);		
		//******* baga in BD
		$query = "INSERT INTO foto_bd (img) VALUES ('{$img}')";
		$result_set = mysql_query($query);
		confirm_query($result_set);
			if(mysql_affected_rows() == 1) {
				$message = 'CODUL/LINK-ul pentru FOTO a fost introdus cu succes.</p>';
				$message .='<br/>' . '<a href="adaugare_foto.php" class="button">Urmatorul COD/LINK</a>';
				$disabled = 'disabled = "disabled"';
			}
		}
		else {
			$message = 'CODUL/LINK-ul pentru FOTO nu a putut fi introdus sau mai este o data. <br> Va rugam incercati din nou.</p>';
		}
	}
?>
<form action="adaugare_foto.php" method="post">
        	<table width="1000" border="0"  align="left" cellpadding="5" cellspacing="0">
            	<tr><td> <div align="left">Introdu CODUL/LINK-ul pentru FOTO: </div></td><td width="3"></td><td rowspan=3 width="600">
				<?php
$query="SELECT * FROM foto_bd ORDER BY id DESC LIMIT 1";
$result=mysql_query($query);
$num=mysql_num_rows($result);
if (!isset($_GET['id'])) { 
 }
 echo '<br>';
$i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
	echo '<a href="galerie_foto.php?id='.$rand['id'].' "><left><img src="'.$rand['img'].' width="600" height="450""></left></a> '; 
++$i;
}
?>
				</td></tr>
				<tr><td><textarea name='img' cols='45' rows='9' id='img' ></textarea><br > <br > 
				  <input class="button" type="submit" name="submit" id="submit" tabindex="100"  value="Adauga COD/LINK pentru FOTO" />
				 <br > <br > <?php
		if(!empty($message)) {
			echo '' . $message . '';
		}
	?>
si 2 fisiere cu functii
fun1.php

Cod: Selectaţi tot

<?php
//********************* valideaza campurile din formularul student

function valideaza_formular($editare = false) {
	$errors = array();
	if(! $editare) {
	if(img_existent($_POST['img'])) { $errors[] = 'IMG deja existent. Va rugam verificati';}
	}
	//********* verifica numele sa fie in formatul corect
	if(empty($_POST['img']))  { $errors[] = 'campul img nu este completat corect';}
	return $errors;
}
function img_existent($img) {
	global $connection;
	$query = "SELECT img FROM foto_bd WHERE img = '$img'";
	$result_set = run_query($query);
	return(mysql_num_rows($result_set) >0) ? true: false;
}
?>
func2.php

Cod: Selectaţi tot

<?php

function confirm_query($query) {
	if(!$query) {
		die("Eroare " . mysql_error());
	}
}

function run_query($query) {
	global $connection;
	$result_set = mysql_query($query);
	confirm_query($result_set);
	return $result_set;
}
function mysql_prep($value) {
	$magic_quotes_active = get_magic_quotes_gpc();
	$new_enough_php = function_exists('mysql_real_escape_string');
	if ($new_enough_php) {
		if ($magic_quotes_active){
			$value = stripslashes($value);
		}
		$value = mysql_real_escape_string($value);
	}
	else {
		$value = addslashes($value);
	}
	return $value;
}

?>
. imi merge super bine.
problema este: poti sa te uiti la el si sa il faci mai simplu si fara functiile care trebuie sa le preiau din fisierele func1 si 2. sa fie in aceleasi fisiere. astept raspuns. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Daca functioneaza bine asa cum e, prin modificari de catre altcineva care nu a scris scriptul si nu cunoaste logica lui e destul de posibil sa nu mai functioneze cum vrei. Nu ma bag la asa ceva.

trif Mesaje:500
ok, mersi. daca cineva vrea acest script pt adaugare poate sa se inspire de aici dar sa nu uite ca sa insereze acele fisiere php pt functii. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
In loc de a include fisierele php, cu include() , poti incerca sa adaugi direct in acel loc in fisier acele functii, ar fi cam acelasi lucru. E o idee sa ramana un singur fisier, mai mult nu stiu.

Subiecte similare