Page 1 sur 1

problème mysql_fetch_array

Posté : 20 mars 2007, 12:10
par lilemy
bonjour,
j'ai un problème avec un morceau de mon code PHP
celui-ci me met une erreur au deuxième mysql_fetch_array et je ne comprend pas pourquoi
En gros se que je veux faire avec ce code est d'echanger le contenu de deux enregistrement. id_test recoi les infos de id_test2 et vice versa.
merci d'avance

Code : Tout sélectionner

if (isset($_GET['monter_test'])) { $retour = mysql_query('SELECT * FROM test WHERE id_test=' . $_GET['monter_test']); $donnees = mysql_fetch_array($retour); $photo_test = $donnees['photo_test']; $description_test = $donnees['description_test']; $id_test_test = $donnees['id_test']; $retour2 = mysql_query('SELECT * FROM test WHERE id_test<' . $_GET['monter_test'] . 'AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<' .$_GET['monter_test']); $donnees2 = mysql_fetch_array($retour2); $photo_test2 = $donnees2['photo_test']; $description_test2 = $donnees2['description_test']; $id_test_test2 = $donnees2['id_test']; mysql_query ("UPDATE test SET photo_test='" . $photo_test2 . "', description_test='" . $description_test2 . "' WHERE id_test=" . $_GET['monter_test']); mysql_query ("UPDATE test SET photo_test='" . $photo_test . "', description_test='" . $description_test . "' WHERE id_test= '". $id_test_test2 . "'"); }

Posté : 20 mars 2007, 12:15
par DocType

Code : Tout sélectionner

$retour2 = mysql_query('SELECT * FROM test WHERE id_test<' . $_GET['monter_test'] . 'AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<' .$_GET['monter_test']);
Essaie plutôt :

Code : Tout sélectionner

$retour2 = mysql_query("SELECT * FROM test WHERE id_test<'".$_GET['monter_test']."' AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<'".$_GET['monter_test'])."'";

Posté : 20 mars 2007, 12:27
par Ryle
Le problème EST lié à un soucis d'espace entre la valeur et le AND et à l'absence de parenthèse fermante dans la sous requête. En revanche, il ne faut utiliser d'apostrophes en SQL qu'autour des dates et des chaines de caractère. Pour un nombre (tel un id) il ne faut surtout pas en mettre, même si MySQL les tolères :)

$sql = "SELECT ... FROM test 
  WHERE id_test<" . $_GET['monter_test'] . " 
  AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<" .$_GET['monter_test'].")";

$retour2 = mysql_query($sql);

lilemy

Posté : 20 mars 2007, 12:46
par lilemy
j'ai mis ton moreau de code
et j'ai toujours la même erreur

Posté : 20 mars 2007, 13:02
par Ryle
Affiche la requête générée et teste la sous MySQL ou phpMyAdmin :)

ou alors, utilise la fonction mysql_error() pour voir s'il n'y a pas un message d'erreur :
$retour2 = mysql_query($sql) or die(mysql_error());

As-tu remplacé mes '...' par les noms de tes champs ? ;)

lil

Posté : 20 mars 2007, 13:04
par lilemy
oui g remplacer