8721 sujets

Développement web côté serveur, CMS

Encore moi!

Donc voilà, j'essaie de monter ma bdd pour le nouveau site. Le truc c'est que je gère 2 site, chacun sur un hébergeur différent, mais qui sont sur le même serveur, ce qui me permet de mettre mes bdd tous au même endroit. Jusque-là pas de problème, j'arrive à en faire l'affichage.

Sauf que!
Bon je crée une série de formulaire pour entrer des éléments dans la BDD, mais pour le deuxième site ça ne fonctionne pas. Ça me renvoie un message "INSERT command denied to user 'ggteleco_79'@'localhost' for table 'photos_produits'". J'utilise pourtant la même config pour pour l'affichage et ça fonctionne...


En début de page j'ai ceci comme j'ai toujours:
include('../config2.php');
$requete = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("3 - ".mysql_error());
$requete = mysql_select_db($dbname) or die("4 - ".mysql_error());
mysql_query("SET NAMES 'utf8'");


Et plus loin mon code de formulaire:
<form action="photos_ajout.php" method="post" name="form" id="form">
		<fieldset>
			<legend class="gradient-gray">Ajouter une nouvelle photos</legend>
			<?php
			if (!empty($_POST['ajouter'])){
				$produits = $_POST['produits'];
                $photo = $_POST['photo'];
                $installation1 = $_POST['installation1'];
                $installation2 = $_POST['installation2'];
                $lien = $_POST['lien'];
						
                $insert = 'INSERT INTO photos_produits(id_produits, lien, photo, installation1, installation2) VALUES("'.$produits.'","'.$lien.'","'.$photo.'","'.$installation1.'","'.$installation2.'")';
                $result = mysql_query($insert) or die("25 - ".mysql_error());
				echo '<ul class="alert">
						<li><span>Produits:</span> '.$produits.'</li>
						<li><span>Photo:</span> <img src="/images/'.$lien.'/'.$photo.'.png width="100px" alt"'.$produits.'" /></li>
						<li><span>Installation 1:</span> <img src="/images/'.$lien.'/'.$installation1.'.png width="100px" alt"'.$produits.'" /></li>
						<li><span>Installation 2:</span> <img src="/images/'.$lien.'/'.$installation2.'.png width="100px" alt"'.$produits.'" /></li>
					</ul>';
			}
			?>
            <p><label for="produits">Produits:&nbsp;</label>
            <select name="produits" id="produits">
            	<option selected="selected">--produits--</option>
                <?php
				$select = mysql_query('SELECT id,produits FROM produits ORDER BY produits') or die("38 - ".mysql_error());
				while ($data = mysql_fetch_array($select)){
					?>
                <option value="<?php echo $data['id'] ?>"><?php echo $data['produits'] ?></option>
                    <?php
				}
				?>
            </select></p>
            <p>
            <label for="photo">Photo:&nbsp;</label>
            <input name="photo" id="photo" type="text" size="25" />
            </p>
            <p>
            <label for="installation1">Installation 1:&nbsp;</label>
            <input name="installation1" id="installation1" type="text" size="25" />
            </p>
            <p>
            <label for="installation2">Installation 2:&nbsp;</label>
            <input name="installation2" id="installation2" type="text" size="25" />
            </p>
            <p>
            <label for="lien">Lien:&nbsp;</label>
            <input name="lien" id="lien" type="text" size="25" />
            </p>
            <p><label></label>
               	<input name="ajouter" type="submit" value="Ajouter" /></p>
		</fieldset>
	</form>

Modifié par juliesunset (17 May 2013 - 16:30)
Modérateur
Je crois qu'il y a un non sens :

juliesunset a écrit :
... Le truc c'est que je gère 2 site, chaCun sur un hébergeur différent, mais qui sont sur le même serveur, ...

juliesunset a écrit :
... 'ggteleco_79'@'localhost' ...
Tu peux détaillé svp?

