Problème requête SQL - Site perso

Petit nouveau ! | 3 Messages

19 sept. 2007, 13:49

Bonjour,

Je suis en train de coder un site pour mon club de foot. Je suis actuellement en train d'essayer de créer un module admin pour ajouter directement les prochains matchs. J'ai créée ma base de données ...

Mon problème est que je n'arrive pas à inscrire mes valeurs dans ma base de données.

Voici le code :
<? 
if($_GET['add']=="1" && $_GET['edit']==NULL)
{
	if($_GET['nouveau']=="1")
	{
	$nouveau = $_GET['nouveau'];
	}
		if($nouveau=="1")
		{
		@mysql_connect("localhost","xxx","xxx");
		@mysql_select_db("ust_foot");
		$sql = "INSERT INTO matchsseniors (id,date,match,score,heure,lieu,type,joueur1,rdv) VALUES('','$date','$match','$score','$heure','$lieu','$type','$joueur1','$rdv')";
		$req = @mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
		$nouveau==NULL;
		echo "Le match a bien été ajouté.";
		}
		
echo "<form method=\"post\" action=\"?add=1&nouveau=1\">";
echo "Date du match :<div align=\"left\"><input name=date type=text size=50></div><br>";
echo "Match :<div align=\"left\"><textarea name=match cols=50 rows=1></textarea></div><br>";
echo "Score :<div align=\"left\"><textarea name=score cols=50 rows=1></textarea></div><br>";
echo "Heure du match :<div align=\"left\"><textarea name=heure cols=50 rows=1></textarea></div><br>";
echo "Lieu du match :<div align=\"left\"><textarea name=lieu cols=50 rows=1></textarea></div><br>";
echo "Type de match :<div align=\"left\"><textarea name=type cols=50 rows=1></textarea></div><br>";
echo "Heure du rendez-vous :<div align=\"left\"><textarea name=rdv cols=50 rows=1></textarea></div><br>";
echo "<input type=\"submit\" value=\"ENREGISTRER\"> - <input type=\"button\" onclick=\"self.location.href=\'http://ust.foot.free.fr/admin/\'\" value=\"RETOUR\">";
echo "</form><br>";		
}
elseif($_GET['edit']=="1" && $_GET['add']==NULL)
{
$idnews = $_GET['idnews'];
	if($_GET['update']=="1")
	{
	$update = $_GET['update'];
	}
		if($update=="1")
		{
		@mysql_connect("localhost","xxx","xxx");
		@mysql_select_db("ust_foot");
		$sql = "UPDATE matchsseniors SET date='$date',match='$match',score='$score',heure='$heure',lieu='$lieu',type='$type',joueur1='$joueur1',rdv='$rdv' WHERE id='$idnews' ";
		$req = @mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
		$update==NULL;
		}
			@mysql_connect("localhost","xxx","xxx");
			@mysql_select_db("ust_foot");
			$sql = "SELECT * FROM matchsseniors WHERE id='$idnews'";
			$req = @mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
			while($data = @mysql_fetch_array($req))
			    { 
			    $id = $data['id'];
				$date = $data['date'];
				$match = $data['match'];
			    $score = $data['score'];
				$heure = $data['heure'];
				$lieu = $data['lieu'];
			    $type = $data['type'];
				$joueur1 = $data['joueur1'];
				$rdv = $data['rdv'];
				}
			mysql_close();


echo "<form method=\"post\" action=\"?edit=1&update=1&idnews=$idnews\">";
echo "Date du match :<div align=\"left\"><input name=date type=text size=50 value='$date'></div><br>";
echo "Match :<div align=\"left\"><textarea name=match cols=50 rows=1>$match</textarea></div><br>";
echo "Score :<div align=\"left\"><textarea name=score cols=50 rows=1>$score</textarea></div><br>";
echo "Heure du match :<div align=\"left\"><textarea name=heure cols=50 rows=1>$heure</textarea></div><br>";
echo "Lieu du match :<div align=\"left\"><textarea name=lieu cols=50 rows=1>$lieu</textarea></div><br>";
echo "Type de match :<div align=\"left\"><textarea name=type cols=50 rows=1>$type</textarea></div><br>";
echo "Heure du rendez-vous :<div align=\"left\"><textarea name=rdv cols=50 rows=1>$rdv</textarea></div><br>";
echo "<input type=\"submit\" value=\"ENREGISTRER\"> - <input type=\"button\" onclick=\"self.location.href=\'http://ust.foot.free.fr/admin\'\" value=\"RETOUR\">";
echo "</form><br>";
}
?>
En validant ce formulaire pour rentrer mes valeurs dans ma base de donées, voici le message d'erreur que j'ai :

Code : Tout sélectionner

Erreur SQL ! UPDATE matchsseniors SET date='Dimanche 23 septembre 2007',match='Dugny - Thierville',score='',heure='15H00',lieu='Dugny',type='Coupe Lorraine',joueur1='',rdv='' WHERE id='7' 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 'match='Dugny - Thierville',score='',heure='15H00',lieu='Dugny',type='Coupe Lorra' at line 1
Au passage, les valeurs entrées depuis la base de données apparaissent bien dans le formulaire, mais je ne peux pas éditer les ancienne valeurs (ce qui revient donc à inscrire mes valeurs dans la base de données).

Cela fait 3 jours que je recherche mon erreur et en vain. J'espère que vous pourrez m'aider pour trouver mon erreur.

Merci.

Mammouth du PHP | 19672 Messages

19 sept. 2007, 13:54

Tu utilises des noms de colonnes qui sont des mots réservés en SQL : "date", "match" et "type".

Pour pouvoir les utiliser, essaye en les mettant entre ``, ce qui donnerait :

Code : Tout sélectionner

UPDATE matchsseniors SET `date` = 'Dimanche 23 septembre 2007', `match` = 'Dugny - Thierville', score = '', heure = '15H00', lieu = 'Dugny', `type` = 'Coupe Lorraine', joueur1 = '', rdv = '' WHERE id='7'
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 sept. 2007, 13:56

Modération :
Ketq, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 3 Messages

19 sept. 2007, 14:16

Merci Cyrano c'était effectivement ça ;)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 sept. 2007, 14:28

Rappelons que même si l'on peut s'en sortir en utilisant les apostrophes comme l'a indiqué Cyrano,
il est impératif de veiller à ne pas utiliser de mots-clés dans les noms de ses tables et ses champs. :non:

Modération :
Ketq, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

Petit nouveau ! | 3 Messages

19 sept. 2007, 15:17

Voila c'est fait ;)