Page 1 sur 2
Exécuter les instructions SQL directement et à partir d'un t
Posté : 13 août 2010, 23:37
par Akim
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
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 12:08
par xTG
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.
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 13:16
par Akim
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?
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 13:21
par xTG
Pour ma part je pencherai pour un explode() sur le point virgule et une boucle sur les requêtes.
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 13:49
par Akim
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
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 17:27
par Akim
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);
}
?>
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 17:39
par AB
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>
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 17:55
par Akim
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
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:02
par xTG
Essayes avec cela :
$req = mysql_query($requete,$dbc) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error());
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:11
par Akim
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;
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:18
par xTG
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);
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:19
par AB
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

)
[RESO] Exécuter les instructions SQL directement et à partir
Posté : 14 août 2010, 18:28
par Akim
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,
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:38
par Akim
Je ne trouve pas le moyen de placer ce topic resolu
Re: Exécuter les instructions SQL directement et à partir d'un t
Posté : 14 août 2010, 18:41
par AB
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
