Exécuter les instructions SQL directement et à partir d'un t

Akim
Invité n'ayant pas de compte PHPfrance

13 août 2010, 23:37

Bonjour,

Je suis bloqué pour exécuter les instructions SQL directement et à partir d'un textarea avec simple bouton submit

SQL:

Code : Tout sélectionner

INSERT DELAYED IGNORE INTO `jos_sections` VALUES(1000, 'Recettes', '', 'recettes', '', 'content', 'left', '', 1, 0, '2010-08-05 01:01:01', 6, 0, 57, '');
Voila mon code:

Code : Tout sélectionner

<form action="" method="post" name="form1"> <table> <tr><td> <p><textarea name="text_all" rows="9" cols="100"></textarea></p> <input type="submit" name="submit"> </td></tr> </table> </form>

Code : Tout sélectionner

<?php if (isset($_POST['submit'])) { $link = mysql_connect("localhost","root",""); $db_selected = mysql_select_db('didine_site', $link); $var_text_all  = $_POST['text_all']; $var_text_all = str_replace('\r\n','<br />',$var_text_all);  $sql = $var_text_all; // on envoie la requête $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   if($req)   {     echo("La modification à été correctement effectuée") ;   }   else   {     echo("La modification à échouée") ;   } mysql_close(); } ?>
Erreur SQL !

Code : Tout sélectionner

INSERT DELAYED IGNORE INTO `jos_content` VALUES(10000,\'Soupe de poisson\', \'Soupe de poisson\', \'\', \'
Pour des raisons personnelles je ne veux pas les importer à partir de mysql

Si vous pouvez m'aider SVP

ViPHP
xTG
ViPHP | 7331 Messages

14 août 2010, 12:08

Je ne commenterai donc rien si c'est personnel, tu dois avoir la bonne raison. ^^

Tournes toi vers la fonction stripslashes() pour enlever les antislashs.

Petit nouveau ! | 8 Messages

14 août 2010, 13:16

Bonjour,

Merci a toi
Mais la j'ai un autre problème quand j'exécuter une seule instruction SQL ca passe, mais je deux ou 10 ou plus Erreur

$sql = stripslashes($var_text_all);
UPDATE jos_content SET title='toto2' WHERE id=10000;
Deux ou plus ERREUR
UPDATE jos_content SET title='toto2' WHERE id=10000;
UPDATE jos_content SET title='toto1' WHERE id=10001;
Erreur SQL !
UPDATE jos_content SET title='toto2' WHERE id=10000; UPDATE jos_content SET title='toto1' WHERE id=10001;
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 'UPDATE jos_content SET title='toto1' WHERE id=10001' at line 2
Y a t-il un moyen de passer ce problème?
Modifié en dernier par Akim le 14 août 2010, 13:23, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

14 août 2010, 13:21

Pour ma part je pencherai pour un explode() sur le point virgule et une boucle sur les requêtes.

Petit nouveau ! | 8 Messages

14 août 2010, 13:49

Salut xTG

Je sais qu'il faut un explode pour le ; et une boucle
Mais je suis un super upper newbie dans PHP/MYSQL

Je vais continuer a me documenté, je vous tien au courant

Merci

Petit nouveau ! | 8 Messages

14 août 2010, 17:27

re

Voila je viens de terminé la version mysqli mais même problème Je peux exécuter qu’une seule instruction, donc retour à la case dépare
<?PHP
?>
<form action="" method="post" name="form1">
<table>
<tr><td>  
<p><input type="text" name="champ_product_sku" value=""></p>
<p><input type="text" name="champ_product_publish" value=""></p>
<p><textarea name="text_all" rows="9" cols="100">
UPDATE jos_content SET title='toto3' WHERE id=10000;
UPDATE jos_content SET title='toto4' WHERE id=10001;
</textarea></p></td></tr>
<input type="submit" name="submit">
</table></form>
<?php
if (isset($_POST['submit'])) {
$dbc=mysqli_connect('localhost','ak22_akim13','*****','ak2######');
$var_text_all=($_POST['text_all']);
$var_text_all = str_replace('\r\n','<br />',$var_text_all); 
$sql = stripslashes($var_text_all);


$query=$var_text_all;

$result = mysqli_query($dbc, $query) or die('Encore une Erreur de merde');
mysqli_close($dbc);

}
?>

ViPHP
AB
ViPHP | 5818 Messages

14 août 2010, 17:39

Ou tu peux faire quelque chose comme ça.
Dans cet exemple c'est le retour à la ligne dans le textarea (non pas automatique mais effectué par la touche entrée) qui sépare deux requêtes.
<?php

if(isset($_POST['Envoyer'],$_POST['text_all']))
	{
		function Verif_magicquotes ($chaine)
		{
			if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
			
			return $chaine;
		} 
		
		$var_text_all  = Verif_magicquotes($_POST['text_all']);
		$tab_requete = explode("\r\n",$var_text_all);
		
                // Enlève les éléments vides
		$tab_requete = array_filter($tab_requete);
		
		//code de connexion au serveur
                $dbc = mysql_connect('localhost','ak22_akim13','*****');
                
               if(!$dbc) exit('la connexion au serveur à échouée');

               // Sélection de ta base de donnée
               $select_base = mysql_select_db($nom_de_ta_base, $dbc);
		
                if ($select_base)
                {
		foreach ($tab_requete as $requete)
			{
				$req = mysql_query($requete) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error());
				
				  if($req)
				  {
					echo("La modification à été correctement effectuée") ;
				  }
				  else
				  {
					echo("La modification à échouée") ;
				  }
			}
		}
                else echo 'la connexion à la base de donnée a échoué';
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>

</head>

<body>
<form id="form1" action="#" method="post">
 
  <textarea name="text_all" cols="65" rows="12"></textarea>
  <input name="Envoyer" type="submit" value="Envoyer" />

</form>

</body>
</html>
Modifié en dernier par AB le 14 août 2010, 18:18, modifié 1 fois.

Petit nouveau ! | 8 Messages

14 août 2010, 17:55

merci de m'avoir AB

rien ne ce passe pour le moment j'ai ce message

Erreur SQL !
UPDATE jos_content SET title='toto2' WHERE id=10000;
No database selected

ViPHP
xTG
ViPHP | 7331 Messages

14 août 2010, 18:02

Essayes avec cela :
$req = mysql_query($requete,$dbc) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error());

Petit nouveau ! | 8 Messages

14 août 2010, 18:11

excuse moi de t'embêté encore mais j'ai une erreur dans la même ligne


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/ak22/public_html/db1.php on line 29
Erreur SQL !
UPDATE jos_content SET title='toto2' WHERE id=10000;

ViPHP
xTG
ViPHP | 7331 Messages

14 août 2010, 18:18

L'erreur se trouve quelques lignes plus haut, la connexion à la base de donnée.
Tu lui as inventé des paramètres à la fonction. ^^
/* N'est pas correct
$dbc = mysql_connect('localhost','ak22_akim13','*****','ak2######');
*/

// Correct :
$dbc = mysql_connect('localhost','ak22_akim13','*****');
mysql_select_db('ak2######',$dbc);

ViPHP
AB
ViPHP | 5818 Messages

14 août 2010, 18:19

J'ai édité le code de mon précédent message, essaies de voir ce que tu peux faire avec.

(en remplaçant $nom_de_ta_base par le nom de ta base ;) )

Petit nouveau ! | 8 Messages

14 août 2010, 18:28

Exact

Alors 1000 merci car je galère depuis 3 jours à lire et a faire des testes
Je ces ou m'adressé maintenant et un lien sera poster sur mon site des l'ouverture pour que les webmasters et les débutant car sur les autres forums voila ce que l’on vous dit quand vous poster une question.

De la lecture :
http://un_lien

Je vous remercie encore
Cordialement,

Petit nouveau ! | 8 Messages

14 août 2010, 18:38

Je ne trouve pas le moyen de placer ce topic resolu

ViPHP
AB
ViPHP | 5818 Messages

14 août 2010, 18:41

Etant donné que tu es inscrit, tu peux toi même cocher résolu en choisissant la réponse qui te convient (il doit y avoir un coche pour accepter une réponse).

Sinon pour être honnête bah des fois on envoies aussi vers un lien qui concerne le pb en question quand c'est bien expliqué . Mais là c'était un petit problème et j'avais un peu de temps. Disons que tu es tombé au bon moment :)