Page 1 sur 2

erreur ds mon scripte

Posté : 05 avr. 2006, 16:37
par Invité
j'ai pb avec une req et je sait pas sa vien d'ou? help me plz

  <? 
  for($i=1;$i<=$QTCOLC;++$i)
  	if (
 //je test si un chemps  est vide pour fair une update //		
			(${"NUMERO_INVENTAIRE".$i}!="") or
			(${"DATE_DE_LIVRAISON".$i}!="") or
			(${"SERVICE_DE_MAINT".$i}!="") or
			(${"UF_LOCALISATION".$i}!="") or
			(${"Site_E_ou_V".$i}!="") or
			(${"BATIMENT".$i}!="") or
			(${"ETAGE".$i}!="") or
			(${"PIECE".$i}!="") or 
			(${"LIBELE_LIBRE".$i}!="") )
{
$miseajour ="update INVENTAIRE set  
 NUMERO_INVENTAIRE = '${"NUMERO_INVENTAIRE".$i}', 
  DATE_LIVRAISON = '${"DATE_DE_LIVRAISON".$i}',
  SERVICE_MAINTENANCE='${"SERVICE_DE_MAINT".$i}', 
  UF_LOCALISATION = '${"UF_LOCALISATION".$i}', 
  SITE= '${"Site_E_ou_V".$i}',
  BATIMENT='${"BATIMENT".$i}', 
  ETAGE='${"ETAGE".$i}', 
  PIECE='${"PIECE".$i}', 
  COMMENTAIRE= '${"LIBELE_LIBRE".$i}' 
 where 
 NUMERO_COMMANDE='$nucoco' and
 NUMERO_LIGNECOMMANDE='$nulglc' and
 NUMERO_MATERIEL='$i'";
$result = ora_parse($cursor,$miseajour);
$result = ora_exec ($cursor);
ora_commit($ora_conn); 	
}
else  {
print("<br>"); 
print("$QTCOLC"); 
 $sql="INSERT INTO INVENTAIRE 
 (NUMERO_COMMANDE,
  NUMERO_LIGNECOMMANDE, 
  NUMERO_MATERIEL, 
  NUMERO_INVENTAIRE, 
  DATE_LIVRAISON, 
  SERVICE_MAINTENANCE, 
  UF_LOCALISATION, 
  SITE,
  BATIMENT, 
  ETAGE, 
  PIECE, 
  COMMENTAIRE) 
 VALUES (
 '$nucoco',
 '$nulglc',
 '${"NUMERO_MATERIEL".$i}',
 '${"NUMERO_INVENTAIRE".$i}',
 '${"DATE_DE_LIVRAISON".$i}',
 '${"SERVICE_DE_MAINT".$i}',
 '${"UF_LOCALISATION".$i}',
 '${"Site_E_ou_V".$i}', 
 '${"BATIMENT".$i}',
 '${"ETAGE".$i}',
 '${"PIECE".$i}',
 '${"LIBELE_LIBRE".$i}')";
	$result = ora_parse($cursor, $sql);
	$result = ora_exec ($cursor);
ora_commit($ora_conn); 	
	
	}

Posté : 05 avr. 2006, 16:46
par jpaul
C'est quoi le problème ?
INSERT ?
UPDATE ?
Les 2 ?
Il y a une erreur ?

On est pas devins tu sais ?

Posté : 05 avr. 2006, 16:58
par Invité
les 2 ni l'insert ni l'update marche

Posté : 05 avr. 2006, 17:01
par jpaul
Je pense que le problème c'est que même si tous les champs sont vides tu fais un update...
Remplace les or par des and et inverse update et insert...

Hum j'ai peut être répondu un peu vite, je ne comprends pas ton algo...

Posté : 05 avr. 2006, 17:31
par Invité
sa marche pas :( :(

Posté : 05 avr. 2006, 17:39
par Invité
voila l'erreur que j'ai
Warning: Ora_Exec failed (ORA-01858: a non-numeric character was found where a numeric was expected -- while processing OCI function OEXEC/OEXN) in c:\program files\easyphp1-8\www\invent.php on line 179
les line178 et179:
$result = ora_parse($cursor,$miseajour);
$result = ora_exec ($cursor);

Posté : 05 avr. 2006, 17:59
par Invité
peux être le OR qui fonction pas quelqu’un connaît l'équivalant pour php

Posté : 06 avr. 2006, 15:16
par Invité
:( :( :( :( :( :( :roll: :roll: :roll: :roll: :( :( :( :(
help me plz

Posté : 06 avr. 2006, 15:29
par zeus
Est-ce que tu as essayé d'afficher les requetes générées ?

Posté : 06 avr. 2006, 15:31
par Invité
oui et voila l'erreur que j'ai
Warning: Ora_Exec failed (ORA-01858: a non-numeric character was found where a numeric was expected -- while processing OCI function OEXEC/OEXN) in c:\program files\easyphp1-8\www\invent.php on line 179

Posté : 06 avr. 2006, 15:41
par Ryle
Et est ce que tu as essayé de corriger en fonction du message d'erreur ? :)
a non-numeric character was found where a numeric was expected
Un caractère non numéric a été trouvé alors qu'un caractère numérique était attendu...

Vu que tu as collé des apostrophes autour de toutes tes valeurs, ils seront tous considérés comme des chaines de caractères... du coup si en base, c'est un nombre qui est entendu, ça plante... Aller comme ça a vue de nez tous tes champs NUMERO_ quelque chose sont en cause ;)

MySql tolère les apostrophes sur les numériques et gère la conversion lorsque l'on se trompe, mais à ma connaissance, c'est bien seul qui le fasse. Et c'est de toute façon une très mauvaise habitude à perdre d'urgence :)

Posté : 06 avr. 2006, 15:45
par Invité
non par ce que tout mes champ sont de type varchar alor c pas possible :(

Posté : 06 avr. 2006, 15:46
par zeus
Je t'ai pas demandé si tu avais exécuté les requetes mais si tu les avait affichées

Je veux juste voir ce qui est envoyé à Oracle

Posté : 06 avr. 2006, 15:48
par Invité
rien !!!!!!!!!!!!!
rien ne passe au niveau de la basse de donneé oracle

Posté : 06 avr. 2006, 15:52
par Ryle
rien !!!!!!!!!!!!!
rien ne passe au niveau de la basse de donneé oracle
Et cela t'empêche d'afficher les requêtes et de les poster ici ?
echo $miseajour;
echo $sql;
non par ce que tout mes champ sont de type varchar alor c pas possible :(
no comment...