Ouais, bon ça à l'air fou dit comme ça... donc 2 site sur le même serveur mais sur 2 hébergement différent... J'sais pas trop comment expliquer, les 2 site sont séparé, mais lier par le serveur...
Modérateur
logiquement "ggteleco_79@localhost" n'est pas aproprié sauf erreur de ma part.

Je dirai plutôt un truc comme : user@ip-hebergeur-ou-domain-hebergeur.

Avant le insert, est ce que la connection à la base est bonne ?
Modifié par niuxe (17 May 2013 - 16:40)
niuxe a écrit :
logiquement &quot;ggteleco_79@localhost&quot; n'est pas aproprié sauf erreur de ma part.

Je dirai plutôt un truc comme : user@ip-hebergeur-ou-domain-hebergeur.
ggteleco_79 est le user
localhost, j'ai toujours utilisé ça pour mon autre bdd...
En fais la seule chose qui change d'un site à l'autre c'est le nom de la BDD appelé

niuxe a écrit :
Avant le insert, est ce que la connection à la base est bonne ?
Normalement oui, c'est pour ça que je ne comprend pas pourquoi ça ne fonctionne pas... J'arrive à faire l'affichage sans problème, mais impossible de modifier ou ajouter...
Modérateur
En fait il faudrait savoir si tes accès auX baseS sont corrects.

echo mysql_connect($dbhost,$dbuser,$dbpasswd); //doit retourner un id
echo mysql_select_db($dbname); //doit retourner un id

C'est à vérifier avant ton insert.

Après, peux tu te connecter en SSH et mysql ou sur le phpmyadmin de ton hébergeur et tester ton insert.
niuxe a écrit :
En fait il faudrait savoir si tes accès auX baseS sont corrects.

echo mysql_connect($dbhost,$dbuser,$dbpasswd); //doit retourner un id
echo mysql_select_db($dbname); //doit retourner un id

C'est à vérifier avant ton insert.
J'ai fais une page test et ça me renvoie 2 id, 2 et 1

niuxe a écrit :
Après, peux tu te connecter en SSH et mysql ou sur le phpmyadmin de ton hébergeur et tester ton insert.
J'ai fais un INSERT à même le panneau SQL de phpMyAdmin et ça a fonctionné...
Modérateur
Je viens de lire un peu plus ton code à tête reposée (quoique...).

Essaie de faire un petit debug de ta requete :


$insert = 'INSERT INTO photos_produits(id_produits, lien, photo, installation1, installation2) VALUES("'.$produits.'","'.$lien.'","'.$photo.'","'.$installation1.'","'.$installation2.'")';

new Debug($insert); //ou debug($insert) -> cf. ton autre souci


Donc en faisant un peu plus attention à ton code, mon impression vient de cette ligne. Il me semble qu'en SQL, l'insertion d'un texte dans un champ s'exprime par un guillemet simple et non par un guillemet double. Ce qui donnerait ceci :


$insert = "
	INSERT INTO 
		photos_produits(id_produits, lien, photo, installation1, installation2) 
	VALUES
		('".$produits."','".$lien."','".$photo."','".$installation1."','".$installation2."')";


Tu peux aussi essayer d'écrire des valeurs en dur et envoyer en base sans la soumission du formulaire.
Modifié par niuxe (17 May 2013 - 23:51)
Salut,

Vu l'erreur SQL retournée c'est visiblement un simple problème de permission. L'utilisateur "ggteleco_79" n'a pas la permission pour faire une requête "insert" (et peut-être même d'autres) sur la base de donnée sélectionnée.

Un petit coup d'oeil dans phpMyAdmin pour vérifier les permissions devrait permettre de régler le problème.
Modifié par moust (19 May 2013 - 18:35)
Bonjour Moust,
C'est ce à quoi j'ai pensé... à force de chercher et chercher, j'ai fini par trouvé où changé les paramètre et effectivement certaines case n'étaient pas coché, dont les INSERT. Maintenant ça fonctionne.

Merci pour vos aides à tous!